-
[์๊ณ ๋ฆฌ์ฆ] 04. Min-Cost Spanning Tree๐ณDev/Algorithm 2021. 11. 23. 18:33
Minimum Cost Spanning Tree
Spanning Tree
์ ์ฅ ํธ๋ฆฌ
: ๊ทธ๋ํ์์ ๋ชจ๋ ์ ์ ์ ํฌํจํ๋ ํธ๋ฆฌ๋ก ๊ทธ๋ํ์์ ์ผ๋ถ ๊ฐ์ ์ ์ ํํด์ ๋ง๋ ํธ๋ฆฌ
- ์ต์ ์ฐ๊ฒฐ์ ํด์ผํ๊ธฐ์, ์ ์ ์ ์๊ฐ n์ด๋ฉด, ๊ฐ์ ์ ์๋ n-1
- ํธ๋ฆฌ์ด๋ฏ๋ก ์ฌ์ดํด์ ํฌํจํ์ง ์๊ณ , ์ฌ๋ฌ๊ฐ ์กด์ฌํ ์ ์๋ค
- BFS์ DFS๋ฅผ ์ฌ์ฉํด์ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์๋ค
Min-Cost Spanning Tree
์ต์ ๋น์ฉ ์ ์ฅ ํธ๋ฆฌ
: MST, ๋คํธ์ํฌ์์ ์ต์๋น์ฉ์ ์ ์ฅํธ๋ฆฌ
: ๊ฐ์ค์น๊ฐ ๋ค๋ฅธ ์ํฉ์์, ๋จ์ํ ๊ฐ์ฅ ์ ์ ๊ฐ์ ์ ์ฌ์ฉํ๋ค๊ณ , ์ต์ ๋น์ฉ์ ์๋๋ค
- ๊ฐ์ ์ ๊ฐ์ค์น์ ํฉ์ด ์ต์
- n๊ฐ์ ์ ์ ์ ๊ฐ์ง๋ ๊ทธ๋ํ์ ๋ํด, n-1๊ฐ์ ๊ฐ์ ๋ง์ ์ฌ์ฉ
- ์ฌ์ดํด์ด ํฌํจ๋๋ฉด ์๋๋ค
์ต์ ์ ์ฅ๋น์ฉ ์๊ณ ๋ฆฌ์ฆ
- Kruskal ํฌ๋ฃจ์ค์นผ : ํฌ์๊ทธ๋ํ
- Prim ํ๋ฆผ : ๋ฐ์ง๊ทธ๋ํ
- Solin ์๋ฆฐ
Kruskal & Prim Algorithm
Greedy Algorithm
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
: ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ๊ทธ ์๊ฐ์๊ฐ๋ง๋ค ์ต์ ์ด๋ผ๊ณ ์๊ฐ๋๋ ๊ฒฐ์ ์ ํ๋ ๋ฌธ์ ํด๊ฒฐ๋ฐฉ์
- ์์ ์ ํ์ด ์ดํ์ ์ ํ์ ์ํฅ์ ์ฃผ์ง ์์์ผ ํจ
- ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ๋ฐฉ๋ฒ์ด, ๋ถ๋ถ ๋ฌธ์ ์์๋ ์ต์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด์ด์ผ ํจ
Kruskal Algorithm
: Greedy๋ฅผ ์ด์ฉํ์ฌ, ๋คํธ์ํฌ์ ๋ชจ๋ ์ ์ ์ ์ต์๋น์ฉ์ผ๋ก ์ฐ๊ฒฐํ๋ ๋ต์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ
: ๊ฐ์ฅ ์ ์ ๋น์ฉ์ผ๋ก ๋ชจ๋ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ์
- Union-find Algorithm : ์ฌ์ดํด ํ์ธ
- Priority Queue
- ๊ทธ๋ํ์ ๊ฐ์ ๋ค์ ๊ฐ์ค์น์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
- ์ฌ์ดํด์ ํ์ฑํ์ง ์์ ๊ฐ์ ์ ์ค ๊ฐ์ฅ ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ์ง๋ ๊ฐ์ ์ ์ ํ
- ํด๋น ๊ฐ์ ์ ํ์ฌ์ MST์ ์งํฉ์ ์ถ๊ฐ
Prim Algorithm
: Greedy๋ฅผ ์ด์ฉํ์ฌ, ์์ ์ ์ ์์๋ถํฐ ์ถ๋ฐํด MST๋ฅผ ๋จ๊ณ์ ์ผ๋ก ํ์ฅํด๋๊ฐ๋ ๋ฐฉ๋ฒ
: ์ด๋ค ์ ์ ์ ์์์ผ๋ก ํด๋ ๊ฐ์ ํธ๋ฆฌ๊ฐ ํ์ฑ
- Priority Queue
- ์์ ๋จ๊ณ์์ ์์ ์ ์ ์ priority Queue ์ ๋ฃ์
- ์ ๋จ๊ณ์์ ๋ง๋ค์ด์ง MST ์งํฉ์ ์ธ์ ํ ์ ์ ๋ค ์ค, ๊ฐ์ฅ ๋ฎ์ ๊ฐ์ค์น๋ก ์ฐ๊ฒฐ๋ ์ ์ ์ ์ ํ
- ์์ ๊ณผ์ ์ ํธ๋ฆฌ๊ฐ n-1๊ฐ์ ๊ฐ์ ์ ๊ฐ์ง ๋๊น์ง ๋ฐ๋ณต
'๐ณDev > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] 06. Topological Sort (0) 2021.11.24 [์๊ณ ๋ฆฌ์ฆ] 05. Shortest Path (0) 2021.11.24 [์๊ณ ๋ฆฌ์ฆ] 03. Union-Find (0) 2021.11.22 [์๊ณ ๋ฆฌ์ฆ] 02. DFS & BFS (0) 2021.11.21 [์๊ณ ๋ฆฌ์ฆ] 01. Graph (0) 2021.11.21