๐ฉ ์ฐ๊ฒฐ๋์ด ์๋ ์์ ๊ฐ์ ๊ด๊ณ๋ฅผ ํํํ ์๋ฃ๊ตฌ์กฐ
๋ช ๊ฐ์ ์ ์ (Vertext)์ด ๊ฐ์ (Edge)์ผ๋ก ์ฐ๊ฒฐ๋ ๊ฒ
๊ทธ๋ํ G = (V,E)
๐ฉ ๊ทธ๋ํ ํ์
ํน์ ์ ์ ์์ ์ถ๋ฐํด ๊ฐ์ ์ ํตํด ์ด๋ํด๊ฐ๋ฉฐ ๋์ ์ ์ ์ ์ฐพ๋ ๊ฒ
ํ์ ์์์ ๋ฐ๋ผ ๊น์ด ์ฐ์ ํ์, ๋๋น ์ฐ์ ํ์
๐ฉ ๊ทธ๋ํ ์ฉ์ด
์ธ์ : ๋ ์ ์ ์ด ์ฐ๊ฒฐ๋์ด ์์ ๋ cf. ์ ์ ๋ค์ ๋ถ์๋์ด ์๋ค ํ๋ค.
์ฐจ์ : ์ ์ ์ ๋ถ์๋์ด ์๋ ๊ฐ์ ์ ์
๊ฒฝ๋ก : ์ ์ a์์ b๊น์ง ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์ ์ ์ ์์๋๋ก ๋์ดํ ๋ฆฌ์คํธ
๋จ์ ๊ฒฝ๋ก : ๋ชจ๋ ๋ค๋ฅธ ์ ์ ์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ๋ก
๐ ์ง์ ์ฐจ์, ์ง์ถ ์ฐจ
๊ฒฝ๋ก ๊ธธ์ด : ๊ฒฝ๋ก๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ์ ์ ์
์ฌ์ดํด : ๋จ์ ๊ฒฝ๋ก ์ค์์ ๊ฒฝ๋ก์ ์์ ์ ์ ๊ณผ ๋ง์ง๋ง ์ ์ ์ด ๊ฐ์ ๊ฒฝ๋ก
๐ฉ ๊ตฌํ ๋ฐฉ๋ฒ
์ธ์ ํ๋ ฌ, ์ธ์ ๋ฆฌ์คํธ
๐ ๋ฌด๋ฐฉํฅ/๋ฐฉํฅ ๊ทธ๋ํ
๊ฐ์ค์น ๋ถ์ฌ ๊ฐ๋ฅ
๊ฐ์ ์ ๋ฐฉํฅ์ด ์๋ ๊ฒฝ์ฐ, '๋ฌด๋ฐฉํฅ ๊ทธ๋ํ'
๋ฌด๋ฐฉํฅ ๊ทธ๋ํ ๐ (1,2) = (2,1)
๋ฐฉํฅ ๊ทธ๋ํ ๐<1,2>, <2,5>
ํธ๋ฆฌ
V(G) = {1, 2, 3, 4, 5, 6}
E(G) = {(1,2), (1,3), (2,4), (3,4), (3,5), (4,5), (4,6)}
๐ ๊ฐ์ค ๊ทธ๋ํ
๊ฐ์ ์ ๋ถ์ฌ๋ ๊ฐ์ ๊ฐ์ ์ '๊ฐ์ค์น' or '์ฝ์คํธ'
๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ์์ ๋๋ 2๊ฐ์ ์ ์ ์ '์ฐ๊ฒฐ๋ผ ์๊ฑฐ๋', '์ฐ๊ฒฐ๋ผ ์์ง ์๊ฑฐ๋' ๋ ์ค ํ๋์ด์ง๋ง, ๊ฐ์ค์น๊ฐ ์์ ๋๋ '์ฐ๊ฒฐ(๊ด๊ณ)์ ์ ๋'๋ฅผ ํํ ๊ฐ๋ฅํ๋ค.
๐ ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์
๋ ์ ์ ์ ์ฐ๊ฒฐํ๋ ๊ฒฝ๋ก ์ค ๊ฐ์ ์ ๊ฐ์ค์น ํฉ๊ณ๊ฐ ๊ฐ์ฅ ์์ ๊ฒ์ ์ฐพ๋ ๋ฌธ์
๐ฉ ๊ทธ๋ํ ์ํ
๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ์ ์ฒด๊ณ์ ์ผ๋ก ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๋ ๊ฒ
๐ ๊ทธ๋ํ ํ์ ๋ฐฉ๋ฒ (๊น์ด ์ฐ์ ํ์, ๋๋น ์ฐ์ ํ์)
๐ ์์ ์ ๋ ฌ
์์๊ฐ ์ ํด์ ธ ์๋ ์์ ์ ์ฐจ๋ก๋ก ์ํํด์ผ ํ ๋ ์ฌ์ฉํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ
์ฌ์ดํด์ด ์๋ ๋ฐฉํฅ ๊ทธ๋ํ(DAG)์ ๋ชจ๋ ๋ ธ๋๋ฅผ '๋ฐฉํฅ์ฑ์ ๊ฑฐ์ค๋ฅด์ง ์๋๋ก ์์๋๋ก ๋์ด'
์์์ ์ด ์กด์ฌํด์ผ ํ๋ค.
๐ฉ ๋ฐฉ๋ฒ
1. ์ง์ ์ฐจ์๊ฐ 0์ธ ๋ ธ๋๋ฅผ ํ์ ๋ฃ๋๋ค.
2. ํ๊ฐ ๋น ๋๊น์ง ๋ค์์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
- ํ์์ ์์๋ฅผ ๊บผ๋ด ํด๋น ๋ ธ๋์์ ๋๊ฐ๋ ๊ฐ์ ์ ๊ทธ๋ํ์์ ์ ๊ฑฐ
- ์๋กญ๊ฒ ์ง์ ์ฐจ์๊ฐ 0์ด ๋ ๋ ธ๋๋ฅผ ํ์ ์ฝ์
๐ ๊ฐ ๋ ธ๋๊ฐ ํ์ ๋ค์ด์จ ์์๊ฐ ์์ ์ ๋ ฌ์ ์ํํ ๊ฒฐ๊ณผ
1. ์ง์ ์ฐจ์๊ฐ 0์ธ ๋ชจ๋ ๋ ธ๋๋ฅผ ํ์ ์ฝ์ . ํ์ฌ 1๋ฒ ๋ ธ๋์ ์ง์ ์ฐจ์๋ง 0์ด๋ฏ๋ก ํ์ 1๋ฒ ๋ ธ๋๋ง ์ฝ์ ํ๊ฒ ๋๋ค.
2. ํ์ ์๋ 1๋ฒ ๋ ธ๋๋ฅผ ๊บผ๋ธ๋ค. ์ดํ 1๋ฒ ๋ ธ๋์ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฐ์ ๋ค์ ์ ๊ฑฐํ๋ค. ๊ทธ๋ฌ๋ฉด 2๋ฒ, 5๋ฒ ๋ ธ๋์ ์ง์ ์ฐจ์๊ฐ 0์ด ๋๊ณ , ํ์ ์ฝ์ ๋๋ค.
3. ํ์ ์๋ 2๋ฒ ๋ ธ๋๋ฅผ ๊บผ๋ธ๋ค. 2๋ฒ ๋ ธ๋์ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฐ์ ๋ค์ ์ ๊ฑฐํ๋ค. ๊ทธ๋ฌ๋ฉด 3๋ฒ ๋ ธ๋์ ์ง์ ์ฐจ์๊ฐ 0์ด ๋๋ฏ๋ก 3๋ฒ ๋ ธ๋๋ฅผ ํ์ ์ฝ์ ํ๋ค.
4. ํ์ ์๋ 5๋ฒ ๋ ธ๋๋ฅผ ๊บผ๋ธ๋ค. 5๋ฒ ๋ ธ๋์ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฐ์ ๋ค์ ์ ๊ฑฐํ๋ค. ๊ทธ๋ฌ๋ฉด 6๋ฒ ๋ ธ๋์ ์ง์ ์ฐจ์๊ฐ 0์ด ๋๋ฏ๋ก, 6๋ฒ ๋ ธ๋๋ฅผ ํ์ ์ฝ์ ํ๋ค.
5. ๊ณ์ํด์ ๋ฐ๋ณตํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
๐ ์์ ์ ๋ ฌ์ ๋ต์์ด ์ฌ๋ฌ๊ฐ์ง๊ฐ ๋ ์ ์๋ค.
1 -> 5 -> 2 -> 3 -> 6 -> 4 -> 7 ๋ ํ๋์ ๋ต์ด ๋ ์ ์๋ค.
cf. ์คํ์ผ๋ก ํํํ๋ ๋ฐฉ๋ฒ
stack์ ์์ ์ ์ ์ push. ์ฃผ๋ณ ์ ์ ์ ์ ํํ์ฌ stack์ push. ์ฃผ๋ณ ์ ์ ์ด ์์ผ๋ฉด pop.
์ด์ ์ผ๋ก ๋์๊ฐ์ ์ฒดํฌ ๋ฐ push/pop ๋ฐ๋ณตํ์ฌ ๊ฐ์ฅ ๋ง์ง๋ง์ popํ ๊ฒ์ด ์์ผ๋ก ์ค๋๋ก ๋ฐฐ์นํ๋ค.
๐ฉ ์๊ฐ๋ณต์ก๋ O(V+E)
๋ชจ๋ ๋ ธ๋๋ฅผ ํ์ธ O(V), ํด๋น ๋ ธ๋์์ ์ถ๋ฐํ๋ ๊ฐ์ ์ ์ฐจ๋ก๋๋ก ์ ๊ฑฐ O(E) ํด์ผ ํ๋ค.
๋ฐ๋ผ์ ๋ ธ๋์ ๊ฐ์ ์ ๋ชจ๋ ํ์ธํ๋ ๊ฒ์ ๊ณ ๋ คํ์ฌ O(V) + O(E) = O(V+E)์ ์๊ฐ์ด ์์๋๋ค.
๐ฉ ๊ทธ๋ํ์ ์ฐ๊ฒฐ์ฑ
์ ์ ๊ฐ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ๋ค๋ฃจ๋ ๊ฒ
๐ ์ฐ๊ฒฐ ์ฑ๋ถ
๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์์ ์์์ ๋ ์ ์ ๊ฐ์ ๊ฒฝ๋ก๊ฐ ์กด์ฌํ๋ ์ต๋ ๋ถ๋ถ ๊ทธ๋ํ
DFS/BFS๋ฅผ ํ์ฉํ์ฌ ๊ตฌํ๋ค.
while(์์ง ํ์ํ์ง ์์ ์ ์ ์ด ์กด์ฌ)
ํ์์ ์ํํ๋ค๊ฐ ํ/์คํ์ด ๋น๊ฒ ๋๋ฉด ๊ทธ ๋๊น์ง ํ์ํ ์ ์ ๋ค์ ํ๋์ ์ฐ๊ฒฐ ์ฑ๋ถ์ผ๋ก ๊ตฌ์ฑ
๐ ๊ฐ์ฐ๊ฒฐ ์ฑ๋ถ
๋ฐฉํฅ ๊ทธ๋ํ์์ ์์์ ๋ ์ ์ ์ฌ์ด์ ์๋ฐฉํฅ ๊ฒฝ๋ก๊ฐ ์กด์ฌํ๋ ์ต๋ ๋ถ๋ถ ๊ทธ๋ํ
'๐ฉโ๐ป ํ๋ก๊ทธ๋๋ฐ > โจ ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊น์ด ์ฐ์ ํ์(DFS) (0) | 2024.04.14 |
---|---|
ํธ๋ฆฌ(Tree) (0) | 2024.04.13 |
ํ(Heap) cf.์ด์งํ์ํธ๋ฆฌ (0) | 2024.04.12 |
ํด์ ํ ์ด๋ธ(Hash Table) (1) | 2024.04.12 |
์คํ(Stack) (0) | 2024.04.12 |