์ด๋ฒ ํฌ์คํธ์์๋ ์๊ณ ๋ฆฌ์ฆ ์ค์ AOV/AOE ๋คํธ์ํฌ์ ๋ํด ๋ค๋ฃจ๊ฒ ๋ค. AOV ๋คํธ์ํฌ๋? : AOV๋ Activity On Vertex์ ์ฝ์์ด๋ค. ์ฆ, ์ ์ ์ด Activity, ์์ ์ ๋ํ๋ด๊ณ , ๊ฐ์ ์ด ์์ ๊ฐ์ ์ฐ์ ์์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๋ฐฉํฅ ๊ทธ๋ํ์ด๋ค. AOV ๋์ ๊ณผ์ ์คํ [0], ์์ ์์ [] ์คํ [3, 2, 1], ์์ ์์ [0] (1, 2, 3๋ฒ ๋ ธ๋์ ์ ํ ๋ ธ๋ 0์ด ์ฌ๋ผ์ก์ผ๋ฏ๋ก ์คํ์ ์ ์ฅ) ์คํ [2, 1], ์์ ์์ [0, 3] ์คํ [5, 1], ์์ ์์ [0, 3, 2] ์คํ [1], ์์ ์์ [0, 3, 2, 5] ์คํ [4], ์์ ์์ [0, 3, 2, 5, 1] ์คํ [], ์์ ์์ [0, 3, 2, 5, 1, 4] AOE ๋คํธ์ํฌ๋? : AOE๋ Activi..
์ด๋ฒ ํฌ์คํธ์์๋ ๊ทธ๋ํ ์ค์ ์ต์๋น์ฉ ์ ์ฅ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ๋ค๋ฃจ๊ฒ ๋ค. ์ต์๋น์ฉ ์ ์ฅ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฝ ์กฐ๊ฑด : ๊ทธ๋ํ ๋ด์ ์กด์ฌํ๋ edge๋ค๋ง ์ฌ์ฉ n - 1๊ฐ์ edge๋ง ์ฌ์ฉ Cycle์ ํ์ฑํ ์ ์๋ edge๋ ์ฌ์ฉ ๋ถ๊ฐ ์ต์๋น์ฉ ์ ์ฅ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ (๋ชจ๋ greedy method ์ฌ์ฉ) : Kruskal Prim Sollin Kruskal ์๊ณ ๋ฆฌ์ฆ์ด๋? ํ ๋ฒ์ ํ๋์ edge์ฉ ์ถ๊ฐํ๋ฉด์ ์ต์๋น์ฉ ํธ๋ฆฌ T๋ฅผ ์์ฑ Edge๋ค์ ๋น์ฉ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ํ, ๊ฐ์ฅ ๋น์ฉ์ด ์ ์ edge๋ถํฐ ์ ํ(greedy) ์ ํ๋ edge๋ ๊ธฐ์กด์ ์ ํ๋ edge๋ค๊ณผ ์ฌ์ดํด์ ํ์ฑํ์ง ์์ ๊ฒฝ์ฐ์๋ง T์ ํฌํจ ๊ทธ๋ํ G๊ฐ ์ฐ๊ฒฐ๋์์ผ๋ฉฐ, n > 0๊ฐ์ vertex๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ, ์ ํํ n - 1๊ฐ์..
์ด๋ฒ ํฌ์คํธ์์๋ ๊น์ด ์ฐ์ ํ์(DFS) ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค. ๊น์ด ์ฐ์ ํ์(DFS)๋? : ๋ฃจํธ ๋ ธ๋(ํน์ ์์์ ๋ ธ๋)๋ถํฐ ์์ํ์ฌ ๋ค์ ๋ถ๊ธฐ(branch)๋ก ๋์ด๊ฐ๊ธฐ ์ ์ ํด๋น ๋ถ๊ธฐ๋ฅผ ์๋ฒฝํ๊ฒ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ฆ, ๋๊ฒ ํ์ํ๊ธฐ ์ ์ ๊น๊ฒ ํ์ํ๋ ๊ฒ์ ๋๋ค. ๊น์ด ์ฐ์ ํ์์ ํน์ง : ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ชจ๋ ํํ์ ํธ๋ฆฌ ์ํ(traversals)๋ ๊น์ด ์ฐ์ ํ์์ ์ข ๋ฅ์ด๋ค. ์ด๋ค ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋์ง๋ฅผ ๋ฐ๋์ ๊ฒ์ฌํ๋ค. ๋ ์ด์ ๋ฐฉ๋ฌธํ ๋ ธ๋๊ฐ ์์ผ๋ฉด ์ด์ ๋ ธ๋๋ก backtracking(๋ค์ ๋์๊ฐ์ ํ์ํ์ง ์์ ์ ์ ์ด ์๋์ง ํ์ธ) ๊น์ด ์ฐ์ ํ์์ ๋์ ๊ณผ์ : V0๋ถํฐ ์์ํด์ V0 ๋ฐฉ๋ฌธ V0๊ณผ ์ธ์ ํ V1 ๋ฐฉ๋ฌธ V1๊ณผ ์ธ์ ํ V3 ๋ฐฉ๋ฌธ V3๊ณผ ์ธ์ ํ V7 ๋ฐฉ๋ฌธ V7๊ณผ..
์ด๋ฒ ํฌ์คํธ์์๋ ๋๋น ์ฐ์ ํ์(BFS) ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค. ๋๋น ์ฐ์ ํ์(BFS)์ด๋? : ๋ฃจํธ ๋ ธ๋(ํน์ ์์์ ๋ ธ๋)๋ถํฐ ์์ํด์ ์ธ์ ํ ๋ ธ๋๋ฅผ ๋จผ์ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ฆ, ๊น๊ฒ ํ์ํ๊ธฐ ์ ์ ๋๊ฒ ํ์ํ๋ ๊ฒ์ ๋๋ค. ๋๋น ์ฐ์ ํ์์ ํน์ง : ์ฌ๊ท์ ์ผ๋ก ๋์ํ์ง ์๋๋ค. ๋ฐฉ๋ฌธํ ๋ ธ๋๋ค์ ์ฐจ๋ก๋๋ก ์ ์ฅํ ํ ๊บผ๋ผ ์ ์๋ ์๋ฃ ๊ตฌ์กฐ์ธ ํ(Queue)๋ฅผ ์ฌ์ฉํ๋ค. ์ด๋ค ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋์ง๋ฅผ ๋ฐ๋์ ๊ฒ์ฌํ๋ค. ๋๋น ์ฐ์ ํ์์ ๋์ ๊ณผ์ : ์ด๊ธฐ ์ํ์ ํ์๋ ์์ ๋ ธ๋๋ง ์ ์ฅ. (Q = [0]) ํ์์ ๋ ธ๋๋ฅผ ๊บผ๋ด์ ๋ฐฉ๋ฌธ ๋ฐ ์ธ์ ๋ ธ๋๋ฅผ ํ์ ์ฝ์ -> V0 ๋ฐฉ๋ฌธ (Q = [1, 2]) ๋ ์ด์ ์ฝ์ ํ ์ธ์ ํ ๋ ธ๋๊ฐ ์๋ค๋ฉด dequeue ์คํ (ํ์ ๋งจ ์์์ ๋ ธ๋๋ฅผ ๊บผ๋ธ๋ค) ..
์ด๋ฒ ํฌ์คํธ์์๋ ๊ทธ๋ํ์ ํํ๋ฒ์ธ ์ธ์ ํ๋ ฌ๊ณผ ์ธ์ ๋ฆฌ์คํธ์ ๋ํด ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ธ์ ํ๋ ฌ(Adjacency Matrix)๋? : ๊ทธ๋ํ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ํ๋ด๋ ๋ฐฉ์์ ๋๋ค. A[u][v]๋ผ๋ ์ธ์ ํ๋ ฌ์ด ์๋ค๊ณ ๊ฐ์ ํ๋ฉด, ๋ ธ๋ u์์ ๋ ธ๋ v๋ก ๊ฐ๋ ๊ฐ์ ์ด ์๋ค๋ฉด 1, ์๋ค๋ฉด 0์ผ๋ก ํํํ ์ ์์ต๋๋ค. ์ธ์ ํ๋ ฌ์ ์์ : ๋ฌด๋ฐฉํฅ์ฑ ๊ทธ๋ํ: A[][]๋ ๋์นญ ํ๋ ฌ (์ด๋, A[n(n-1)/2]๋ก ๊ตฌํ ๊ฐ๋ฅ) ๋ฐฉํฅ์ฑ ๊ทธ๋ํ : A[][]๋ ๋น๋์นญ ํ๋ ฌ ์ฅ์ : ๊ตฌํ์ด ์ฝ๋ค ๋จ์ : ๋ณต์ก๋ = O(n์ 2์น) ์ธ์ ๋ฆฌ์คํธ(Adjacency List)๋? : n๊ฐ์ ์ ์ (vertex)์ ๊ฐ๊ฐ์ ๋ํด ์ธ์ ํ ์ ์ ๋ค์ ๋ฆฌ์คํธ๋ก ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ฆ, ๊ทธ๋ํ G์ ๊ฐ ์ ์ ์ ๋ํด ํ ๊ฐ์ ์ฐ..
์ด๋ฒ ํฌ์คํธ์์๋ ์๋ฃ๊ตฌ์กฐ ์์ ๊ทธ๋ํ(Graph)์ ๋ํด ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ทธ๋ํ๋? : ๊ทธ๋ํ๋ 2๊ฐ์ ์งํฉ V์ E๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๋ V๋ ๊ณต์งํฉ์ด ์๋ ์ ์ (vertex)์ ์ ํ ์งํฉ์ด๊ณ E๋ ๊ฐ์ (edge)๋ค์ ์งํฉ์ ๋๋ค. ๊ทธ๋ํ์ ํน์ง : 2๊ฐ์ด์์ ๊ฒฝ๋ก๊ฐ ๊ฐ๋ฅํ๋ค. ๋ฃจํธ ๋ ธ๋๋ผ๋ ๊ฐ๋ ์ด ์๋ค. ๋ถ๋ชจ-์์ ๊ด๊ณ๋ผ๋ ๊ฐ๋ ์ด ์๋ค. ๊ทธ๋ํ์ ์ฌ์ฉ๋๋ ์ฉ์ด : ์ ์ (vertex) : ์์น๋ผ๋ ๊ฐ๋ ๊ฐ์ (edge) : ์์น ๊ฐ์ ๊ด๊ณ, ์ฆ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ์ ์์ ๊ทธ๋ํ(Complete graph) : ๊ฐ์ ์ ์๊ฐ ์ต๋์ธ ๊ทธ๋ํ ์ธ์ (adjacent) : ๊ฐ์ ์ ์ํด ์ง์ ์ฐ๊ฒฐ๋๋ค ๋ถ๋ถ ๊ทธ๋ํ(Subgraph) : V(G')⊆V(G)์ด๊ณ E(G')⊆E(G)์ผ ๊ฒฝ์ฐ, G'๋ G์ ๋ถ๋ถ ๊ทธ๋ํ ๊ฒฝ๋ก..
์ด๋ฒ ํฌ์คํธ์์๋ ์๋ฃ๊ตฌ์กฐ์ ํ(Heap)์ ๋ํด ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค. ํ์ด๋? : ์์ ์ด์ง ํธ๋ฆฌ ๊ตฌ์กฐ์ ์ผ์ข ์ผ๋ก ์ฐ์ ์์ ํ๋ฅผ ์ํด ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ํ์ ์ข ๋ฅ : ์ต๋ ํ (Max Heap) : ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์์ ์ด์ง ํธ๋ฆฌ (๋ถ๋ชจ key ≥ ์์ key) ์ต์ ํ (Min Heap) : ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ด์ง ํธ๋ฆฌ (๋ถ๋ชจ key ≤ ์์ key) ์ต๋ ํ(Max Heap)์ ์ถ๊ฐ ๋ฐ ์ญ์ : ์ต๋ ํ ์ถ๊ฐ ์์ค ์ฝ๋ : void push_max_heap(element item, int *n) { int i; if (HEAP_FULL(*n)) { fprintf(stderr, "The heap is full..
์ด๋ฒ ํฌ์คํธ์์๋ ์ด์งํธ๋ฆฌ์ ์ํ์ ๋ํด ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ด์ง ํธ๋ฆฌ ์ํ๋? : ํธ๋ฆฌ์ ์๋ ๋ชจ๋ ๋ ธ๋๋ฅผ ํ ๋ฒ์ฉ๋ง ๋ฐฉ๋ฌธํ๋ ๊ฒ์ ๋๋ค. ๋ํ ํ ๋ ธ๋๊ฐ ๋ฐฉ๋ฌธ๋ ๋ ์ด๋ค ์ฐ์ฐ์ด ๊ทธ ๋ ธ๋์ ๋ํด ์ํ๋ฉ๋๋ค. ๋ง์ผ L, V, R์ด ํ ๋ ธ๋์์ ๊ฐ๊ฐ ์ผ์ชฝ์ผ๋ก ์ด๋, ๋ ธ๋ ๋ฐฉ๋ฌธ, ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ ๊ฒ์ ๋ํ๋ธ๋ค๋ฉด LVR, LRV, VLR, VRL, RVL, RLV ๋ฑ 6๊ฐ์ ์ํ ๋ฐฉ๋ฒ์ด ์์ ์๊ฐ ์์ต๋๋ค. ์ด์ง ํธ๋ฆฌ ์ํ์ ์ข ๋ฅ : (1) Inorder (์ค์ ์ํ, LVR) : ๋ ์ด์ ์งํํ ์ ์์ ๋๊น์ง ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ์ด๋ํ์ฌ ๋ด๋ ค๊ฐ ๋ค์, ๊ทธ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ณ ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ก ์ด๋ํ ๋ค ๊ณ์ํฉ๋๋ค. ์ด๋ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ ์ ์์ ๋์๋ ํ ๋ ธ๋ ๋ค๋ก ๋๋์๊ฐ๋๋ค. ์์ค ์ฝ๋ : void in..
์ด๋ฒ ํฌ์คํธ์์๋ ์ด์ง ํธ๋ฆฌ์ ๋ํด ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค. ํธ๋ฆฌ๋? : ํธ๋ฆฌ๋ 1๊ฐ ์ด์์ ๋ ธ๋๋ก ์ด๋ฃจ์ด์ง ์ ํ ์งํฉ์ผ๋ก์ ํ๋ ์คํ๊ณผ ๊ฐ์ ์ ํ ๊ตฌ์กฐ๊ฐ ์๋ ๋น์ ํ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ํธ๋ฆฌ์ ํน์ง : ํ๋์ ๋ฃจํธ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ค. ๋ชจ๋ ๋ ธ๋๋ 0๊ฐ ์ด์์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ค. ๋ ธ๋์ ์๋ก๊ฐ์ ์ฐ๊ฒฐํ๋ ๊ฐ์ (Edge)์ด ์กด์ฌํ๋ค. ํธ๋ฆฌ์ ๊ดํ ์ฉ์ด ์ ๋ฆฌ : ๋ ธ๋์ ์ฐจ์(degree) : ์์ ๋ ธ๋์ ๊ฐ์ (A : 3) ํธ๋ฆฌ์ ์ฐจ์(degree of tree) : ํธ๋ฆฌ์ ์ต๋ ์ฐจ์, ์ฆ ์ ์ผ ๋ง์ ๊ฐ์ง์ (3) ๋จ๋ง ๋ ธ๋(leaf of terminal node) : ์์์ด ์๋ ๋ ธ๋ (K, L, F, G, M, I, J) Parent : ๋ถ๋ชจ ๋ ธ๋ (E : B, B : A) Children : ์์ ๋ ธ๋ (B :..