๐ง ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์
๊ทธ๋ํ G = (V, E) ์์์ ์ ์ u์์ v๋ก์ ๊ฐ์ฅ ์งง์ path์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๋ฅผ ์๋ฏธํฉ๋๋ค.
์ ๋ช ํ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ์ง๋ ๊ฐ์ ์ด ์๋ ๊ทธ๋ํ์ ๋ํด์๋ง ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋ค๋ ์ ์ฝ์ด ์์ต๋๋ค.
๐ง Bellman-Ford ์๊ณ ๋ฆฌ์ฆ
์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ dp ๊ธฐ๋ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ ์ ์ s์์ ๊ทธ๋ํ G์ ์กด์ฌํ๋ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ์ผ๋ก์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ฉฐ, ๋งค ๋จ๊ณ๋ง๋ค ํด๋น ์ต๋จ๊ฑฐ๋ฆฌ์ ๊ธธ์ด๋ฅผ ์ ๋ฐ์ดํธํ๋ฉฐ ์งํ๋๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก๋ ๋ฐฉํฅ(directed) ๊ทธ๋ํ๋ฅผ ๊ฐ์ ํ์ง๋ง, ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ๋ํด์๋ ์ด๋ฅผ ๋ฐฉํฅ ๊ทธ๋ํ๋ก ์๊ฐํ์ฌ ์ ์ฉํ ์ ์์ต๋๋ค.
๋ฒจ๋งํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ค์น๊ฐ ์์์ธ ๊ฐ์ ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ์๋ ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํฉ๋๋ค.
๊ทธ๋ฌ๋ negative cycle์ ๊ฐ์ง๋ค๋ฉด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ์ง ์์ผ๋ฉฐ,
๋ฒจ๋งํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ์ง์ ์ด์ฉํ์ฌ negative cycle์ ๋ํ ๊ฒ์ถ์ ์งํํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ธ ์์ด๋์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
dist(u) ๋ฅผ ์์์ s๋ก๋ถํฐ ์ ์ u๊น์ง์ ์์ ์ค์ ์ต๋จ๊ฒฝ๋ก์ ๊ธธ์ด๋ผ ํ๊ณ ,
dist(i, u) ๋ฅผ edge๋ฅผ i๊ฐ ์ดํ๋ก ์ฌ์ฉํ๋ฉด์ ์ ์ s์์ u๋ก ๊ฐ๋ ์ต๋จ๊ฒฝ๋ก์ ๊ธธ์ด๋ผ ํ๊ฒ ์ต๋๋ค.
์ด๋ ์ค์ํ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ชจ๋ i < j ์ ๋ํ์ฌ
$$dist(u) \leq dist(j, u) \leq dist(i, u)$$
๋ฐ๋ผ์ negetive cycle์ด ์๋ ๊ฒฝ์ฐ dist(u) = dist(|V| - 1 , u)๊ฐ ์ฑ๋ฆฝํฉ๋๋ค.
๐ง ์ |V| - 1์ผ๊น?
์ต๋จ ๊ฒฝ๋ก๋ walk๊ฐ ์๋๋ผ path์ ๋๋ค.
path๋ ์ ์ ์ ๋ฐ๋ณตํด์ ๋ฐฉ๋ฌธํ์ง ์๊ธฐ ๋๋ฌธ์, path์์๋ ์ต๋ |V|๊ฐ์ ์ ์ ์ ๋ฐ๋ณตํ ์ ์๊ณ , ํด๋น path์ ์กด์ฌํ๋ ๊ฐ์ ์ ๊ฐ์๋ |V| - 1 ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๐ง Recurrence Relation
Base Case
i = 1์ธ ๊ฒฝ์ฐ, dist(0, s) = 0 , ๋๋จธ์ง๋ dist(0, v) = ๋ฌดํ๋
๊ท๋ฉ ๋จ๊ณ
dist(i, v) > dist(i, u) + w(u, v) ๋ฅผ ๋ง์กฑํ๋ ๋ชจ๋ ๊ฐ์ (u, v)๋ค ์ค, ์ค๋ฅธ์ชฝ ํญ์ ๊ฐ์ฅ ์๊ฒ ๋ง๋๋ ๊ฐ์ (u', v)๊ฐ ์๋ค๋ฉด
dist(i + 1, v) = dist(i, u') + w(u', v) ์ ๋๋ค.
์ด๋ ์๋ฅผ ๋ง์กฑํ๋ ๊ฐ์ ์ด ์กด์ฌํ์ง ์๋๋ค๋ฉด dist(i + 1, v) = dist(i, v) ์ ๋๋ค.
๐ง ๋ฒจ๋งํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ณผ์
1. ์ด n-1 ๋ฒ ๋ฐ๋ณต๋๋ฉฐ, i๋ฒ์งธ ๋ฐ๋ณต์ด ๋๋ ๋๋ง๋ค ๊ทธ๋ํ G์ ๋ชจ๋ ์ ์ v์ ๋ํ์ฌ
dist(i, v) ๋ฅผ dist(v)์ ์ ์ฅํฉ๋๋ค.
2. ์์ํ ๋ dist์ ๊ฐ์ ์์์ s์ ๋ํด์๋ dist(0, s) = 0์ผ๋ก ์ค์ ํ๊ณ ,
๋๋จธ์ง ์ ์ ๋ค์ ๋ํด์๋ dist(0, v) = '๋ฌดํ๋'๋ก ์ค์ ํฉ๋๋ค.
3. ์ดํ i๋ฒ์งธ ๋ฐ๋ณต๋ง๋ค ๋ชจ๋ ๊ฐ์ (u, v)์ ๋ํด ๋ค์ ์์ ์ ๋ฐ๋ณตํฉ๋๋ค.
v๋ก ๋๋ฌํ๋ ์ต๋จ๊ฒฝ๋ก๋ณด๋ค, u๋ก ๋๋ฌํ๋ ์ต๋จ๊ฒฝ๋ก + u์์ v๋ก์ ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ๋ ์์ ๊ฒฝ์ฐ, ์ฆ
dist(v) > dist(u) + w(u, v)์ธ ๊ฒฝ์ฐ dist(v) ๋ฅผ dist(u) + w(u, v)๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
(์ด๋ w(u, v)๋ ๊ฐ์ (u, v)์ ๊ฐ์ค์น์ ๋๋ค.)
๐ง ์์
dist(A)['๋ฌดํ๋'] ๋ณด๋ค dist(S)[0] + w(S, A)[10]๊ฐ ๋ ์์ผ๋ฏ๋ก dist(A)๋ฅผ dist(S) + w(S, A)๋ก ๋ฐ๊ฟ์ฃผ์์ต๋๋ค.
G๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
3๋ฒ์งธ ๋ฐ๋ณต์ ๋ณด๋ฉด B์ ๊ฒฝ์ฐ์๋ dist(2, E) + w(E, B)์ ๊ฐ์ธ 10์ผ๋ก ์ ๋ฐ์ดํธ ๋๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ด๋ dist(3, E)์ ๊ฐ์ด 8์ด๋ฏ๋ก, dist(3, E) + w(E, B)๋ฅผ ํ๋ฉด 6์ด ๋์ง๋ง, ๋ฐ๋์ ์ด์ ๋ฐ๋ณต์์ ์ ๋ฐ์ดํธ ๋ ๊ฐ๋ง์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๐ง ์๋์ฝ๋
๐ง ์๊ฐ ๋ณต์ก๋
n๋ฒ ๋ฐ๋ณต : $O(n)$
๋งค ๋ฐ๋ณต๋ง๋ค ๋ชจ๋ ๊ฐ์ ๋ค์ ํ์ธํ์ฌ dist ๊ฐ์ ์ ๋ฐ์ดํธ $O(m)$
๋ฐ๋ผ์ $O(nm)$
๐ง ์ค์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ
์ ์๊ณ ๋ฆฌ์ฆ์์ dist(v)๋ฅผ dist(u) + w(u, v) ๋ก ์ ๋ฐ์ดํธ ํ ๋๋ง๋ค pre(v) = u๋ก ์ค์ ํฉ๋๋ค.
์ค์ ๊ฒฝ๋ก๋ ์๊ณ ๋ฆฌ์ฆ์ ์ข ๋ฃ ํ v์์๋ถํฐ pre(v)๋ฅผ ์ญ์ผ๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉฐ ์ญ์ถ์ ํ ์ ์์ต๋๋ค.
๐ง ์์ ์ฌ์ดํด ํ๋ณ
์์ ์ฌ์ดํด์ด ์๋ ๊ฒฝ์ฐ ๋ฐธ๋งํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํด๋น ์์ ์ฌ์ดํด์ ๊ณ์ํด์ ๋๋ค๊ฐ n-1๋ฒ์ ๋ฐ๋ณต์ด ์ข ๋ฃ๋ ๋ค ์ค์ path๊ฐ ์๋ ๋ค๋ฅธ ๊ฐ์ ๋ฐํํ๊ฒ ๋ฉ๋๋ค.
์ฆ ์ด ์ฑ์ง์ ํตํด ๋ฐธ๋งํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ทธ๋ํ์ ์์ ์ฌ์ดํด์ด ์กด์ฌํ๋์ง ํ๋ณํ ์ ์์ต๋๋ค.
n-1 ๋ฒ์งธ ๋ฐ๋ณต ์ดํ n๋ฒ์งธ ๋ฐ๋ณต์ ์ถ๊ฐ๋ก ์ํํ์ฌ dist ๊ฐ์ด ์ ๋ฐ์ดํธ ๋๋ ๊ฒฝ์ฐ ์์ ์ฌ์ดํด์ด ์กด์ฌํฉ๋๋ค.
'๐ฅ Computer Science > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] Adversary Argument (2) | 2022.12.05 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] DP(4) - ํ๋ก์ด๋ ์์ฌ(Floyd Warshall) ์๊ณ ๋ฆฌ์ฆ (0) | 2022.11.13 |
[์๊ณ ๋ฆฌ์ฆ] DP (2) - Edit Distance(ํธ์ง ๊ฑฐ๋ฆฌ) (0) | 2022.11.12 |
[์๊ณ ๋ฆฌ์ฆ] DP (1) - LIS(์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด) (0) | 2022.11.10 |
[์๊ณ ๋ฆฌ์ฆ] DP (0) - DP ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ (0) | 2022.11.09 |