๋ฐ์ํ
Floyd-Warshall ์๊ณ ๋ฆฌ์ฆ์ด๋ ?
Floyd-Warshall
์๊ณ ๋ฆฌ์ฆ์ด๋, ๋ณ์ ๊ฐ์ค์น๊ฐ ์์ด๊ฑฐ๋ ์์ธ ( ์์ ์ฌ์ดํด์ ์๋ ) ๊ฐ์ค ๊ทธ๋ํ์์ ๋ชจ๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ
์ด๋ค.
๋ค์ต์คํธ๋ผ์ ๋ฒจ๋งํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํ๋์ ์ ์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ
์ด๋ค.
Dijkstra ์๊ณ ๋ฆฌ์ฆ
- ์ ํด์ง ์ถ๋ฐ์ง vertex ์์ ๋ถํฐ ๋ค๋ฅธ ๋ชจ๋ vertex์ผ๋ก์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ค.
- ๊ฐ์ฅ ์์ ๊ฐ์ค์น๋ฅผ ํ๋์ฉ ์ ํํด๋๊ฐ๋ค. (
์ฐ์ ์์ ํ
์ด์ฉ )
Floyd-Warshall ์๊ณ ๋ฆฌ์ฆ
- ๋ชจ๋ vertex ์์ ๋ชจ๋ vertex ๋ก์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ํ๋ฒ์ ๊ตฌํ๋ค. ์ฆ, ๋ชจ๋ vertex ์์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ค.
- ๋ชจ๋ ์์ ํํํ๋
์ด์ฐจ์ ๋ฐฐ์ด
์ ์ ์ธํ๊ณ ,Dynamic Programming
๋ฐฉ์์ผ๋ก ๊ฐ ์์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
- ๋ชจ๋ ์์ ํํํ๋
์งํ ๊ณผ์
- iํ๊ณผ j์ด์ ์์์ธ (i, j) ์์๋ vertex i๋ก๋ถํฐ vertex j๊น์ง์ ์ต๋จ ๊ฒฝ๋ก์ด๋ค.
- ์ ํ์ ๐ dist[i, j] = min(dist[i, j], dist[i,k] + dist[k,j])
- vertex i์์ vertex k๋ฅผ ๊ฑฐ์ณ์ vertex j๋ก ๊ฐ ๋, i์์ ๋ฐ๋ก j๋ก ๊ฐ๋ ๊ฒ๋ณด๋ค ์งง๋ค๋ฉด ์ ๋ฐ์ดํธ
์๊ฐ ๋ณต์ก๋
vertex์ ๊ฐฏ์ V ๋งํผ ๋ฐ๋ณต๋ฌธ์ด 3์ค์ผ๋ก ์ํ๋๊ณ ์๊ธฐ ๋๋ฌธ์ O(V3)์ ์๊ฐ ๋ณต์ก๋
๋ฅผ ๊ฐ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ ๋ค์ ์ ๋ณด๋ฅผ V * V ํฌ๊ธฐ์ ํ๋ ฌ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ O(V2)์ ๊ณต๊ฐ ๋ณต์ก๋
๋ฅผ ๊ฐ๋๋ค.
728x90
๋ฐ์ํ
'์๊ณ ๋ฆฌ์ฆ > ์ด๋ก ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ JAVA ] clone() ๊ณผ System.arraycopy() ์ฐจ์ด์ (0) | 2022.09.28 |
---|---|
[ Algorithm / ์๊ณ ๋ฆฌ์ฆ ] Prim's Algorithm ( ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ ) (0) | 2021.10.19 |
[ ์๊ณ ๋ฆฌ์ฆ / Java ] TreeMap (0) | 2021.09.29 |
[ Algorithm ] ํ๋ผ๋ฉํธ๋ฆญ ์์น ( Parametric Search ) (0) | 2021.09.28 |