๐์ค๋ ๋ฐฐ์ด ๊ฒ
Spanning Tree
: ๊ทธ๋ํ ๋ด์ ๋ชจ๋ ์ ์ ์ ํฌํจํ๋ ํธ๋ฆฌ
=> ๋ชจ๋ ์ ์ ๋ค์ด ์ฐ๊ฒฐ๋์ด ์๊ณ n๊ฐ์ ์ ์ ์ ๊ฐ๋ ๊ฒฝ์ฐ (n-1)๊ฐ์ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋๋ค.
์ต์ ์ ์ฅ ํธ๋ฆฌ(MST = Minimum Spanning Tree)
: Spanning Tree ์ค ์ฌ์ดํด์ ๋ง๋ค์ง ์๊ณ ๊ฐ์ ๋ค์ ๊ฐ์ค์น ํฉ์ด ์ต์์ธ ํธ๋ฆฌ
=> ๊ฐ ๊ฐ์ ์ ๊ฐ์ค์น๋ฅผ ๊ณ ๋ คํ์ฌ ์ต์ ๋น์ฉ์ Spanning Tree๋ฅผ ์ ํํ๋ ๊ฒ. ๋จ์ํ ๊ฐ์ฅ ์ ์ ๊ฐ์ ์ ์ฌ์ฉํ๋ค๊ณ ํด์ ์ต์ ๋น์ฉ์ด ์ป์ด์ง๋ ๊ฒ์ด ์๋!
ex) ํต์ ๋ง, ๋๋ก๋ง, ์ ํต๋ง ๋ฑ... ์ด๋ค ๊ทธ๋ํ ํํ์์ ๊ธธ์ด, ๊ตฌ์ถ ๋น์ฉ, ์ ์ก ์๊ฐ ๋ฑ์ ์ต์๋ก ๊ตฌํ๋ ๊ฒฝ์ฐ
MST ๊ตฌํ ๋ฐฉ๋ฒ
1. ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ
: ๊ทธ๋ฆฌ๋(ํ์๋ฒ) ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋
-> ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ์ ์ฌ์ดํด ์์ด ์ต์ ๋น์ฉ์ผ๋ก ์ฐ๊ฒฐํ๋ ์ต์ ํด๋ต์ ๊ตฌํ๋ ๊ฒ
์ฌ์ดํด์ ์์ฑํ๋์ง ํ๋จํ๋ ๊ฒ์ด Union-find ์๋ฃ๊ตฌ์กฐ์ด๋ค.
* Union-find๋?
: ์๋ก์ ์งํฉ์ ํํํ๋ ์๋ฃ๊ตฌ์กฐ
-> ์๋ก ๋ค๋ฅธ ๋ ์งํฉ์ ๋ณํฉํ๋ union ์ฐ์ฐ + ์งํฉ ์ฐ์๊ฐ ์ด๋ค ์งํฉ์ ์ํด์๋์ง ์ฐพ๋ find ์ฐ์ฐ
- union-find ์์๋ ๊ฐ ๋ ธ๋๊ฐ ์ฐ๊ฒฐ๋ ์ต์ ๋ ธ๋๋ฅผ root ๋ ธ๋๋ก ๊ฐ๊ฒ ๋๋ค.
๋ฐ๋ผ์ ๊ฐ ๋ ธ๋๋ฅผ ๋น๊ตํ๋ฉด์ ์์ ๊ฐ์ ๋ถ๋ชจ ๋ ธ๋๋ก ์ ์ฅํ๋ค. ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก union ์ฐ์ฐ์ ์ํด ํฉ์ณ์ง๊ฒ ๋๋ ๊ฒ! ๋ง์ฝ ์ด๋ฏธ ๋ถ๋ชจ ๋ ธ๋๊ฐ ๊ฐ๋ค๋ฉด? ์ฐ๊ฒฐ๋ ์ํ์ด๊ธฐ ๋๋ฌธ์ ์ ์ธํ๊ณ ๋ค์์ผ๋ก ๋์ด๊ฐ๋ฉด ๋๋ค.
2. Prim MST ์๊ณ ๋ฆฌ์ฆ
: ์์ ์ ์ ์์๋ถํฐ ์ถ๋ฐํ์ฌ ์ ์ฅํธ๋ฆฌ ์งํฉ์ ๋จ๊ณ์ ์ผ๋ก ํ์ฅ ํด๋๊ฐ๋ ๋ฐฉ๋ฒ
๊ด๋ จ ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/42861
ํ์ด์
https://www.acmicpc.net/problem/1197
https://www.acmicpc.net/problem/1922
์ฐธ๊ณ
https://gmlwjd9405.github.io/2018/08/29/algorithm-kruskal-mst.html
https://chanhuiseok.github.io/posts/algo-33/
๐ญ๋ฐฐ์ด ์
์ด๊ฒ ๋ฌด์จ ์๊ณ ๋ฆฌ์ฆ์ธ๊ฐ.. ์ถ์์ง๋ง ๊ฐ๋ ์ ์๊ณ ๋ณด๋ ๊ทธ๋ ๊ฒ ์ด๋ ค์ด ๊ฐ๋ ์ ์๋์๋ค! ๊ด๋ จ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ฉด์ ์ต์ํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ๊ฒ์ด ๊ด๊ฑด์ผ ๊ฒ ๊ฐ๋ค. ์ค๋ ๊ด๋ จ ๋ฌธ์ ์ข ๋ ํ์ด๋ด์ผ์ง!
'์ผ์ > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2023.06.01 [color-thief-react] (0) | 2023.06.01 |
---|---|
2023.05.24[nextjs] (0) | 2023.05.24 |
2023.05.16 (0) | 2023.05.16 |
2023.05.04[์น ์ ๊ทผ์ฑ] (0) | 2023.05.04 |
2023.04.26[์น ์ ๊ทผ์ฑ ๋ฆฌํฉํ ๋ง ์ค] (0) | 2023.04.26 |