๋ค์ต์คํธ๋ผ๋
- ํ๋์ ์์ ์ ์ ์ผ๋ก๋ถํฐ ๋ชจ๋ ๋ค๋ฅธ ์ ์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋๋ค.
- ํ๋ฆผ์๊ณ ๋ฆฌ์ฆ์ MST๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๊ฐ์ค์น์ ์ ์ ์ KEY๊ฐ์ ๋น๊ตํ์ฌ KEY๊ฐ์ ์ ๋ฐ์ดํธ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค. SSP์์๋ ์ด๋ฅผ Relax๋ผ๊ณ ํํํ๋ค. Relax๋ key๊ฐ์ด ์๊ณ ์ต๋จ ๊ฒฝ๋ก ์ถ์ ๊ฐ(d[v]๋ฅผ ์ด์ฉํ์ฌ d[v]๋ฅผ ์ ๋ฐ์ดํธ ํ ์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ๋ค. Relax๋ ์ ์ ์ KEY๊ฐ์ด ๋ฑ ์ฃผ์ด์ง ๊ฒ์ด ์๋๋ผ ์ต๋จ ๊ฒฝ๋ก ์ถ์ ๊ฐ๋ค์ด ๋์ ๋์ด์จ ๊ฒฐ๊ณผ์ด๋ค. ์ด๋ฐ ์ ์์ ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๋ค๋ฅธ ๊ฒ์ ๋ณผ ์ ์๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ค์ต์คํธ๋ผ๋ ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น์ทํ๊ธฐ ๋๋ฌธ์ [์๋ฃ๊ตฌ์กฐ] MST(2) ํ๋ฆผ(Prim) ์ฐธ๊ณ
[์๋ฃ๊ตฌ์กฐ] MST(2) ํ๋ฆผ(Prim)์ด๋?
ํ๋ฆผ(Prim) ์๊ณ ๋ฆฌ์ฆ ์์ ์ ์ ์์๋ถํฐ ์ถ๋ฐํ์ฌ ์ ์ฅ ํธ๋ฆฌ ์งํฉ์ ๋จ๊ณ์ ์ผ๋ก ํ์ฅํด๋๊ฐ๋ค. ์ ์ฅ ํธ๋ฆฌ ์งํฉ์ ์ธ์ ํ ์ ์ ์ค์์ ์ต์ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์ ์ ์ ์ ํํ์ฌ ์งํฉ์ ์ถ๊ฐํ๋ค. ์ฆ
linerate.tistory.com
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ๋์๊ณผ์
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ์ ๋ชจ๋ ์ ์ ๋ค์ ์ต์ ์ฐ์ ์์ ํ์ ์ฝ์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ต๋จ๊ฒฝ๋ก ๊ฐ์ค์น ๊ฐ d[v]์ด ๊ฐ์ฅ ์์ ์ ์ ์ ์ ํํ์ฌ ์ธ์ ๊ฐ์ ๋ค์ ๋ํด Relax๋ฅผ ์ํํ์ฌ ์์ ์ ์ ์ผ๋ก๋ถํฐ ๊ฐ ์ ์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก ๋น์ฉ์ ๊ณ์ฐํ๋ค.
์ด๊ธฐํ๋ ๊ทธ๋ํ ๋ชจ์ต์ด๋ค.
์์ ์ ์ ์ ์ ์ธํ๊ณ ๋ชจ๋ ์ ์ ์ d[v]๊ฐ์ ∞์ด๋ค.
์ต์ ์ฐ์ ์์ํ์์ d[v]๊ฐ์ด ๊ฐ์ฅ ์์ ์ ์ ์ ์ถ์ถํ๋ฏ๋ก v1 ์ ์ ์ ์์์ผ๋ก ํ์ฌ ๊ฐ์ ์ ํ์ฅํด ๋๊ฐ๋ค.
์ธ์ ํ ๊ฐ์ ์ ์ ํํ์ฌ Relax๋ฅผ ์ํํ๋ค.
๊ฐ์ค์น๊ฐ 8์ธ ๊ฐ์ ์ ์ ํํ ์๋ ์์ผ๋ฉฐ, ์ ํ ์์๋ ๊ตฌํํ๊ธฐ ๋๋ฆ์ด๋ค.
Step 1์์
์ผ๋ก ์ ๋ฐ์ดํธ ๋๋ค.
Step 2์ ๊ฐ์ด Relax๋ฅผ ์ํํ์ฌ d[v4]=8 ๋ก ์ ๋ฐ์ดํธ ํ๋ค.
v1์ ์ธ์ ๊ฐ์ ๋ค์ ๋ํด ๋ชจ๋ Relax๋ฅผ ์ํํ์ผ๋ฏ๋ก,
๋ค์ ์ ์ ์ ์ ํํ๊ธฐ ์ํด d[v]๊ฐ ๊ฐ์ฅ ์์ ์ ์ ์ ์ถ์ถํ๋ค.
๋ฐ๋ผ์ ์ ์ v2๊ฐ ์ถ์ถ์ด ๋์ด ์ธ์ ๊ฐ์ ๋ค์ ๋ํด Relax๋ฅผ ์ํํ๊ฒ ๋๋ค.
Relax ๊ฒฐ๊ณผ d[v4]๋ฅผ ์ ๋ฐ์ดํธ ํ์ง ์๋๋ค.
์ฆ ( v1 , v4 )์ ์ต๋จ ๊ฒฝ๋ก๋ v1 -> v4 ์ด๋ค.
v2์ ๋ชจ๋ ์ธ์ ๊ฐ์ ์ ๋ํด Relax๋ฅผ ์ํํ์ผ๋ฏ๋ก
์ต์ ์ฐ์ ์์ ํ์์ d[v]๊ฐ์ด ๊ฐ์ฅ ์์ ์ ์ ์ ์ถ์ถํ์ฌ ์ ์ v5๊ฐ ์ถ์ถ๋๋ค.
v5์ ๋ชจ๋ ์ธ์ ๊ฐ์ ์ ๋ํด Relax๋ฅผ ์ํํ์ผ๋ฏ๋ก
์ต์ ์ฐ์ ์์ ํ์์ d[v]๊ฐ์ด ๊ฐ์ฅ ์์ ์ ์ ์ ์ถ์ถํ์ฌ ์ ์ v4๊ฐ ์ถ์ถ๋๋ค.
๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ ๋ฐ์ดํธ๋ ํด๋๋๊ณ ์ํด๋ ๋๋ค.
ํ์ง๋ง ๊ทธ๋ฅ ๊ฐ๋งํ ๋๋ ํธ์ด ์ฐ์ฐ์ ์ค์ธ๋ค.
v4์ ๋ชจ๋ ์ธ์ ๊ฐ์ ์ ๋ํด Relax๋ฅผ ์ํํ์ผ๋ฏ๋ก
๋ง์ง๋ง ์ ์ v3๊ฐ ์ถ์ถ๋๋ค.
Dijkstra's ์๊ณ ๋ฆฌ์ฆ์ Prim's ์๊ณ ๋ฆฌ์ฆ๊ณผ ์ ์ฌํ ๋ฐฉ์์ด์ง๋ง key ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ ์ต๋จ ๊ฒฝ๋ก ์ถ์ ๊ฐ d[v]์ ์ฌ์ฉํ๋ฉฐ ์ ๋ฐ์ดํธ๋ฅผ ํ ๋๋ ๊ทธ๋๋ก ๊ฐ์ค์น๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๊ฒ์ด ์๋๋ผ ์ด์ ์ ์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก ์ถ์ ๊ฐ d[v] + ๊ฐ์ค์น ๊ฐ์ ์ ๋ฐ์ดํธํ๋ค.
SSP๋ ์ต๋จ ๊ฒฝ๋ก์ ๊ทธ ๋น์ฉ์ ๊ตฌํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฒฐ๊ณผ ํธ๋ฆฌ๋ฅผ ๋ณด๋ฉด ๊ฐ ์ ์ ์ d[v] ๊ฐ์ ์์ ์ ์ ์ผ๋ก๋ถํฐ ๊ทธ ์ ์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก ๋น์ฉ์ ์๋ฏธํ๋ค.
์๋ฅผ๋ค์ด, d[v5]์ ๊ฐ์ 7์ด๋ฏ๋ก v1 -> v5 ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก ๋น์ฉ์ 7์ด๋ค.
์ค์ ๋ก v1 -> v2 -> v5์ ๊ฒฝ๋ก ์ ๋ชจ๋ ๊ฐ์ค์น๋ฅผ ๋ํ๋ฉด 7์์ ํ์ธํ ์ ์๋ค.
์ฌ๊ธฐ์ "์ต๋จ ๊ฒฝ๋ก" ์์ฒด๋ฅผ ๊ตฌํ๊ณ ์ถ์ ์๊ฐ ์๋ค.
๊ทธ๋์ Relax์ ๊ฒฐ๊ณผ๋ก d[v] ๊ฐ์ด ์ ๋ฐ์ดํธ๊ฐ ๋๋ฉด ์ถ์ถ๋ ์ ์ ์ ๋ถ๋ชจ๋ ธ๋๋ก ์ค์ ํด์ค์ผ๋ก์จ ๊ฐ ์ ์ ์ ๋ถ๋ชจ ์ ์ ์ ๊ธฐ์ตํ ์ ์๋ค. ์๋ฅผ๋ค์ด, Step 2์์ Relax ๊ฒฐ๊ณผ ์ ๋ฐ์ดํธ๊ฐ ๋์์ผ๋ฏ๋ก ์ ์ v2์ ๋ถ๋ชจ๋ v1์ด ๋๋ ๊ฒ์ด๋ค.
Dijkstra's ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ์ฌ d[v]๊ฐ์ด ์์ ์ ์ ์ ํ๋์ฉ ๋ฝ์ ์ธ์ ๊ฐ์ ๋ค์ ๋ํด Relax๋ฅผ ์ํํ์ฌ SSP๋ฅผ ๊ตฌํํ๋ค. ๋์ ๋ฐฉ์์ Prim's ์๊ณ ๋ฆฌ์ฆ๊ณผ ์ ์ฌํ์ง๋ง ์์ ํ ๊ฐ์ง๋ ์๋ค.
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ํจ์จ
๋คํธ์ํฌ์ n๊ฐ์ ์ ์ ์ด ์๋ค๋ฉด, Dijkstra์ ์ต๋จ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ฃผ๋ฐ๋ณต๋ฌธ์ n๋ฒ ๋ฐ๋ณตํ๊ณ ๋ด๋ถ ๋ฐ๋ณต๋ฌธ์ 2n๋ฒ ๋ฐ๋ณตํ๋ฏ๋ก O(n2)์ ๋ณต์ก๋๋ฅผ๊ฐ์ง๋ค.