[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ(Dijkstra Algorithm)
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ SSP ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ ์ค ๋ฒจ๋ง-ํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋นํด์ ์๋๊ฐ ๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ํ์ง๋ง ์์ ๊ฐ์ ์ด ์์ ๋๋ ํด๋ต์ ์ฐพ์ง ๋ชปํ๋ค. ๊ทธ๋์ ๋ง์ฝ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์์ ์์ ๊ฐ์ ์ด ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค๋ฉด ๋ฒจ๋ง-ํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผํ๊ณ , ์์ ๊ฐ์ ์ผ๋ก๋ง ์ด๋ฃจ์ด์ง ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ง๋ค๋ฉด, ๋ฒจ๋ง-ํฌ๋ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ์ฌ์ฉ๊ฐ๋ฅํ์ง๋ง, ์๋๊ฐ ๋ ๋น ๋ฅธ ๋ค์ต์คํธ๋ผ๋ฅผ ์ฌ์ฉํ๋๋ก ํ์.
Algorithm Concept
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ BFS์ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ถ๊ฐํ ๊ฒ๊ณผ ๋น์ทํ๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๋ ๊ฐ์ ์ ์ ์งํฉ์ ์ฌ์ฉํ๋ค.
- S : ํด๋น ์ง์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๊ฐ ์ด๋ฏธ ๊ตฌํด์ง ์ ์ ๋ค
- Q : S์ ์ํ์ง ์๋ ๋๋จธ์ง ๋ชจ๋ ์ ์ ๋ค
๊ทธ๋ฆฌ๊ณ ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์์๋ก ์งํ๋๋ค.
- ์์์ ์ ์ ์ธํ ๋ชจ๋ ์ ์ ์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ์์ ๋ฌดํ๋๋ก ์ด๊ธฐํํ๋ค. ์์์ ์ 0์ผ๋ก ์ด๊ธฐํ ํ๋ค.
- ๋ชจ๋ ์ ์ ์ ์งํฉ Q์ ๋ฃ๋๋ค.
- Q์์ ๊ฐ์ฅ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ์งง์ ์ ์ ์ ๊บผ๋ธ๋ค. ์ด ์์ ์ ๋ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํด์ ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ์.
- ๊บผ๋ธ ์ ์ ๊ณผ ์ด์ด์ง ๋ชจ๋ ์ ์ ์ ๋ํด Relaxation์ ์ํํ๋ค.
- ์งํฉ Q๊ฐ ๋น ๋๊น์ง ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
์์ ์ง์ ์์๋ถํฐ ์ธ์ ํด ์๋ ๋ชจ๋ ์ ์ ๋ค์ ๋ํด ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๊ณ , ๊ทธ ๋ค์์ผ๋ก ์ด๋ํ๋ ์ ์ ์ ์์น๋ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ ์ ์ ์ด ๋๊ธฐ ๋๋ฌธ์ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๊ทธ ์๊ฐ ์ฐ๋ฆฌ๊ฐ ๊ฒ์ฌํ๊ณ ์๋ ์ ์ ์ ๋ํ ์ต๋จ๊ฒฝ๋ก๋ฅผ ๊ณ์ํด์ ๋ํด๊ฐ๋ ๋ฐฉ์์ด๋ค. ๋ฐ๋ผ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ Greedy Algorithm์ ์ฑ๊ฒฉ์ ๊ฐ์ง๋ค.
Example
์์ ๊ฐ์ ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ ธ์๋ค๊ณ ํ์ ๋, A๋ฅผ ์์์ ์ผ๋ก ํ๋ ๋ค๋ฅธ ๋ ธ๋๋ค์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด๋ณด์
Phase 1
- ์ฐ์ ๊ฐ ์ ์ ์ด ๊ฐ์ง๋ ์ต๋จ๊ฑฐ๋ฆฌ ๊ฐ์ ์์ ๋ฌดํ๋๋ก ์ด๊ธฐํ ํด์ค๋ค. ์ด๋ ์์์ ์ ์ต๋จ๊ฑฐ๋ฆฌ๋ 0์ผ๋ก ์ด๊ธฐํ ํ๋ค.
- ๋ชจ๋ ์ ์ ์ Q ์ ๋ฃ๋๋ค.
Phase 2
- ์ต๋จ๊ฑฐ๋ฆฌ ๊ฐ์ด ๊ฐ์ฅ ์์ ์ ์ ์ ๊บผ๋ธ๋ค. ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฝ๊ฒ ๊บผ๋ผ ์ ์๋ค. ๊ฐ์ฅ ์ฒ์์๋ ์์์ ์ ์ ์ธํ ๋ชจ๋ ์ ์ ๋ค์ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ์์ ๋ฌดํ๋๋ก ์ค์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋น์ฐํ๊ฒ๋ ์์์ ์ด ์ถ์ถ๋๋ค.
- A๊ฐ ๋์๊ธฐ ๋๋ฌธ์ A์ ์ธ์ ํ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๋ค์ ๋ฐฉ๋ฌธํด์ Relaxation์ผ๋ก ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ์
๋ฐ์ดํธ ํ๋ค. A์ ์ธ์ ํ ์ ์ ๋ค์ ๋ค ์ฒดํฌํด๋ณด๋ฉด,
- B ์ ์ : A์์ B๋ก๊ฐ๋ ์ต๋จ ๊ฒฝ๋ก๋ ๊ฐ์ ๊ฐ์ค์น์ธ 9์ด๋ค. ํ์ฌ B์๋ ์์ ๋ฌดํ๋๊ฐ ๋ค์ด๊ฐ ์์ผ๋ฏ๋ก ๋ ์์ ๊ฐ์ธ 9๋ก ์ ๋ฐ์ดํธํ๋ค.
- D ์ ์ : ์์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ฉด D์ ์ต๋จ๊ฑฐ๋ฆฌ๋ 14๊ฐ ๋๋ค.
- E ์ ์ : ์์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ฉด E์ ์ต๋จ๊ฑฐ๋ฆฌ๋ 15๊ฐ ๋๋ค.
- ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๋ณ๊ฒฝ๋์๊ธฐ ๋๋ฌธ์ ์ฐ์ ์์ ํ์ ๋ฃจํธ๋ ธ๋๋ ๋ณ๊ฒฝ๋์์์ ์๊ฐํ์.
Phase 3
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์์ด๋ค.
- A์ ๋ ธ๋๋ค์ ๋ํ ๊ฒ์ฌ๊ฐ ๋๋ฌ๊ธฐ ๋๋ฌธ์, ๋ค์ ํ์์ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ ์ ์ ์ ๊บผ๋ธ๋ค. ์ด๋ B์ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง๊ธฐ ๋๋ฌธ์ B๊ฐ ์ ํ๋๋ค.
- B์ ์ฐ๊ฒฐ๋ ์ ์ ๋ค์ ๋ํ Relaxation์ ์งํํ๋ค. B๋ C์ ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ Relaxation์ ๋๋ด๋ฉด C์ ์ต๋จ๊ฑฐ๋ฆฌ๋
9 + 20 = 29
์ผ๋ก ๊ฐฑ์ ๋๋ค.
Phase 4
ํ์์ ์ ์ ํ๋๋ฅผ ๋ ๋ฝ์๋ณด๋ฉด ์ด๋ฒ์ D๊ฐ ๋์จ๋ค. D์ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ์ ์ ๋ค์ ๋ํด์ Relaxation์ ์ํํด๋ณด์.
- ์ ์ E : ์ ์ D๋ฅผ ๊ฑฐ์ณ์ ์ ์ E๋ก ๊ฐ๋ ๊ฒฝ๋ก์ ์ต๋จ๊ฑฐ๋ฆฌ๋
14 + 7 = 21
์ด๋ค. ์ ์ E์๋ ์ด๋ฏธ ์ต๋จ ๊ฒฝ๋ก์ธ 15๊ฐ ์ ์ ๋์ด ์๋๋ฐ, ์ด ๊ฐ์ด D๋ก๋ถํฐ ๊ณ์ฐ๋ ๊ฐ๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธ ํ์ง ์๊ณ ์ ์งํ๋ค. - ์ ์ F : ์ ์ F์๋ ์์ ๋ฌดํ๋๊ฐ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์, D๋ก๋ถํฐ ์ค๋ ์ต๋จ๊ฑฐ๋ฆฌ
14 + 7 = 21
์ด ์๋ก์ด ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๋๋ค. - ์ ์ C : ์ ์ C๊ฐ ๊ฐ์ง๊ณ ์๋ ์ต๋จ๊ฑฐ๋ฆฌ๋ 29์ธ๋ฐ D๋ฅผ ๊ฑฐ์ณ์ ๊ฐ๋ ๊ฑฐ๋ฆฌ๋
14 + 10 = 24
์ด๋ฏ๋ก ๊ธฐ์กด์ ์ ์ฅ๋ ๊ฑฐ๋ฆฌ๋ณด๋ค ์งง๋ค. ๋ฐ๋ผ์ C์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ 24๋ก ์ ๋ฐ์ดํธํ๋ค.
Phase 5
๋ค์ ์ ์ ์ E์ด๋ค. E์ ์ฐ๊ฒฐ๋ ์ ์ ์ F ํ๋ ๋ฟ์ธ๋ฐ, F์ ์ ์ฅ๋์ด ์๋ ์ต๋จ๊ฑฐ๋ฆฌ๋ 21์ด๋ค. E๋ฅผ ํตํด F๋ก ๊ฐ๊ฒ๋๋ฉด ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ 15 + 20 = 35๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฒ์๋ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธ ํ์ง ์๊ณ ๋๋ธ๋ค.
Phase 6
๋ค์์ผ๋ก ๊ฒ์ฌํ ์ ์ ์ F์ด๋ค. ๊ทธ๋ ์ง๋ง F์๋ ์ฐ๊ฒฐ๋์ด ์๋ ์ ์ ์ด ์๊ธฐ ๋๋ฌธ์ ๊ณง๋ฐ๋ก ๋๋ธ๋ค.
Phase 7
ํ๋ฒ ๋ ์งํํด๋ณด์. ์ฐ์ ์์ ํ์์ ์ ์ ํ๋๋ฅผ ๋ ๋ฝ์์ค๋ฉด, C๊ฐ ๋์จ๋ค. C๋ F์ ์ฐ๊ฒฐ๋์ด ์์ง๋ง C๋ฅผ ๊ฑฐ์ณ F๋ก ๊ฐ๋ ์ต๋จ๊ฑฐ๋ฆฌ๋ 24 + 15 = 39
์ด๋ค. ๋ฐ๋ผ์ ํ์ฌ F์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ์ ์งํ๋ค.
Alogrithm Analysis
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ์ข
๋ฅ์ ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ๋์ง์ ๋ฐ๋ผ์ ์๋๊ฐ ๋ฌ๋ผ์ง๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ Binary Heap ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ฐ ์ฐ์ฐ์ O(lg V) ์ ์๊ฐ์ด ์๊ตฌ๋๋ฏ๋ก ์ด ์ฐ์ฐ์ ๋ชจ๋ relaxation์ ๋ํด ์งํํ๊ธฐ ๋๋ฌธ์ ์ ์ฒด ์๊ฐ ๋ณต์ก๋๋ O(E lg V)
๊ฐ ๋๋ค.
'๐ฎ ์จ-์์ค > ๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ์์์ ๋ ฌ(Topological Sort) (0) | 2021.07.18 |
---|---|
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] DAG์์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๋ฒ (0) | 2021.07.18 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ๋ฒจ๋ง-ํฌ๋ ์๊ณ ๋ฆฌ์ฆ(Bellman-Ford Algorithm) (0) | 2021.07.18 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ์ต๋จ๊ฒฝ๋ก(Shortest Path) (0) | 2021.07.18 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ(Prim's Algorithm) (0) | 2021.07.18 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote