์ต์ ์คํจ๋ ํธ๋ฆฌ (MST, Minimum Spanning Tree)
์คํจ๋ ํธ๋ฆฌ๋, ๊ทธ๋ํ์์ ์ํ ์์ด ๋ชจ๋ ์ ์ ์ ์๋ ๋ถ๋ถ ๊ทธ๋ํ๋ฅผ ์๋ฏธํ๋ค.
์ต์ ์คํจ๋ ํธ๋ฆฌ๋, ์ด๋ฌํ ์คํจ๋ ํธ๋ฆฌ ์ค์์ ๊ฐ์ ์ ๊ฐ์ค์น์ ํฉ์ด ๊ฐ์ฅ ์์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
์ด๋ฌํ ์ต์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํฌ๋ฃจ์ค์นผ(Kruskal)๊ณผ ํ๋ฆผ(Prim) ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค.
ํฌ๋ฃจ์ค์นผ (Kruskal) ์๊ณ ๋ฆฌ์ฆ
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ๊ฐ์ ์ค์์ ๊ฐ์ฅ ๊ฐ์ค์น๊ฐ ์์ ๊ฐ์ ๋ถํฐ ์ฐ๊ฒฐํด ์ฃผ๋ฉด์ ์ต์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ฐ์ ๋ค์ ์ฐ๊ฒฐํ๋ฉด์ ์ํ์ด ๋ฐ์ํ๋ค๋ฉด ํด๋น ๊ฐ์ ์ ๋ฒ๋ฆฌ๊ณ ๋ค์ ๊ฐ์ ์ ์ ํํ๊ฒ ๋๋๋ฐ ์ด ๋, Union-Find ์ฐ์ฐ์ ์ฌ์ฉํ๋ค.
์๊ณ ๋ฆฌ์ฆ
- ๊ฐ์ ๋ค์ ๊ฐ์ค์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
- ๊ฐ์ฅ ๊ฐ์ค์น๊ฐ ์์ ๊ฐ์ ๋ถํฐ ์์๋๋ก ์ํ์ ๋ฐ์์ํค์ง ์๋ ๊ฐ์ ์ ๊ณ ๋ฅธ๋ค.
- ์ต์ ์คํจ๋ ํธ๋ฆฌ์ ์ถ๊ฐํ๋ค.
์ ๊ณผ์ ์์ ๊ฐ์ ์ด ์ํ์ ๋ฐ์์ํค๋ ์ง๋ฅผ Union-Find ์ฐ์ฐ์ ์ฌ์ฉํด์ ํจ๊ณผ์ ์ผ๋ก ๊ฒ์ฌํ ์ ์๋ค.
ํ๋ฆผ(Prim) ์๊ณ ๋ฆฌ์ฆ
ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ์ ์์ ์ ์ ๋ถํฐ ์ถ๋ฐํ์ฌ ์ฐ๊ฒฐ๋ ์ ์ ์ค์ ๊ฐ์ฅ ์์ ๊ฐ์ค์น๋ก ์ฐ๊ฒฐ๋ ์ ์ ์ ์ ํํ๋ฉด์ ์ต์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ฐ์ ์ ๊ธฐ์ค์ผ๋ก ํ๋ ํฌ๋ฃจ์ค์นผ๊ณผ ๋ฌ๋ฆฌ ํ๋ฆผ์ ์ ์ ์ ๊ธฐ์ค์ผ๋ก ์ต์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
์๊ณ ๋ฆฌ์ฆ
- ์์ ์ ์ ์ ์ ํํ๊ณ ์ต์ ์คํจ๋ ํธ๋ฆฌ์ ์ถ๊ฐํ๋ค.
- ์ฐ๊ฒฐ๋์ด ์๋ ์ ์ ์ค์ ๊ฐ์ฅ ์์ ๊ฐ์ค์น๋ก ์ฐ๊ฒฐ๋ ์ ์ ์ ์ ํํ๊ณ , ํธ๋ฆฌ๋ฅผ ํ์ฅํ๋ค.
- 2๋ฒ ๊ณผ์ ์ (์ ์ ๊ฐ์ - 1) ๊ฐ์ ๊ฐ์ ์ ๊ฐ์ง ๋๊น์ง ๋ฐ๋ณตํ๋ค.
ํฌ๋ฃจ์ค์นผ VS ํ๋ฆผ
์ด๋ค ๊ฒฝ์ฐ์ ํฌ๋ฃจ์ค์นผ์ ์ฐ๊ณ , ํ๋ฆผ์ ์ธ์ง๋ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ณด๋ฉด ์ ์ ์๋ค.
ํฌ๋ฃจ์ค์นผ์ ์๊ฐ ๋ณต์ก๋๋ ๊ฐ์ ์ ์ ๋ ฌํ๋ ์๊ฐ(ํต์ ๋ ฌ_ O(logE))๊ณผ ๊ฐ์ ์ ๊ฐ์๋งํผ ์ฐ์ฐ์ด ์คํ(O(E))๋๊ธฐ ๋๋ฌธ์ O(ElogE)๊ฐ ๋๋ค.
ํ๋ฆผ์ ์๊ฐ ๋ณต์ก๋๋ ๋ชจ๋ ์ ์ ์ ์ฐ์ ์์ ํ๋ก ํ์ธ(O(logV)) ํ๊ณ , ๊ทธ ์ ์ ๋ค์ ๋ํ ๊ฐ์ ๋ค์ ํ์ธ(O(E))ํ๊ฒ ๋๊ธฐ ๋๋ฌธ์ O(ElogV)๊ฐ ๋๋ค.
์ฆ ํฌ๋ฃจ์ค์นผ O(ElogE) vs ํ๋ฆผ O(ElogV)์ด๊ธฐ ๋๋ฌธ์,
๊ฐ์ ์ด ๋ง์ ๋๋ ํ๋ฆผ, ๊ฐ์ ์ด ์ ์๋๋ ํฌ๋ฃจ์ค์นผ์ด ๋ ์ ๋ฆฌํด ๋ณด์ธ๋ค.
์ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ๋ฐฑ์ค 1197๋ฒ ์ต์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ํ์ด๋ณด์๋ค.
[Algorithm/Java][๋ฐฑ์ค] 1197๋ฒ ์ต์ ์คํจ๋ ํธ๋ฆฌ
'Algorithm > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ _๋ค์ต์คํธ๋ผ & ๋ฒจ๋งํฌ๋ (0) | 2022.05.20 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ํฌ ํฌ์ธํฐ & ์ฌ๋ผ์ด๋ฉ ์๋์ฐ (0) | 2022.05.18 |