โ 1. ํธ๋ฆฌ
- ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๋น์ ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ( 1:N ๊ด๊ณ์ด๋ฉฐ, ์ผ์ง์ ์ด ์๋ )
- ๋ ธ๋(node)๋ผ๊ณ ๋ถ๋ฆฌ๋ ๋ถ๋ถ๊ณผ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ง(branch, edge)๋ก ๊ตฌ๋ถ์ด ๋๋ค.
- ๋ ธ๋ ์ฌ์ด์๋ ๊ณ์ธต์ ์ธ ๊ด๊ณ์ฑ์ ๊ฐ๊ณ ์๊ณ ์ด๊ฒ์ ๋ ๋ฒจ0, 1, 2, 3 ๋ฑ์ด ๋ ์ ์์.
(1) ํธ๋ฆฌ ์ฉ์ด ์ ์
- ๋ ธ๋(node): ์ ๋ณด ํญ๋ชฉ์ ์๋ฏธํ๋ฉฐ A, B, C, D ... ๋ฑ์ด ๋ชจ๋ ๋ ธ๋๊ฐ ๋ ์ ์์.
- ๋ฃจํธ(root): ๋น ํธ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋งจ ๊ผญ๋๊ธฐ์ ์๋ ํ๋์ ๋ ธ๋๋ฅผ ์๋ฏธํจ. ( A ๋ถ๋ถ์ ํด๋นํจ )
- ์ฐจ์(degree): ๊ฐ ๋ ธ๋์ ์๋ ๊ฐ์ง์ ์๋ฅผ ์๋ฏธํจ. ( ๊ทธ ๋ ธ๋๊ฐ ๊ฐ์ง๊ณ ์๋ ์์ ๋ ธ๋(ํ์ ๋ ธ๋)์ ๊ฐ์๋ก ๋ด์ผ ํจ. )
(2) ์ ๋ ธ๋ (๋จ๋ง ๋ ธ๋) & ๋ด๋ถ ๋ ธ๋ (๋น๋จ๋ง ๋ ธ๋)
[ ์ ๋ ธ๋ ( ๋จ๋ง ๋ ธ๋ ) ]
- ๋จ๋ง ๋ ธ๋๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ, ๋ ธ๋์ ์ฐจ์๊ฐ 0์ธ ๋ ธ๋ ์ฆ, ์์์ด ์๋ ๋ ธ๋๋ฅผ ์๋ฏธํ๋ค. ( 3๋ ๋ฒจ์ ํด๋น ํ ๋ฏ )
[ ๋ด๋ถ ๋ ธ๋ ( ๋น๋จ๋ง ๋ ธ๋ ) ]
- ๋น๋จ๋ง ๋ ธ๋๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ, ๋ฃจํธ ๋ ธ๋์ ๋จ๋ง ๋ ธ๋๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ ธ๋๋ฅผ ์๋ฏธํ๋ค. ( ๋ ๋ฒจ 1๊ณผ 2๊ฐ ํด๋น ํ ๋ฏ )
(3) ์กฐ์ ๋ ธ๋ & ์์ ๋ ธ๋
[ ์กฐ์ ๋ ธ๋ ]
- ๋ฃจํธ ๋ ธ๋๋ก๋ถํฐ ์ด๋ค ๋ ธ๋ X๊น์ง์ ๊ฒฝ๋ก(๊ฐ์ง๋ค์ ๋ชจ์) ์์ ์กด์ฌํ๋ ๋ชจ๋ ๋ ธ๋๋ฅผ X์ ์กฐ์ ๋ ธ๋๋ผ๊ณ ํจ.
- ์ฝ๊ฒ๋งํด, ํน์ ๋ ธ๋์ ๋ฃจํธ ๋ ธ๋ ๊น์ง ์ด์ด์ง๋ ๋ชจ๋ ๋ ธ๋๋ฅผ ์กฐ์ ๋ ธ๋๋ผ๊ณ ๋ถ๋ฆ.
[ ์์ ๋ ธ๋ ]
- ์ด๋ค ๋ ธ๋ X์์ ๋จ๋ง ๋ ธ๋๊น์ง์ ๊ฒฝ๋ก ์์ ์กด์ฌํ๋ ๋ชจ๋ ๋ ธ๋๋ฅผ ์์ ๋ ธ๋๋ผ๊ณ ํจ.
- ์ฝ๊ฒ๋งํด, ํน์ ๋ ธ๋์ ์๋์ ์ฐ๊ฒฐ ๋ ๋ชจ๋ ๋ ธ๋๋ฅผ ์์ ๋ ธ๋๋ก ๋ณผ ์ ์์. ์ฆ, ๋ฃจํธ์ ์์์ด๋ผ ํ๋ฉด ์ ๋ถ๋ค์.
(4) ๋ ๋ฒจ & ๊น์ด ๊ฐ๋
- ๋ฃจํธ ๋ ธ๋๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ(๊ฐ์ง์ ์)๋ฅผ ์๋ฏธํ๋ค. 0๋ ๋ฒจ ~ N๋ ๋ฒจ ๊น์ง ์กด์ฌ ํ ์ ์์.
- ํธ๋ฆฌ์ ๊น์ด ๋๋ ๋์ด๋ก๋ ํํ์ ํ ์ ์์ผ๋ฉฐ, ๋ฃจํธ ๋ ธ๋๋ก๋ถํฐ ๊ฐ์ฅ ๊ธด ๊ฒฝ๋ก์ ์๋ ๋จ๋ง ๋ ธ๋์ ๋ ๋ฒจ์ 1์ ๊ฐ์ ๋ํ ๊ฒ์ด ๋ ์ ์์. ์ฆ, ๋ ๋ฒจ์ด 3๋ ๋ฒจ์ธ ๊ฒฝ์ฐ ๊น์ด 4๊ฐ ๋ ์ ์์.
(5) ์๋ธ ํธ๋ฆฌ & ์ฒ
[ ์๋ธ ํธ๋ฆฌ (subtree) ]
- ํน์ ๋ ธ๋๋ฅผ ๋ฃจํธ ๋ ธ๋๋ก ํ๊ณ , ๊ทธ ์๋์ ์๋ ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ์ ํธ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
- ์ด๋ฏธ์ง๋ฅผ ์์๋ก ๋ค๋ฉด, ํ๋์ ๋ถ๋ถ์ ์๋ธ ํธ๋ฆฌ๋ ๋นจ๊ฐ์ ๋ถ๋ถ์ด ๋ ์ ์์.
- ์ฝ๊ฒ๋งํด, ํน์ ๋ ธ๋์ ์๋ธ ํธ๋ฆฌ๋ ์์๋ค์ ๊ฐฏ์๊ฐ ์๋ ์์์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์๋ธ ํธ๋ฆฌ๋ก ๋ณด๋ ๊ฒ์.
[ ์ฒ (forest) ]
- n๊ฐ์ ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ฐ์ง ํธ๋ฆฌ์์ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ ๊ฑฐํด์ ์ป์ ์ ์๋ ๋ถ๋ฆฌ๋ ์๋ธ ํธ๋ฆฌ์ ์งํฉ์ ์๋ฏธํจ.
- ํต์ฌ์ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ๋ค๊ณ ๊ฐ์ ์ ํด์ผํ๊ณ , ์ ๊ฑฐ๊ฐ ๋ ์ํ์์ ๋ถ๋ฆฌ๋ ์๋ธ ํธ๋ฆฌ์ ์งํฉ๋ค์ ์๋ฏธํจ.
- ์ฝ๊ฒ๋งํด, ๋ถ๋ฆฌ๋ ์๋ธ ํธ๋ฆฌ์ ์งํฉ ํํ์ ๊ตฌ์กฐ๋ก ๋ณด๋ฉด๋จ. ( ์๋ธ ํธ๋ฆฌ๋ค์ ๋ฌถ์ด๋์ ๋ ผ๋ฆฌ์ ์ธ ๊ฐ๋ ? ์ด๋ฐ ๋๋์ )
โ 2. ์ด์ง ํธ๋ฆฌ (Binary Tree)
- ํธ๋ฆฌ ์ค์์ ์ฐจ์๊ฐ 2์ธ ํธ๋ฆฌ๋ฅผ ์๋ฏธํ๋ฉฐ, ์ด์ง ํธ๋ฆฌ์ ์กฐ๊ฑด์ ๋ชจ๋ ๋ ธ๋์ ์ฐจ์๋ ์ต๋ 2๋ฅผ ๋์ง ์์์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
- ์ฆ, ๋ชจ๋ ๋ ธ๋๋ ์ต๋ 2๊ฐ์ ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ฐ์ง ์ ์๋ค๋ ์๋ฏธ๋ก๋ ๋ณผ ์ ์์.
- ๊ฐ ์๋ธ ํธ๋ฆฌ๋ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ก ๊ตฌ๋ถ์ด ๋จ.
- ์ด์ง ํธ๋ฆฌ์์ ์ผ์ชฝ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ๋ ธ๋๋ ์์์ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด๊ฒ์ ์ด์ฉํด ํ์ ํ ๋ ์ฌ์ฉ์ด ๋๊ธฐ๋ ํจ.
- ์ฝ๊ฒ๋งํด, ์ด๋ฏธ์ง์ ๋ ธ๋์ ์ํ๋ฒณ์ ์์๋ฅผ ๋ณด๊ณ ์๋ฏธ๋ฅผ ๋ถ์ฌํด A -> B -> C ์ด๋ฐ ๊ด๊ณ๋ก ๋ณผ ์๋ ์๋ค๋ ์๋ฏธ์.
- ์ด์ง ํธ๋ฆฌ์ ๊ฐ ์๋ธ ํธ๋ฆฌ๋ ๋ค์ ์ด์ง ํธ๋ฆฌ๊ฐ ๋จ
(1) ์ด์ง ํธ๋ฆฌ์ ๋์ด
[ ์ต๋ ๋์ด ]
- N๊ฐ์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ด์ง ํธ๋ฆฌ์ ๋์ด๋ฅผ ๊ณ์ฐ์ผ๋ก ๊ตฌํ ์ ์์
- ์ต๋ ๋์ด: N์ผ๋ก ๋ ธ๋์ ๊ฐ์์ ๊ฐ์
- ์ฝ๊ฒ๋งํด, ๊ฐ์ ๊ฐฏ์์ ๋ ธ๋๋ฅผ ๊ฐ๋ ์ด์งํธ๋ฆฌ๊ฐ ์ต๋ ๊ฐฏ์๊ฐ ๋๋๋ก ๋ง๋ค๋ ค๋ฉด ์ ๊ทธ๋ฆผ์ฒ๋ผ ๊ฒฝ์ฌ์ง๊ฒ ๋ง๋ค์ด์ผ ํจ.
- ์ฆ, ๊ฒฝ์ฌ์ง๊ฒ ๋ง๋ค๋ฉด ์ต๋ ๋์ด๊ฐ ํญ์ ๋ ธ๋์ ๊ฐฏ์์ ๊ฐ๊ฒ ๋๋ค๋ ์๋ฏธ์. ์ฆ, ์ด ๊ตฌ์กฐ๊ฐ ์ต๋ ๋์ด๊ฐ ๋๋ค๋ ์๋ฏธ์.
[ ์ต์ ๋์ด ]
- ๋ชจ๋ ๋ด๋ถ ๋ ธ๋๊ฐ ์ต๋ 2๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ๋ ๊ฒฝ์ฐ๋ก์ [log2N] + 1 ์ด ๋์ด๊ฐ ๋จ.
- 2๊ฐ์ ๋ ธ๋๋ฅผ ๊ฐ๋ ๊ตฌ์กฐ๋ฅผ ์ต๋ํ ๊ฝ ์ฑ์ ์ ๋ ์ต์ ๋์ด๊ฐ ๋ ์ ์์.
(2) ์ด์ง ํธ๋ฆฌ ์ํ ์ฐ์ฐ
- ๊ฒฐ๊ตญ ์ด์งํธ๋ฆฌ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ์.
- ์ฆ, ์๋ฃ๊ตฌ์กฐ ์ด๊ธฐ ๋๋ฌธ์ ํธ๋ฆฌ์์ ์๋ฃ๋ฅผ ์ ์ฅํ๊ณ ๋ ํ ์ด๋ป๊ฒ ๊ฒ์ ํ ๊ฒ ์ธ์ง์ ๋ํ ์ฐ์ฐ์ด ํ์ํจ.
- ์ฆ, ์ผ์ ํ ์์์ ๋ฐ๋ผ ํธ๋ฆฌ์ ์๋ ๊ฐ ๋ ธ๋๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๋๋ก ๋์์ฃผ๋ ์ํ ์ฐ์ฐ์ ํจ.
[ DLR ( ์ ์ ์ํ: preorder) ]
- DLR ( Data - Left - Right ) ์ ์๋ฏธํ๋ฉฐ, ์ผ์ชฝ ์ดํ ์ค๋ฅธ์ชฝ์ ์ฒ๋ฆฌํ๋ค๋ ์๋ฏธ๋ฅผ ๊ฐ์ง.
- ๋ฃจํธ ๋ ธ๋ ๋ฐฉ๋ฌธ -> ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ ๋ฐฉ๋ฌธ -> ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ ๋ฐฉ๋ฌธ ํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ ๋ฐฉ์์ด๋ค.
- ๋ฃจํธ๋ฅผ ๋จผ์ ๊ฐ์ A ์ถ๋ ฅ -> ๋ค์ ํธ๋ฆฌ์ ๋ฃจํธ์ธ B๋ก ๊ฐ์ B๋ฅผ ์ถ๋ ฅํจ -> ๊ทธ ๋ค์์ D
- ์ ์ ์ํ๋ก ์ฒ๋ฆฌ๊ฐ ๋ ๊ฒฝ์ฐ ์ด๋ฏธ์ง์ ๊ฐ์ด A -> B -> D -> H -> I -> E -> J -> K -> C ์์๋ก ์ฒ๋ฆฌ๊ฐ ๋๊ฒ ๋๋ค.
- ์ผ์ชฝ ์๋ธํธ๋ฆฌ ๋ชจ๋ ๋๋ด๊ณ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ ๋ฐฉ๋ฌธ ํ์
[ LDR ( ์ค์ ์ํ: inorder) ]
- ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ ๋ฐฉ๋ฌธ -> ๋ฃจํธ ๋ ธ๋ ๋ฐฉ๋ฌธ -> ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ ๋ฐฉ๋ฌธ ํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ ๋ฐฉ์์.
- ์ ์๋ ๋ฃจํธ ๋ ธ๋๊ฐ ์ ์ผ ๋จผ์ ์์์ด ๋์๋ค๋ฉด ์ค์ ๋ฐฉ์์ ๋ฃจํธ ๋ ธ๋๊ฐ ๊ฐ์ด๋ฐ์ ๋ค์ด๊ฐ๋ ๋ฐฉ์์.
- ๊ฐ์ด๋ฐ ์๋ธ ํธ๋ฆฌ์ ๋ฃจํธ ๋ ธ๋๊ฐ ๊ฐ์ด๋ฐ๋ก ๋ค์ด๊ฐ๊ฒ ๋จ.
[ LRD ( ํ์ ์ํ: postorder) ]
- ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ ๋ฐฉ๋ฌธ -> ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ ๋ฐฉ๋ฌธ -> ๋ฃจํธ ๋ ธ๋ ๋ฐฉ๋ฌธ ํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ ๋ฐฉ์์.
(3) ํฌํ ์ด์ง ํธ๋ฆฌ (Full Binary Tree)
- ๊น์ด๊ฐ k์ธ ์ด์ง ํธ๋ฆฌ ์ค์์ ๋ ธ๋์ ๊ฐ์๊ฐ 2^k - 1 ๊ฐ์ธ ์ด์ง ํธ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
- ๊น์ด๊ฐ k์ธ ์ด์ง ํธ๋ฆฌ๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ ๊ฐ์๋ 2^k - 1๊ฐ ์ด๋ฉฐ, ๋จ๋ง ๋ ธ๋์ ๊ฐ์๊ฐ 2^k - 1 ๊ฐ
- ์ฆ, ๋ชจ๋ ๋ด๋ถ ๋ ธ๋๊ฐ ์์์ 2๊ฐ์ฉ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ์ด๋ฉฐ, N๋ ๋ฒจ์ ๋ง๊ฒ ๋ ธ๋๊ฐ ๊ฝ์ฐจ์๋ ๊ฒฝ์ฐ์.
- ์ ๋ฆฌํ๋ฉด, ๊ฐ ๋ ๋ฒจ์์ ๋น์๋ฆฌ๊ฐ ์์ด ๋ ธ๋๋ฅผ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ์ ๋ชจ๋ ๋ด๋ถ ๋ ธ๋๋ค์ 2๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ ๊ฒฝ์ฐ์.
(4) ์์ ์ด์ง ํธ๋ฆฌ (Complete Binary Tree)
- ํธ๋ฆฌ์ ์ต๋ ๋ ๋ฒจ์ด k ์ผ ๋, ๋ ๋ฒจ k-1๊น์ง๋ ํฌํ ์ด์ง ํธ๋ฆฌ๋ฅผ ํ์ฑํ๊ณ , ๋ ๋ฒจ k์์๋ ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฑ์์ง ํธ๋ฆฌ์
- ์ด ๋ ธ๋์ ๊ฐ์๊ฐ 2^k+1 - 1 ์ ์ด๊ณผํ์ง ์์ผ๋ฉด์, ํฌํ ์ด์ง ํธ๋ฆฌ์ ๋ ธ๋ ๋ฒํธ์ ํด๋นํ๋ ์ฐ์์ ์ธ ๋ฒํธ๋ฅผ ๊ฐ๋ ํธ๋ฆฌ์.
- ์ฝ๊ฒ๋งํด, ๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ ๋ชจ๋ ๋ ๋ฒจ์ด ๊ฝ ์ฐจ ์๋ ๊ฒฝ์ฐ์ด๋ฉฐ, ๋ง์ง๋ง ๋ ๋ฒจ์ ์ผ์ชฝ๋ถํฐ ์ฑ์์ง ์ด์ง ํธ๋ฆฌ๋ฅผ ์๋ฏธํจ.
- ์ผ์ชฝ๋ถํฐ ์ฐ์์ ์ผ๋ก ์ฑ์์ง๋ ์ํ์ฌ์ผ ํจ. ์ฆ, F ๋ฐ์ ๋จผ์ K๊ฐ ๋ค์ด์ค๋ ๊ฒฝ์ฐ๋ผ๋ฉด E ๋ฐ์๋ ๋น์ด์์ผ๋ฏ๋ก ์๋.
- ๋ํ, ๋ชจ๋ ํฌํ ์ด์ง ํธ๋ฆฌ๋ ์์ ํธ๋ฆฌ๋ก ๋ณผ ์ ์์ผ๋ฉฐ, ๋ชจ๋ ์์ ์ด์ง ํธ๋ฆฌ๋ ํฌํ ์ด์ง ํธ๋ฆฌ๋ ์๋ ์ ์๋ ๊ด๊ณ๋ฅผ ๊ฐ์ง.
- ์ฝ๊ฒ๋งํด, ๋ชจ๋ ๋ ธ๋๊ฐ ๋ค ์ฐจ์์ผ๋ฉด ํฌํ ์ด์ง ํธ๋ฆฌ ์ด๋ฉด์, ์์ ์ด์ง ํธ๋ฆฌ๋ก ๋ณผ ์ ์์.
(5) ๊ฒฝ์ฌ ์ด์ง ํธ๋ฆฌ (Skewed Binary Tree)
- ํ ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ๊ฐ์ง๊ฐ ๋ป์ด ๋๊ฐ ์ด์ง ํธ๋ฆฌ๋ฅผ ์๋ฏธํจ.
- ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ๊ฐ์ง๊ฐ ๋ป์ด ๋๊ฐ ๊ฒฝ์ฌ ์ด์ง ํธ๋ฆฌ ๋๋ ์ค๋ฅธ์ชฝ์ผ๋ก๋ง ๊ฐ์ง๊ฐ ๋ป์ด ๋๊ฐ ๊ฒฝ์ฌ ์ด์ง ํธ๋ฆฌ๊ฐ ์์.
- ๊ฐ์ ๊ฐฏ์์ ๋ ธ๋๋ฅผ ๊ฐ๋ ์ํ์์ ๊น์ด๊ฐ ๊ฐ์ฅ ํฐ ์ด์ง ํธ๋ฆฌ๋ฅผ ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ์ ๊ฒฝ์ฌ ์ด์ง ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค.
(6) ์ ๋ฆฌํ๋ฉด
- ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ: ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํํํ๊ธฐ ์ํด ๋ ธ๋๋ค์ ์ฐ๊ฒฐํ ์๋ฃ๊ตฌ์กฐ์ด๋ฉฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ธ๋, ๋ฅํธ, ์์ ๋ ธ๋, ๋ถ๋ชจ ๋ ธ๋, ์ ๋ ธ๋, ๊ฐ์ , ์ฐจ์, ๋ ๋ฒจ์ด ์กด์ฌํจ. ๋ํ, ๋ชจ๋ ๋ ธ๋๋ ๋ฃจํธ ๋ ธ๋๋ก๋ถํฐ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉฐ, ์ฌ์ดํด์ด ์๋ ๊ตฌ์กฐ์ด๋ฉฐ, ํธ๋ฆฌ์ ๋ํ์ ์ธ ์ข ๋ฅ๋ก๋ ์ด์ง ํธ๋ฆฌ, ์์ ์ด์ง ํธ๋ฆฌ, ํฌํ ์ด์ง ํธ๋ฆฌ, ์ด์ง ํ์ ํธ๋ฆฌ ๋ฑ์ด ์์.
- ์ด์ง ํธ๋ฆฌ, ์์ ์ด์ง ํธ๋ฆฌ, ํฌํ ์ด์ง ํธ๋ฆฌ, ์ด์ง ํ์ ํธ๋ฆฌ ๋ฑ์ ๊ฒฐ๊ตญ ํธ๋ฆฌ ๋ผ๋ ์๋ฃ๊ตฌ์กฐ์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ํ์ ๋ ์๋ฃ๊ตฌ์กฐ๋ก ๋ณผ ์ ์์.
- ํฌํ ์ด์ง ํธ๋ฆฌ์ ์์ ์ด์ง ํธ๋ฆฌ๋ ์ด์ง ํธ๋ฆฌ์์ ๊ตฌ์กฐ์ ์ ์ฝ์ ๋ ํ์์ผ๋ก ๋ณผ ์ ์์.
- ์ด์ง ํ์ ํธ๋ฆฌ๋ ๊ฐ์ ๊ท์น์ ๋ ํ์์ผ๋ก ๋ณผ ์ ์์.
- ์ด์ง ํธ๋ฆฌ์ ์ํ ์ฐ์ฐ: ์ด์ง ํธ๋ฆฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๋ฐฉ๋ฒ์ธ ์ฆ, ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ ์ด์ง ํธ๋ฆฌ ์ ์ฉ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ณผ ์ ์์.
โ 3. ๊ทธ๋ํ
- ์ ์ (vertex) ๋ค์ ์ ํ ์งํฉ V์ ๋ ๊ฐ์ ์ ์ ์ ์ฐ๊ฒฐํ๋ ๊ฐ์ (edge)๋ค์ ์ ํ ์งํฉ E๋ก ์ ์
- G=(V,E)๋ก ํ์๊ฐ ๋จ. ( vertex = node ๋ผ๊ณ ๋ ๋ถ๋ฆผ )
(1) ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ (undirected graph)
- ๊ฐ์ ์ด ๋ฐฉํฅ์ฑ์ด ์๋ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ทธ๋ํ๋ฅผ ์๋ฏธํ๋ฉฐ, ๋ฐฉํฅ์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฐฉํฅ์ผ๋ก ์ด๋์ด ๊ฐ๋ฅํจ.
(2) ๋ฐฉํฅ ๊ทธ๋ํ (directed graph)
- ๋ ์ ์ ์ ์ฐ๊ฒฐํ๋ ๊ฐ์ ์ด ๋ฐฉํฅ์ฑ์ ๊ฐ์ง๋ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ทธ๋ํ๋ฅผ ์๋ฏธํ๋ค.
- ์ฆ, ๋ฐฉํฅ์ด ์๋ ๊ณณ์ผ๋ก๋ง ๊ฐ ์ ์์ผ๋ฉฐ, ์๋ ๊ฒฝ์ฐ์๋ ์ด๋์ ๋ถ๊ฐ๋ฅํ๋ค๋ ์๋ฏธ์.
(3) ๊ทธ๋ํ์ ์งํฉ ํํ ๋ฐฉ๋ฒ
- V ๋ ์ ์ , E ๋ ๊ฐ์ ์ ์๋ฏธํจ
- ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ธ ๊ฒฝ์ฐ "()" ์ ๊ดํธ๋ก ํํ์ด ๋๋ฉฐ, ๋ฐฉํฅ ๊ทธ๋ํ๋ "<>" ๊บฝ์๋ก ํํ์ด ๋๋ค.
- ๋ํ, ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์์๋ ์๋ฐฉํฅ์ ๊ฐ๋ฅดํค๊ธฐ ๋๋ฌธ์ 1,4 ๋๋ 4,1 ๋ ์ค ํ๋๋ง ์ฌ์ฉ์ ํด ์ค๋ณต์ ์์ค๋ค.
(4) ๊ทธ๋ํ์ ์ฉ์ด
- ๋ ์ ์ ์ด ๊ฐ์ ์ผ๋ก ์ง์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉด ๋ ์ ์ ์ ์ธ์ (adjacent)ํด ์๋ค๊ณ ํ๋ฉฐ, ํด๋น ๊ฐ์ ์ ๋ ์ ์ ์ ๋ถ์(incident) ๋์๋ค๊ณ ํจ.
- ์ธ์ ํ๋ค: ์ ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ์๋ฏธํจ.
- ๋ถ์๋์๋ค: ์ ์ ๊ณผ ๊ฐ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ์๋ฏธํจ.
- ์ฝ๊ฒ๋งํด, "์ธ์ ํ๋ค" ๋ ๋ ์ ์ ์ด ๊ฐ์ ์ผ๋ก ์ง์ ์ฐ๊ฒฐ๋์ด ์์์ ์๋ฏธํ๊ณ , "๋ถ์๋๋ค" ๋ ์ด ๊ฐ์ ์ด ์ด ์ ์ ์ ์ฐ๊ฒฐ๋์ด ์๋ค ๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ์.
[ ๊ฒฝ๋ก(path) ]
- ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์ ์ ๋ค์ ์์ฐจ์ ๋์ด์ ์๋ฏธํ๋ค.
- ์์: A -> B -> C -> D ( A ์์ ์์ํด B, C๋ฅผ ๊ฑฐ์ณ D๋ก ๊ฐ๋ ๊ธธ์ ์๋ฏธํจ )
[ ๊ฒฝ๋ก์ ๊ธธ์ด ]
- ๊ฒฝ๋ก์ ํฌํจ๋ ๊ฐ์ ์ ๊ฐ์๋ก ํํ์ ํจ.
- ์์: A -> B -> C -> D ( ๊ฐ์ ์ A-B, B-C, C-D ์ด๋ ๊ฒ ์ด 3๊ฐ, ๋ฐ๋ผ์ ๊ธธ์ด = 3 ์ด ๋จ. )
[ ๋จ์ ๊ฒฝ๋ก(simple path) ]
- ์ค๋ณต๋ ์ ์ ์์ด ์ฐ๊ฒฐ๋ ๊ฒฝ๋ก๋ฅผ ์๋ฏธํ๋ฉฐ, ๊ฒฝ๋ก ์์ ์กด์ฌํ๋ ์ ์ ๋ค์ด ๋ชจ๋ ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ๋ณผ ์ ์์.
- ์ฝ๊ฒ๋งํด, ๊ฐ์ ์ง์ ๋ ๋ฒ ๋ค๋ฅด์ง ์๊ณ ๊ธธ์ ๊ฐ๋ ๊ฒ
- ์์: A -> B -> C -> D -> E ( ์ค๊ฐ์ ๊ฐ์ ์ ์ ์ด ์์ผ๋ฉด ๋จ์ ๊ฒฝ๋ก๊ฐ ๋จ )
[ ์ฌ์ดํด(cycle) ]
- ์ธ ๊ฐ ์ด์์ ์ ์ ์ ๊ฐ์ง ๊ฒฝ๋ก ์ค์์ ์์ ์ ์ ๊ณผ ๋ ์ ์ ์ด ๊ฐ์ ๊ฒฝ๋ก๋ฅผ ์๋ฏธํจ. ( ์ฆ, ์์ ์ด๋ฃจ๋ ๊ฒฝ๋ก์ )
- ๋จ์ ์ฌ์ดํด์ด ์๋๋ฏ๋ก ์ค๋ณต์ด ๋๋ ์ ์ ์ด ์์ ์ ์์.
- ์์: A -> B -> C -> A ( A์์ ์์ํด์ B, C๋ฅผ ๊ฑฐ์ณ ๋ค์ A๋ก ๋์์ค๋ ๊ธธ )
[ ๋จ์ ์ฌ์ดํด(simple cycle) ]
- ์ค๋ณต๋ ์ ์ ์์ด ์์์ ์ผ๋ก ๋์์ค๋ ์ฌ์ดํด์ ์๋ฏธํ๋ฉฐ, ์์ ์ ์ ๊ณผ ๋ ์ ์ ์ ์ ์ธํ๊ณ ๋ชจ๋ ์ ์ ์ด ๋ค๋ฅธ ์ฌ์ดํด
- ์ฝ๊ฒ๋งํด, ์์ ๋๋, ํ ๋ฒ ๋ค๋ฅธ ์ ์ ์ ๋ค์ ์ง๋์ง ์๊ฒ ๋ค๋ ์๋ฏธ์.
- ์์: A -> B -> C -> A = ๋จ์ ์ฌ์ดํด / A -> B -> C -> B -> A = ๊ทธ๋ฅ ์ฌ์ดํด๋ก ๋ณด๋ฉด ๋ ๋ฏ.
[ ๋ ์ ์ ์ ์๋ก ์ฐ๊ฒฐ๋์๋ค ]
- ๋ ์ ์ ์ฌ์ด์ ๊ฒฝ๋ก๊ฐ ์กด์ฌํ๋ค๋ ์๋ฏธ์. ( ์ฆ, ๊ฐ์๋ง ์์ผ๋ฉด ์ฐ๊ฒฐ๋์๋ค๊ณ ํํํ๋ ๋ฏ )
[ ๊ทธ๋ํ๊ฐ ์๋ก ์ฐ๊ฒฐ๋์๋ค ]
- ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์์ ์๋ก ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๋ค ์ฌ์ด์ ๊ฒฝ๋ก๊ฐ ์กด์ฌํจ ( ๋ชจ๋ ์ ์ ๋ค์ด ์ฐ๊ฒฐ ๋ ์ํ )
[ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์์ ํ ์ ์ ์ ์ฐจ์ ]
- ์ ์ ์ ๋ถ์๋ ๊ฐ์ ์ ๊ฐ์๋ฅผ ์๋ฏธํจ. ( ์ฆ, ์ ์ ์ ๋ถ์ด์๋ ๊ฐ์ ์ ๊ฐ์๋ฅผ ์๋ฏธํจ )
[ ๋ฐฉํฅ ๊ทธ๋ํ ์ ์ ์ ์ฐจ์๋ ์ง์ ์ฐจ์์ ์ง์ถ ์ฐจ์๋ก ๋๋จ ]
- ์ง์ ์ฐจ์(indegree): ๋ค๋ฅธ ์ ์ ์์ ํด๋น ์ ์ ์ผ๋ก ํฅํ๋ ๊ฐ์ ์ ๊ฐ์๋ฅผ ์๋ฏธํจ.
- ์ง์ถ ์ฐจ์(outdegree): ํด๋น ์ ์ ์์ ๋ค๋ฅธ ์ ์ ์ผ๋ก ํฅํ๋ ๊ฐ์ ์ ๊ฐ์๋ฅผ ์๋ฏธํจ.
- ์ฝ๊ฒ๋งํด ๋ฐฉํฅ์ด ์๋ ๊ทธ๋ํ์์ ํน์ ์ ์ ์ผ๋ก ๋๊ฐ๋ ์ฐจ์๋ ์ง์ถ ์ฐจ์, ๋ค์ด์ค๋ ์ฐจ์๋ฅผ ์ง์ ์ฐจ์๋ก ๋ณผ ์ ์์.
[ ํธ๋ฆฌ์ ๊ทธ๋ํ ]
- ํธ๋ฆฌ๋ ๊ทธ๋ํ์ ํน์ํ ํํ๋ก ๋ด ์ฆ, ์ฌ์ดํด์ด ์กด์ฌํ์ง ์์ ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๊ฐ ๊ฐ๋ฅํจ
- ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์์ ๋ชจ๋ ์ ์ ์ด ์๋ก ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉด์ ์ฌ์ดํด์ด ์กด์ฌํ์ง ์๋ ๊ทธ๋ํ๋ฅผ ํธ๋ฆฌ๋ผ๊ณ ํจ.
โ 4. ๊ทธ๋ํ์ ํํ
- ๊ทธ๋ํ๋ฅผ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๊ตฌํํ๊ธฐ ์ํด์๋ ์ธ์ ํ๋ ฌ(adjacency matrix) ์ด๋ ์ธ์ ๋ฆฌ์คํธ(adjacency list)๋ฅผ ์ด์ฉํ์ฌ ํํํจ.
- ์ธ์ ํ๋ ฌ์ ์ด์ฉํ์ฌ n๊ฐ์ ์ ์ ์ ๊ฐ์ง ๊ทธ๋ํ๋ฅผ ํํํ๊ธฐ ์ํด์๋ n * n ํฌ๊ธฐ์ 2์ฐจ์ ๋ฐฐ์ด์ ์ด์ฉํจ.
- ์ธ์ ํ๋ ฌ A[i][j] ์ ๊ฐ์ด ์กด์ฌํ๋ฉด ๊ทธ๋ํ์ ์ ์ vi ์์ ์ ์ vj์ฌ์ด์ ๊ฐ์ ์ด ์กด์ฌํจ์ ์๋ฏธํ๊ณ , A[i][j]์ ๊ฐ์ 1๋ก ์ ํจ
(1) ์ธ์ ํ๋ ฌ
- (1,2) , (1,4) ๊ฐ ์ฐ๊ฒฐ์ด ๋ ์ํ์ด๋ฉฐ, ์ค๋ฅธ์ชฝ ์ธ์ ํ๋ ฌ์ ์ฌ์ฉํด ํํ์ ํ๋ฉด 1,2 ์ 1,4 ์ ์ซ์ 1์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
- ์ฐ๊ฒฐ์ด ๋์ด ์์ง ์๋ ๋ถ๋ถ์๋ 0์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
(2) ์ธ์ ๋ฆฌ์คํธ
- ๋ฆฌ์คํธ๋ฅผ ํ์ฉํ์ฌ ๊ฐ๊ฐ์ ์ ์ ๋ค์ด ์ธ์ ํด์๋ ์ ์ ๋ค์ ๋ฆฌ์คํธ๋ก ํํํ ๊ฒ์ด๋ค.
(3) ๊ทธ๋ํ์ ํ์
- ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ์ ์ฒด๊ณ์ ์ผ๋ก ๋ฐฉ๋ฌธํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฝ๊ฒ๋งํด, ํธ๋ฆฌ์ ์ํ์ ๋น์ทํ๋ค๊ณ ๋ณด๋ฉด ๋จ.
- ๊ทธ๋ํ์ ํ์์ ๊น์ด ์ฐ์ ํ์(depth first search) ๊ณผ ๋๋น ์ฐ์ ํ์(breadth first search) ์ด ์์.
(4) ๊น์ด ์ฐ์ ํ์
- ์ต๊ทผ์ ๋ฐฉ๋ฌธํ์ง ์์ ์ธ์ ํ ํ๋์ ์ ์ ์ ์ฐ์ ์ ์ผ๋ก ๋ฐฉ๋ฌธํ๋ ๋ฐฉ์์ด๋ค.
- ์ต์ข ์ ์ธ ๋ฐฉ๋ฌธ ์์๋ (1, 2, 4, 5, 7, 6, 3) ์ด ๋จ.
- ์ต์ข ๋ฐฉ๋ฌธ ์์๋ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์
- ๊น์ด ๋ค์ด๊ฐ๋ ๊ฒ์ ์ฐ์ ์์๋ก ๋๊ธฐ ๋๋ฌธ์ 1 -> 2 -> 4๋ก ๋ด๋ ค๊ฐ ๋ค 5 -> 7 ์์ผ๋ก ์ ์ผ ๊น์๊ณณ ๊น์ง ๊ฐ๋ค๊ฐ ๋์์ด
- 1์์ ์๋ฌด ๊ฐ์ 2, 3 ๋ ์ค ํ๋ ์ก๊ณ ๋ด๋ ค๊ฐ๋ ๋๋์.
(5) ๋๋น ์ฐ์ ํ์
- ์ต๊ทผ์ ๋ฐฉ๋ฌธํ์ง ์์ ์ธ์ ํ ๋ชจ๋ ์ ์ ์ ๋ชจ๋ ๋ฐฉ๋ฌธํ๋ ๋ฐฉ์์.
- ์ต์ข ์ ์ธ ๋ฐฉ๋ฌธ ์์๋ (1, 2, 3, 4, 5, 6, 7) ์ด ๋ ์ ์์.
- ์ต์ข ๋ฐฉ๋ฌธ ์์๋ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์
- ์ฒ์ 1์์ 2, 3์ ๋ค ์ถ๋ ฅํ๊ณ 2๋ฅผ ์ ํํด์ 4, 5 ์ถ๋ ฅํ๊ณ 3์๊ฐ์ 6์ ์ถ๋ ฅ ํ ๋ค ๋ง์ง๋ง 7์ ์ถ๋ ฅํจ
'๐๋ฐฉ์กํต์ ๋ํ๊ต > ๐ป์ปดํจํฐ๊ณผํ ๊ฐ๋ก ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ปดํจํฐ๊ณผํ ๊ฐ๋ก ] 6๊ฐ - ์๊ณ ๋ฆฌ์ฆ(2) (0) | 2025.10.01 |
---|---|
[์ปดํจํฐ๊ณผํ ๊ฐ๋ก ] 3๊ฐ - ์๋ฃ๊ตฌ์กฐ(1) (0) | 2025.09.17 |
[์ปดํจํฐ๊ณผํ ๊ฐ๋ก ] 10๊ฐ - ์ปดํจํฐ ๊ตฌ์กฐ(2) (0) | 2025.09.15 |
[์ปดํจํฐ๊ณผํ ๊ฐ๋ก ] 9๊ฐ - ์ปดํจํฐ ๊ตฌ์กฐ(1) (0) | 2025.09.08 |
[์ปดํจํฐ๊ณผํ ๊ฐ๋ก ] 5๊ฐ - ์๊ณ ๋ฆฌ์ฆ(1) (0) | 2025.09.04 |