- golang
- ๋นํธ๋ง์คํน
- Python
- ์นด์นด์ค ์ฝํ
- ํธ๋ฆฌ
- Union-Find
- ๋์ ํ๋ก๊ทธ๋๋ฐ
- ๊ฐ์ฅ๊ฐ๊น์ด๊ณตํต์กฐ์
- ์ํฐ๋
- ํ๋ฆฌ์จ๋ณด๋ฉ
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
- ์นด์นด์ค2021
- ๋นํธ๋งต
- nestjs
- ์น๋ฆฐ์ด
- ๋ค์ต์คํธ๋ผ
- LCs
- BFS
- ์์ฝ๋
- DFS
- ์ฌ๊ท
- ์๊ณ ๋ฆฌ์ฆ
- go
- js
- ์ด๋ถํ์
- ๋ฐฑ์๋ ํ๋ฆฌ์จ๋ณด๋ฉ
- DP
- C++
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฐฑ์ค
- Today
- Total
Hello Ocean! ๐ผ
[์๊ณ ๋ฆฌ์ฆ] ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ ๋ณธ๋ฌธ
์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ (Dijkstra)
์ต๋จ ๊ฒฝ๋ก(shortest path)๋ฌธ์ ๋?
์์์ ๋ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒฝ๋ก ์ค, ๊ฐ์ ๋ค์ ๊ฐ์ค์น ํฉ์ด ์ต์๊ฐ ๋๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
์ฌ๊ธฐ์ ๊ฐ์ค์น๋ ๋น์ฉ, ๊ฑฐ๋ฆฌ, ์๊ฐ ๋ฑ์ด๋ค.
์๋ฅผ๋ค์ด ์์ ๊ฐ์ ๊ทธ๋ํ์์ A -> B๋ก ๊ฐ๋ ๊ฒฝ๋ก๋ฅผ ์๊ฐํด๋ณด์.
A->B๋ก ๊ฐ ์ ์๋ ๊ฒฝ๋ก๋ ๋งค์ฐ ๋ง๋ค. ํ์ง๋ง ๊ทธ ์ค์์ ์ต๋จ ๊ฒฝ๋ก๋ ๋ ธ๋ E๋ฅผ ๊ฑฐ์ณ์ ๊ฐ๋ ๊ฒฝ๋ก์ด๋ค.
์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค.
- ํ๋์ ๋ ธ๋ -> ๋ค๋ฅธ ํ๋์ ๋ ธ๋ ์ต๋จ ๊ฒฝ๋ก ์ฐพ๊ธฐ
- ํ๋์ ๋ ธ๋ -> ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋ ์ต๋จ ๊ฒฝ๋ก ์ฐพ๊ธฐ
- ํ๋์ ๋ชฉ์ ์ง๋ก ๊ฐ๋ ๋ชจ๋ ์ต๋จ ๊ฒฝ๋ก ์ฐพ๊ธฐ
- ๋ชจ๋ ์ต๋จ ๊ฒฝ๋ก ์ฐพ๊ธฐ
Dijkstra์ ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ
๊ฐ๋
Dijkstra์ ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ์, ์์ ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ๋ค ์ค์์ 2๋ฒ. ํ๋์ ๋ ธ๋์์ ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๋ค์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๊ธฐ๋ณธ ๋ก์ง
- ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ๋กํ๋ ๋ฐฐ์ด dis ์ด์ฉ
- ์์ ๋ ธ๋ v
- ์งํฉ S ={์ต๋จ ๊ฑฐ๋ฆฌ์ ํด๋นํ๋ ๋ ธ๋๋ค์ด ํ๋์ฉ ์ถ๊ฐ๋จ}
-
dis[v] = 0 , S={v}
์๊ธฐ ์์ ๊ณผ์ ๊ฑฐ๋ฆฌ๋ 0
-
v์ ์ฐ๊ฒฐ๋์ด ์๋ ๋ค๋ฅธ ๋ ธ๋์ ๋ํ dis ๊ฐ = v์ ํด๋น ๋ ธ๋ ์ฌ์ด ๊ฐ์ ์ ๊ฐ์ค์น
v์ ์ฐ๊ฒฐ๋์ด์์ง ์์ ๋ค๋ฅธ ๋ ธ๋์ ๋ํ dis ๊ฐ = ๋ฌดํ๋์ ๊ฐ
-
๋งค ๋จ๊ณ์์ S์ ํฌํจ๋์ง ์์ ๋ ธ๋ ์ค์ dis๊ฐ ๊ฐ์ฅ ์์ ๊ฐ์ S์ ์ถ๊ฐ
-
์๋ก์ด ๋ ธ๋ u๊ฐ S์ ์ถ๊ฐ๋๋ฉด, S์ ํฌํจ๋์ง ์์ ๋ค๋ฅธ ๋ ธ๋๋ค์ dis๊ฐ์ ์์
- ์์์ ์ด u๋ก ๋ฐ๋์๊ธฐ ๋๋ฌธ์, u๋ฅผ ๊ฑฐ์ณ์ ๊ฐ๋ ๊ฑฐ๋ฆฌ์ ๊ธฐ์กด์ ๊ฑฐ๋ฆฌ๋ฅผ ๋น๊ตํด์ ๋ ์์ ๊ฐ์ผ๋ก dis๋ฅผ ๊ฐฑ์
- dis[w] = min(dis[w], dis[u] + weight[u][w])
๊ตฌํ
- ์ฐ์ ์์ ํ
- visited[] ์ด์ฉ
- ์ ์ ์ ์๊ฐ ์ ๊ฑฐ๋, ๊ฐ์ ์ ์๊ฐ ๋งค์ฐ ๋ง์ ๊ฒฝ์ฐ ์ด ๋ฐฉ์์ด ๋ ๋น ๋ฅผ ์ ์๋ค
์๊ฐ๋ณต์ก๋
-
๋ ธ๋ ๊ฐ์ V, ๊ฐ์ ๊ฐ์ E์ผ ๋
1) ๋ฐฐ์ด์ ์ด์ฉํ๋๊ฒฝ์ฐ
์๊ฐ๋ณต์ก๋ : O(V^2)
2) ํ(์ฐ์ ์์ ํ)๋ฅผ ์ด์ฉํ๋๊ฒฝ์ฐ
์๊ฐ๋ณต์ก๋ : O(ElogV)
์ฐธ๊ณ ์๋ฃ
https://hsp1116.tistory.com/42
https://mattlee.tistory.com/50
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌธ์์ด ์์ถ (0) | 2020.10.05 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌํ ๊ฒฝ๋ก, C++ (0) | 2020.09.21 |
[์๊ณ ๋ฆฌ์ฆ] MST (์ต์ ์ ์ฅ ํธ๋ฆฌ) (0) | 2020.09.21 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๊ฒ ๋๋ฒ, C++ (0) | 2020.09.21 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ฅ (0) | 2020.09.14 |