-
[Algorithm] Kruskal Algorithm(ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ)Algorithm 2020. 9. 6. 03:20๋ฐ์ํ
- ์ด ๊ธ์ (https://m.blog.naver.com/ndb796/221230994142) ๋ธ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ์์ฑํ์์ต๋๋ค.
Kruskal Algorithm
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๊ฒฐ๋ ๊ทธ๋ํ์์ ๊ฐ์ฅ ์ต์ ๋น์ฉ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๋ค๋ฅธ ๋ง๋ก๋ ์ต์ ๋น์ฉ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ๋ง๋ค๊ธฐ ์ํ ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
ํ๋ก๊ทธ๋๋จธ์ค (https://programmers.co.kr/learn/courses/30/lessons/42861?language=cpp) ์ด ๋ฌธ์ ๋ฅผ ์์๋ก ๋ค์ด ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๊ธฐ ์ํ ํต์ฌ ๊ฐ๋ ์ ํฌ๊ฒ 3๊ฐ์ง๊ฐ ์กด์ฌํฉ๋๋ค.
- ์ต์ ๋น์ฉ ์์์ ๋ง๊ฒ ๊ฐ์ ๋ค์ ์ ๋ ฌ์ํต๋๋ค.
- ์ ๋ ฌ๋ ์์์ ๋ง๊ฒ ๊ทธ๋ํ์ ํฌํจ์ํค๋๋ฐ ํฌํจ์ํค๊ธฐ ์ ์๋ ์ฌ์ดํด ํ ์ด๋ธ์ ํ์ธํฉ๋๋ค.
- ์ฌ์ดํด์ ํ์ฑํ ๊ฒฝ์ฐ๋ ํฌํจ์ํค์ง ์์ต๋๋ค.
์ฌ์ดํด์ ํ์ฑ ์ฌ๋ถ๋ union-find ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ๊ทธ๋ํ๋ก ์ฐ๊ฒฐ๋์ด ์๋์ง๋ฅผ ํ์ธํ์ฌ ์ ์ ์์ต๋๋ค.
์์
๋ค์ ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์ต์ ๋น์ฉ ์์์ ๋ง๊ฒ ๊ฐ์ ๋ค์ ์ ๋ ฌ์ํต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ ฌ๋ ์์์ ๋ง๊ฒ ๊ทธ๋ํ์ ํฌํจ์ํต๋๋ค. ๋ค์ ์์๋ฅผ ํ์ธํ ๋ (0, 1) -> (1, 3) -> (0, 2) ์์๋๋ก ํฌํจํ๋ฉด ๋ต์ด ๋์ค๋ ๊ตฌ์กฐ๊ฐ ๋ฉ๋๋ค.
ํด๋น ๊ทธ๋ํ๊ฐ union-find ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๊ฐ์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ค ๊ฐ์ ๋ค์ ๋ฌด์ํ๋ฉด ๋ฉ๋๋ค.
์ด ์์ ๋ค๋ฅด๊ฒ ์ ๋ ฌ๋ ์์๋๋ก ์งํํ๋ค๊ฐ ๋น๊ต ๋ ธ๋๋ผ๋ฆฌ ๊ฐ์ ๊ทธ๋ํ๋ผ๊ณ ํ๋จํ๋ฉด ๊ฑด๋๋ฐ๊ณ ๋ค์ ๊ฐ์ ๋ถํฐ ํฌํจ์ฌ๋ถ๋ฅผ ํ์ธํ๋ฉด ๋ฉ๋๋ค.
์ฝ๋
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ์ด ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.
๋ฐ์ํ'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ๋ค์ต์คํธ๋ผ(Dijkstra) ์๊ณ ๋ฆฌ์ฆ (0) 2020.09.08 [Algorithm] Union - Find (์ ๋์จ ํ์ธ๋)๋? (0) 2020.09.06