๐ ๋ฒจ๋จผ-ํฌ๋ ์๊ณ ๋ฆฌ๋ฌ
๋จ์ผ ์์์ ์ต๋จ๊ฒฝ๋ก
๋ฒจ๋จผ-ํฌ๋ ์๊ณ ๋ฆฌ๋ฌ
- ๋ฌธ์ ์ ์ดํด: ๋จ์ผ ์์์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ๋ฌ
- ์ถ๋ฐ ์ง์ ์ผ๋ก๋ถํฐ ๋๋จธ์ง ๋ค๋ฅธ ๋ชจ๋ ์ง์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๋ฌธ์
- ์์ ์ฌ์ดํด(negative cycle)์ด ์์ด์ผ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ์ ์์ (์ค์ ๋ฌธ์ ์์ ์์ ์ฌ์ดํด์ด ์๋์ง์๋์ง ์ฌ๋ถ๋ ํ์ ํ ์ ์์, ๊ทธ๋์ ๋ฒจ๋จผํฌ๋๊ฐ ์ข์, ์ฌ๋ถ๋ฅผ ํ์คํ ๋ชฐ๋ผ๋ ์๋ฐฉ์ด ๋๋๊น)
- ์ข
๋ฅ
- ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ๋ฌ
- ์์ฌ์์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฆ
- ๊ทธ๋ํ์ ๊ฐ์ ๊ฐ์ค์น๊ฐ ์์๊ฐ ์๋๋ผ๊ณ ๊ฐ์ (๋ฒ์ฉ์ฑ์ด ๋จ์ด์ง)
- ๋ฒจ๋จผ-ํฌ๋ ์๊ณ ๋ฆฌ๋ฌ(Bellman-Ford algorithm)
- ๋์ ๊ณํ๋ฒ์ ์ฌ์ฉ
- ์์์ ๊ฐ์ ๊ฐ์ค์น๋ฅผ ๊ฐ๋ ๊ทธ๋ํ์ ๋ํด์๋ ์ ํํ๊ฒ ๋์
- ์ถ๋ฐ์ ์์ ๋๋ฌํ ์ ์๋ ์์ ์ฌ์ดํด์ด ์กด์ฌํ์ง ์๋ ํ ์ ํํ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ฉฐ ์์ ์ฌ์ดํด์ด ์๋ค๋ฉด ๊ทธ ์กด์ฌ๋ฅผ ์๋ ค์ค
- ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ๋ฌ
- ๋ฌด์์ ๊ธฐ๋ฒ: 2์ฅ ์ฐธ์กฐ, n!
- ์ต์ ๋ถ๋ถ๊ตฌ์กฐ: 2์ฅ ์ฐธ์กฐ
์์ ์ฌ์ดํด
A -( 1 )โ B -( 2 )โ C -( -3 )โ
๋๋๋ง๋ค ๊ฐ์ค์น๊ฐ ๋ฌดํํ ์์์ง
๐ซ Bellman-Ford Algorithm
ํฌ๋์ด ๋จผ์ ๋ง๋ค์์ง๋ง, ์ด๋ฅผ ๊ฐ์ ํ ๋ฒจ๋จผ์ด ๋ ๋ค์๋์ฌ์.
ํฌ๋ ์๊ณ ๋ฆฌ๋ฌ์ด๋ผ๊ณ ๋ ๋ถ๋ฆ
- ๋ฌธ์ ์ ์ํ์ ์ ์
- ์ต์ข ๋ชฉํ: ์์ ์ ์ ์์ ๊ฐ ์ ์ ์ผ๋ก์ ์ต๋จ ๊ฒฝ๋ก
- ์ต์ฐ์ ๋ชฉํ: ์์ ์ ์ ์์ ๊ฐ ์ ์ ์ผ๋ก์ ์ต๋จ ๊ฒฝ๋ก์ ๊ธธ์ด
- V ={1, โฆ, n}, E๊ฐ ์ฃผ์ด์ก์ ๋ ์ถ๋ฐ์ ์์ ์ ์ d๊น์ง ์ต๋จ๊ฒฝ๋ก๋ ์ต๋ n-1๊ฐ ๊ฐ์ ์ ๊ฑฐ์นจ
- ์ถ๋ฐ์ ์์ ์ต๋ n-1๊ฐ ๊ฐ์ ์ ๊ฑฐ์ณ ์ ์ d์ ๋๋ฌํ๋ ์ต๋จ ๊ฒฝ๋ก์ ๊ธธ์ด๋ ๋ค์ ์ค ์ต์๊ฐ
- โข ์ถ๋ฐ์ ์์ ์ต๋ n-2๊ฐ ๊ฐ์ ์ ๊ฑฐ์ณ ์ ์ 1์ ๋๋ฌํ๋ ์ต๋จ ๊ฒฝ๋ก ๊ธธ์ด+<1,d> ๊ฐ์ค์น
- โข ์ถ๋ฐ์ ์์ ์ต๋ n-2๊ฐ ๊ฐ์ ์ ๊ฑฐ์ณ ์ ์ 2์ ๋๋ฌํ๋ ์ต๋จ ๊ฒฝ๋ก ๊ธธ์ด+<2,d> ๊ฐ์ค์น
- โข โฆ
- โข ์ถ๋ฐ์ ์์ ์ต๋ n-2๊ฐ ๊ฐ์ ์ ๊ฑฐ์ณ ์ ์ n์ ๋๋ฌํ๋ ์ต๋จ ๊ฒฝ๋ก ๊ธธ์ด+<n,d> ๊ฐ์ค์น
- d๋ 1~n์ด๋ผ ์ค๋ณต๋๋ ๊ฒฝ์ฐ (๊ฐ๋ ๊ณณ ๋ ๊ฐ๋ ๊ฒฝ์ฐ)๊ฐ ์์ ์์์
- ์ํ์ ๊ท๋ฉ๋ฒ
- ๊ท๋ฉ ์กฐํญ: ์ถ๋ฐ์ ์์ ๊ฐ ์ ์ ๊น์ง ์ต๋ i-1๊ฐ์ ๊ฐ์ ์ ๊ฑฐ์น๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์๋ค๋ฉด ์ถ๋ฐ์ ์์ ๊ฐ ์ ์ ๊น์ง ์ต๋ i๊ฐ์ ๊ฐ์ ์ ๊ฑฐ์น๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ ์ ์์
- ๊ธฐ๋ณธ ์กฐํญ: ์ถ๋ฐ์ ์ ๋ํ ์ต๋จ ๊ฒฝ๋ก๋ 0์ด๊ณ ๋๋จธ์ง ์ ์ ๋ค์ ๋ํ ์ต๋จ ๊ฒฝ๋ก๋ โ
- ์ถ๋ฐ์ s์์ ์ต๋ i๊ฐ์ ๊ฐ์ ์ ๊ฑฐ์ณ ์ ์ d์ ๋๋ฌํ๋ ์ต๋จ ๊ฒฝ๋ก์ ๊ธธ์ด๋ฅผ Di(d)๋ผ ํ๊ณ ๊ฐ์ <v1, v2>์ ๊ฐ์ค์น๋ฅผ w(v1, v2)๋ผ ํ๋ฉด
์์น์ 2์ฐจ์์ธ๋ฐ, ๋ค์ ๊ณต๋ถํ๋ค๋ณด๋ฉด 1์ฐจ์์ผ๋ก๋ ์ถฉ๋ถํด์ง (i๊ฐ ์ฌ๋ผ์ง) ๊ทธ๋์ Di(d) ์ฒ๋ผ ์๋์ฒจ์๋ก i๋ฅด ๋
PPT ์ฌ์ง
์ ์๋ฏธ
๋ชจ๋ ๊ฐ์ ๋ค ์ค, k์์ d๋ก ๊ฐ๋ ๊ฐ์ ๋ค ์ค, ๊ฐ์ฅ ์งง์ ๋์ ๋์์ผ๋ก..
d๊ฐ 10์ด๋ผ ์น๊ณ , d์ ์ด์ด์ง ์ ์ ์ด 2 3 6์ด๋ผ๊ณ ํ๋ฉด, k๋ 2, 3, 6์ด๊ณ ์ด์ค์์ ๊ฐ์ฅ ๊ฐ์ค์น๊ฐ ์งง์ ๋์ด ๋์
min[Di-1(d) ๋ ์์ด๋ ๋๋๋ฐ
์Why, ์ผ๋จ ๋ ๊ธธ์ด์ง ์๋ ์์ด, ์ต์ ์ด์์ผ๋๊น
์ ์ด์ง๋ฉด ์ต๋จ ๊ฒฝ๋ก๊ฐ ์งง์์ง๋ค ๊ทผ๋ฐ ์ด๊ฒ ๋ณํ์ง ์์ ์ ์๋ค!! = ๊ธฐ์กด ๊ฐ์ ์ ์งํ ์ ์๋ค!! ๋ฅผ ์๋ฏธํ๊ธฐ ์ํด ๋ ๊ฒ, ์์ด๋ ์๋ฏธ๋ ๊ฐ์
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ๋ฌ์์ ๋ณด์๋ ์ ์์ ๋งค์ฐ ์ ์ฌ(์ค์ ๋ก ๊ฐ์ ์ ์, distance ๋ฐฐ์ด ์ป๋๊ฒ์ฒ๋ผ) ๊ฐ ๊ฐ์ <k, d>๋ฅผ n-1๋ฒ ์ํ(relaxation: ๋ ๋์ ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝ, ๋ ๋์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๊ฒ)
~๋ฒ ์ํ ํ๋ค
@ TODO : ์ e ์ง์..?
2์ฐจ์ ๋ฐฐ์ด x = ์ ์ y = ๊ฐ ์ํ (i-1, i, i+1, โฆ) x, y = ๊ฑฐ๋ฆฌ
(1,5) 4
(5,7) 6
i-1 1=10 5=20 7=40 i 1=8 5=14 7=26 i+1 i= 5=12 7=20
์ด์ฐจํผ ๊ฐ์ด ๋ฐ๋์์ผ๋ฉด ๋ค์ ์ํ ๋ ๊ฐ์ด ๊ฐฑ์ ๋๋ ๊ฒ์ด ์๋ช (๋ณ๊ฒฝ์ด ์งง์์ง๋ ๊ฒฝ์ฐ ๋ฐ์ ์์ผ๋๊น)
๊ทธ๋ฌ๋ฉด ๊ณ์ฐํ ๋ ๊ทธ๋ฅ ์๋ก ๊ฐฑ์ ๋ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ฐ๋ก ๊ณ์ฐ ํ์
โ ๋ณ๊ฒฝ๋๋ ๊ฐ์ ๊ธฐ์กด๊ฑฐ์ ๋ฎ์ด์ฐ๊ธฐ ํ์ โ 1์ฐจ์ ๋ฐฐ์ด๋ง ์์ด๋ ๋๋ค
๐ซง ๋ฒจ๋จผ-ํฌ๋ ์๊ณ ๋ฆฌ๋ฌ_์์
n-1 ๋งํผ ๋ฃจํ๋ฅผ ๋๋ฆฌ๊ณ , ํ ๋ฒ ๋ ๊ธฐ์ค ์ฐ์ฐ์ ํ๋๋ฐ, ๋ ์ค์ด๋ค๋ฉด ๊ทธ๊ฑด ์์ ์ฌ์ดํด์ด๋ค.
๐ซง ๋ฒจ๋จผ-ํฌ๋ ์๊ณ ๋ฆฌ๋ฌ_๊ฐ์
์ด๋ค ์์๋ก ์ฒ๋ฆฌํ๋๋์ ๋ฐ๋ผ ๊ณ์ฐ๋์ด ์ค ์ ์๋ค
A -(1)โ B -(1)โ C -(1)โ D -(1)โ E
A๋ฅผ ์์์ ์ผ๋ก ํ ๋
ใฑ) (D, E), (C, D), (B, C), (A, B)
ใด) (A, B), (B, C), (C, D), (D, E)
ใฑ์ ๋ง์ง๋ง ๋ฐ๋ณต๊น์ง ๊ฐ์์ผ ์ต๋จ ๊ฒฝ๋ก๊ฐ ๊ฒฐ์
ใด์ ์ฒซ ๋ฐ๋ณต (ํ ๋ฒ์ ๋ฐ๋ณต) ์ผ๋ก ์ต๋จ๊ฒฝ๋ก๊ฐ ๊ฒฐ์
๋ฐ๋ผ์ ๋ฐฐ์ด์ ๋ ๋ณํ๊ฐ ์์ผ๋ฉด, ๋ฐ๋ณต์ ๋ฉ์ถ๊ณ ์๊ณ ๋ฆฌ๋ฌ์ ์คํ์ ์ข
๋ฃ
์ธํ(ne) โ O(ne)
Moore์ SPFA (Shortest Path Faster Algorithm)
์ ๋จ๊ณ์ ํ ๋จ๊ณ์์ D[u]๊ฐ ๋ณ๊ฒฝ๋ ๊ฐ์ (u, v)๋ง ์ดํด๋ณธ๋ค.
์ํ ํ์๋ฅผ ์ค์ผ ์ ์๋ค.