์ผ์ƒ/Today I Learned

2023.05.17[์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ]

YJzero 2023. 5. 17. 11:25

๐Ÿ“–์˜ค๋Š˜ ๋ฐฐ์šด  ๊ฒƒ

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 

ํ’€์ด์™„

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

https://www.acmicpc.net/problem/1197

 

1197๋ฒˆ: ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ

์ฒซ์งธ ์ค„์— ์ •์ ์˜ ๊ฐœ์ˆ˜ V(1 ≤ V ≤ 10,000)์™€ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ E(1 ≤ E ≤ 100,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ E๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ ๊ฐ„์„ ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์„ธ ์ •์ˆ˜ A, B, C๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด๋Š” A๋ฒˆ ์ •์ ๊ณผ B๋ฒˆ ์ •์ ์ด

www.acmicpc.net

https://www.acmicpc.net/problem/1922

 

1922๋ฒˆ: ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ

์ด ๊ฒฝ์šฐ์— 1-3, 2-3, 3-4, 4-5, 4-6์„ ์—ฐ๊ฒฐํ•˜๋ฉด ์ฃผ์–ด์ง„ output์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

www.acmicpc.net

 

 

์ฐธ๊ณ 

https://gmlwjd9405.github.io/2018/08/29/algorithm-kruskal-mst.html

https://chanhuiseok.github.io/posts/algo-33/

 

๐Ÿ’ญ๋ฐฐ์šด ์ 

์ด๊ฒŒ ๋ฌด์Šจ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ๊ฐ€.. ์‹ถ์—ˆ์ง€๋งŒ ๊ฐœ๋…์„ ์•Œ๊ณ ๋ณด๋‹ˆ ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ค์šด ๊ฐœ๋…์€ ์•„๋‹ˆ์—ˆ๋‹ค! ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋ฉด์„œ ์ต์ˆ™ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด ๊ด€๊ฑด์ผ ๊ฒƒ ๊ฐ™๋‹ค. ์˜ค๋Š˜ ๊ด€๋ จ ๋ฌธ์ œ ์ข€ ๋” ํ’€์–ด๋ด์•ผ์ง€!