[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ(Kruskal Algorithm)
Kruskal MST Algorithm
์ต์ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ธ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ณด์.
Algorithm Concept
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ Greedy Algorithm์ ์ ์ฉํด์ ๊ฐ์ค์น๊ฐ ๊ฐ์ฅ ์ ์ ๊ฐ์ ๋ค์ ๊ณ์ ์ ํํ๋ค. ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
- ๊ทธ๋ํ์ ๋ชจ๋ ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ๋ฎ์ ์์๋๋ก ์ ๋ ฌ
- ์์๋๋ก ๊บผ๋ด๋ฉด์ MST๋ฅผ ๋ง๋ ๋ค.
- ์ด๋, MST์ ์ถ๊ฐํ๋ฉด ์ฌ์ดํด์ด ๋ง๋ค์ด์ง๋ ๊ฐ์ ์ ์ ์ธํ๋ค.
๋ฌด์ฒ ๊ฐ๋จํด๋ณด์ด์ง๋ง, 3๋ฒ์งธ ์กฐ๊ฑด์ธ ์ฌ์ดํด์ ๊ฒ์ฌํ๋ ๊ฒ์ด ๊ฐ์ฅ ํต์ฌ์ ์ด๊ณ ์ฝ์ง ์์ ๋ด์ฉ์ด๋ค. ์ด๋ฅผ ์ํด์๋ Union Find ๋ฅผ ํตํด ๊ฐ ๊ฐ์ ์ ์ ๋ ์ ์ ๋ค์ด ๊ฐ์ ์งํฉ ๋ด์ ์๋์ง ํ์ธํด์ผํ๋ค.
Example
์ด ๊ทธ๋ํ์์ ์ต์ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ์ฐพ์๋ณด์.
Phase 1
์ฐ์ ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ์์ ์์๋๋ก ์ ๋ ฌ์ ํด์ฃผ์. ๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฌ ํ ์ ์์ ๊ฒ์ด๋ค.
ID | Weight |
---|---|
CG | 2 |
EF | 3 |
BC | 4 |
AC | 5 |
AB | 6 |
FG | 8 |
CD | 9 |
AF | 10 |
AE | 14 |
GH | 15 |
์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ ์ ์ด 10๊ฐ์ด์ง๋ง ์์ ์ ๋ฆฌํ๋ค์ํผ, Spanning Tree ๋ ์ ์ ์ ๊ฐฏ์ - 1 ๊ฐ์ ๊ฐ์ ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ 7๊ฐ๋ง์ด ์ ํ๋ ๊ฒ์ด๋ค.
๋จ์ํ๊ฒ ์๊ฐํด๋ณด๋ฉด ์์์ ๋ถํฐ 7๊ฐ๋ฅผ ๊ณ ๋ฅด๋ฉด ๋ ๊ฒ ๊ฐ์ง๋ง, ์ฐ๋ฆฌ๋ ์ฌ์ดํด์ ๊ณ ๋ คํด์ผํ๋ค. ๋ฐ๋ผ์ ์ ๋์จ ํ์ธ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ๊ฐ ๋ ธ๋์ ๋ฃจํธ๋ ธ๋๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด์ ๊ฐ ๋ ธ๋ ์์ ์ผ๋ก ์ต์ด์ ์ด๊ธฐํ ํ๋ค.
Phase 2
๊ฐ์ฅ ๊ฐ์ ์ ๋น์ฉ์ด ์ ์ {C}์ {G}๋ฅผ ๊บผ๋ด์ Union Find ๋ฃ๋๋ค. merge ์ฐ์ฐ์ ์ด์ฉํ๊ฒ ๋๋ฉด C๊ฐ ๋ฃจํธ๋ ธ๋๊ฐ ๋๊ณ G๊ฐ ๊ทธ ๋ฐ์ผ๋ก ๋ถ๊ฒ ๋๋ค. merge ์ฐ์ฐ ์์๋ find ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ดํด์ด ์กด์ฌํ๋์ง ํ์ธํ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ดํด์ด ์กด์ฌํ์ง ์๋๋ค๋ฉด ๋ ์ ์ ์ ํ ์งํฉ์ผ๋ก ํฉ์น ์ ์๋ค. ๋ฐ๋ผ์ ๋ฃจํธ๋ ธ๋๋ฅผ ์ ์ฅํ๋ ํ ์ด๋ธ์์ C๋ ์๊ธฐ ์์ ์, G๋ C๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ซ์๋ฅผ ์ฌ์ฉํ์ง๋ง ์ด ์์ ์์๋ ์ํ๋ฒณ์ ์ฌ์ฉํด์ ํํํ๋๋ก ํ๊ฒ ๋ค. C ๊ฐ G๋ณด๋ค ์ฌ์ ์์ ์์ผ๋ก ์์ ์์ผ๋ฏ๋ก ๋ฃจํธ๋ ธ๋๋ก ์ง์ ํ๋ค.
์ด ์์ ์์ MST๋ {C, G} ๊ฐ ๋๋ค.
Phase 3
๋ค์์ผ๋ก ๋น์ฉ์ด ์ ์ ๊ฐ์ ์ ์ด๋ฃจ๋ ์ ์ {E} ์ {F}๋ฅผ ์ ํํ๋ค. ์ ๋์จ ํ์ธ๋์ ๋ฃ์ผ๋ฉด ์์ ๊ฐ์ด ๋ฃจํธ๋ ธ๋ ํ ์ด๋ธ์ด ์ ๋ฐ์ดํธ ๋๊ณ , MST๋ {C, G}, {E, F} ๋ก ๊ตฌ์ฑ๋๋ค.
Phase 4
ํ๋ฒ ๋ ์งํํ๋ฉด B์ C๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ ์ด ์ ํ๋๋๋ฐ, C๋ ์ด๋ฏธ {C, G}๋ก ํฉ์ณ์ ธ ์๊ธฐ ๋๋ฌธ์ ์ ๋์จ ํ์ธ๋์ merge ์์๋ {C} ์ {C, G}๋ฅผ ํฉ์น๊ฒ ๋๋ค. merge ์์๋ ํธ๋ฆฌ ๋ถ๊ท ํ์ ์ต์ํํ๊ธฐ ์ํด์ ๋ ํธ๋ฆฌ ์ค ๊ธธ์ด๊ฐ ๋ ์งง์ ํธ๋ฆฌ์ ๋ฃจํธ๋ ธ๋์ ๋ค๋ฅธ ํธ๋ฆฌ๋ฅผ ๋ถ์ด๊ฒ ๋๊ธฐ ๋๋ฌธ์ {C, G}๋ B์๋์ ๋ถ์ด ์๊ฒ ๋๋ค. ๋ฐ๋ผ์ ๋ฃจํธ ๋ ธ๋ ํ ์ด๋ธ ์์ C์ ๋ฃจํธ๋ ธ๋๊ฐ B๋ก ์ ๋ฐ์ดํธ ๋๋ค. ์์ง find ํจ์๋ฅผ ์ํํ์ง ์์๊ธฐ ๋๋ฌธ์ G์ ๋ฃจํธ๋ ธ๋๋ C๋ก ๊ณ์ ๋จ์์๋๋ค.
Phase 5
๋ค์์ผ๋ก ๋น์ฉ์ด ์ ์ ๊ฐ์ ์ ์ด๋ฃจ๋ ์ ์ {A}์ {C}๋ฅผ ์ ํํ๋ค. ์ ๋์จ ํ์ธ๋๋ฅผ ํตํด ํฉ์น๋ฉด C ๊ฐ ์ํด์๋ ๋ฃจํธ๋ ธ๋ B์ ํธ๋ฆฌ ๋์ด๊ฐ ๋ ์งง๊ธฐ ๋๋ฌธ์ A๋ฅผ ๋ฃจํธ๋ ธ๋๋ก ์งํฉ์ ํธ์ ๋๋ค.
Phase 6
๋ค์ ์ ์ ์ธ {A} ์ {B}๋ฅผ ์ ํํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋์จ ํ์ธ๋๋ก ์ ๋์จ ์ฐ์ฐ์ ์ํํ๊ฒ ๋๋ฉด, ๋ฃจํธ ๋ ธ๋ ํ ์ด๋ธ์ A์ B์ ๋ํด ๊ฐ์ ๋ฃจํธ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ๋๋ฌธ์, ์ด๋ฏธ ํ ํธ๋ฆฌ ์์ ์ํ ์ ์ ๋ค์ด๋ผ๊ณ ํ๋จํ๋ค. ๋ฐ๋ผ์ ๋ณ ๋ค๋ฅธ ์ฐ์ฐ์์ด ๋ฐํ๋๋ค. ์ ๋์จ ์ฐ์ฐ์ ํตํด ๋ ์ ์ ์ด ์ด๋ฏธ ํ ํธ๋ฆฌ์ ์๋ค๋ ๊ฒ์ด ํ์ธ๋์๋ค๋ฉด, ๊ฐ์ ์ MST์ ์ถ๊ฐํ๋ฉด ์๋๋ค. ํธ๋ฆฌ์์ ์๋ ๋ ์ ์ ์ ์๋ก์ด ๊ฐ์ ์ผ๋ก ์๊ฒ๋๋ฉด ์ฌ์ดํด์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ MST์ ์กฐ๊ฑด์ ์๋ฐฐ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ AB๋ MST์ ์ถ๊ฐ๋์ง ์๊ณ ๊ฑด๋๋ด๋ค.
More Steps..
์ ๊ณผ์ ๋ค์ ๊ณ์ ๋ฐ๋ณตํ๋ฉด์ ํ ์ด๋ธ์ ๋ง์ง๋ง ๊ฐ์ ๊น์ง ๊ฒ์ฌํ๊ฒ ๋๋ฉด ์์๊ฐ์ ํ ์ด๋ธ์ด ์์ฑ๋๋ค. ์ฌ์ดํด์ด ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ์ ๊ฑฐํ ๊ฐ์ ๋ค์ ๋ชจ๋ ์์ ๊ณ ๊ฐ์ ๋ค์ ๊ฐ์ค์น๋ฅผ ํฉํด๋ณด๊ฒ๋๋ฉด ์๋์ ๊ฐ์ด ๊ฐ์ค์น์ ํฉ์ด 43์ธ ์ต์ ์ ์ฅ ํธ๋ฆฌ๊ฐ ์์ฑ๋๋ค.
'๐ฎ ์จ-์์ค > ๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ์ต๋จ๊ฒฝ๋ก(Shortest Path) (0) | 2021.07.18 |
---|---|
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ(Prim's Algorithm) (0) | 2021.07.18 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ์ต์ ์ ์ฅ ํธ๋ฆฌ(MST) (1) | 2021.07.18 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ์๊ณ ๊ฒฝ๋ก(Critical Path) (0) | 2021.07.18 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ๊ฐํ ์ฐ๊ฒฐ ์์(Strongly Connected Component) (0) | 2021.07.18 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote