๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(Minimum Spanning Tree)

๐Ÿ’ก์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ž€?

์‹ ์žฅ ํŠธ๋ฆฌ(Spanning Tree)

  • ๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  ์ •์ ์„ ํฌํ•จํ•˜๋Š” ์ตœ์†Œ ์—ฐ๊ฒฐ ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„
  • ํŠธ๋ฆฌ์˜ ํŠน์ง•
    • ์ •์ ์˜ ๊ฐœ์ˆ˜ n ๊ฐœ์ธ ์‹ ์žฅ ํŠธ๋ฆฌ์˜ ๊ฐ„์„  ๊ฐœ์ˆ˜๋Š” n-1 ๊ฐœ
    • ๋ชจ๋“  ์ •์ ์ด ์—ฐ๊ฒฐ
    • ์‚ฌ์ดํด ์—†์Œ
    • ์ž„์˜์˜ ๋‘ ์ •์ ์„ ์„ ํƒํ–ˆ์„ ๋•Œ, ๊ทธ ์‚ฌ์ด ๊ฒฝ๋กœ๋Š” ์œ ์ผํ•จ

์˜ˆ์‹œ

์œ„ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•œ ์•„๋ž˜ ์‹ ์žฅ ํŠธ๋ฆฌ ์˜ˆ์‹œ๋“ค

์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST, Minimum Spanning Tree)

  • ์‹ ์žฅ ํŠธ๋ฆฌ ์ค‘ ๊ฐ„์„  ๊ฐ€์ค‘์น˜ ํ•ฉ์ด ์ตœ์†Œ์ธ ์‹ ์žฅ ํŠธ๋ฆฌ

์˜ˆ์‹œ

์œ„ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ

๐Ÿ’ก์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

1. ํฌ๋ฃจ์Šค์นผ(Kruskal) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๊ทธ๋ฆฌ๋””๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ชจ๋“  ์ •์ ์„ ์ตœ์†Œ ๋น„์šฉ์œผ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ์ตœ์  ํ•ด๋‹ต์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ๊ฐ„์„ ์„ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • greedyํ•˜๊ฒŒ ๊ฐ„์„ ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๊ณผ์ •
    1. ๊ฐ„์„  ๊ฐ€์ค‘์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
    2. ๊ฐ„์„  ๋ฆฌ์ŠคํŠธ ์ค‘ ์ž‘์€ ๊ฒƒ๋ถ€ํ„ฐ ์„ ํƒํ•˜๋ฉด์„œ ์‚ฌ์ดํด์„ ํ˜•์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ง‘ํ•ฉ์— ์ถ”๊ฐ€

2. ํ”„๋ฆผ(Prim) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์‹œ์ž‘ ์ •์ ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ์‹ ์žฅ ํŠธ๋ฆฌ ์ง‘ํ•ฉ์„ ๋‹จ๊ณ„์ ์œผ๋กœ ํ™•์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ์ •์ ์„ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ์ด์ „ ๋‹จ๊ณ„์˜ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๊ณผ์ •
    1. ์‹œ์ž‘ ๋‹จ๊ณ„์—์„œ ์‹œ์ž‘ ์ •์ ์„ MST ์ง‘ํ•ฉ์— ํฌํ•จ
    2. ์•ž ๋‹จ๊ณ„์—์„œ ๋งŒ๋“ค์–ด์ง„ MST ์ง‘ํ•ฉ์˜ ์ •์  ์ค‘ ์ตœ์†Œ ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ •์  ์„ ํƒํ•˜์—ฌ ํŠธ๋ฆฌ ํ™•์žฅ
    3. ํŠธ๋ฆฌ๊ฐ€ N-1 ๊ฐ„์„ ์„ ๊ฐ€์งˆ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต