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

๐Ÿ“š ์ „๊ณต ๊ณต๋ถ€/๋ฌธ์ œํ•ด๊ฒฐ๊ธฐ๋ฒ•

[๋ฌธ์ œํ•ด๊ฒฐ๊ธฐ๋ฒ•] 8. ์„œ๋กœ์†Œ์ธ ์ง‘ํ•ฉ์˜ ํ‘œํ˜„ (Disjoint Sets)

 

์„œ๋กœ์†Œ์ธ ์ง‘ํ•ฉ์˜ ํ‘œํ˜„ (Disjoint Sets)

  • ์„œ๋กœ์†Œ์ธ ์ง‘ํ•ฉ : ์ „์ฒด์ง‘ํ•ฉ์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ๋“ค ์ค‘, ๋‘˜์„ ๊ณ ๋ฅด๋ฉด ๊ต์ง‘ํ•ฉ=๊ณต์ง‘ํ•ฉ, ์ „์ฒด ํ•ฉ์ง‘ํ•ฉ=U
  • U์˜ ๋‘ ์›์†Œ๊ฐ€ ๊ฐ™์€ ๋ถ€๋ถ„์ง‘ํ•ฉ์˜ ์›์†Œ์ธ์ง€ ์•„๋‹Œ์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์„๊นŒ?
  • ์‹ ์žฅํŠธ๋ฆฌ : ๊ทธ๋ž˜ํ”„ G์˜ ๋…ธ๋“œ๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š”, E์— ์†ํ•˜๋Š” ์—์ง€๋กœ ๋งŒ๋“  ํŠธ๋ฆฌ
  • ์ตœ์†Œ์‹ ์žฅํŠธ๋ฆฌ : ํŠธ๋ฆฌ์— ์†ํ•œ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ๊ฐ€์žฅ ์ž‘์€ ์‹ ์žฅ ํŠธ๋ฆฌ.

 

์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ (MST) ๋งŒ๋“ค๊ธฐ

  1. Prim’s algorithm : ํ˜„์žฌ ์ง‘ํ•ฉ(๋…ธ๋“œ๋“ค)๊ณผ ์—ฐ๊ฒฐ๋œ ์—์ง€ ์ค‘ ๊ฐ€์ค‘์น˜๊ฐ€ ์ตœ์†Œ์ธ ๊ฒƒ์„ MST ์ง‘ํ•ฉ์— ํฌํ•จ์‹œํ‚ด.
    1. ๊ตฌํ˜„๋ฒ•์— ๋”ฐ๋ผ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์ฐจ์ด๋‚จ
    2. ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ = ํŠน์ • ์‹œ์ž‘๋…ธ๋“œ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ๋…ธ๋“œ๋“ค๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•จ. ์œ /๋ฌดํ–ฅ ๊ทธ๋ž˜ํ”„ ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ = ๋ชจ๋“  ๋…ธ๋“œ๋“ค์„ ์ตœ์†Œ๋น„์šฉ์œผ๋กœ ์—ฐ๊ฒฐ / ๋‘ ๋…ธ๋“œ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋Š” ์ตœ๋‹จ๊ฑฐ๋ฆฌ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Œ. ๋ฌดํ–ฅ ๊ทธ๋ž˜ํ”„
    3. ๋งค๋ฒˆ ๋‚จ์•„์žˆ๋Š” ์—์ง€ ์ค‘ ์ตœ์†Œ๋ฅผ ์ฐพ๋Š”๋‹ค๋ฉด, $O(|V|^2)$
    4. ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ํ†ตํ•ด ํ•œ๋ฒˆ์— $O(log |V|)$ → ๋ฐ˜๋ณต ์‹œ $O((|V|+|E|) log |V|)$
  2. Kruskal’s algorithm : ๊ทธ๋ฆฌ๋””์˜ ์ผ์ข…, ์—์ง€๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ํ›„ ์‚ฌ์ดํด์ด ์—†๋„๋ก ์ž‘์€๊ฒƒ๋ถ€ํ„ฐ ์„ ํƒ
    1. ์ •ํ™•๋„๋Š” ์ž๋ช…
    2. ์‰ฌ์šด ๊ตฌํ˜„ : ๋ชจ๋“  ๋…ธ๋“œ์— ๋‹ค๋ฅธ ์ƒ‰์„ ํ• ๋‹นํ•˜์—ฌ, ์—์ง€๋กœ ์—ฐ๊ฒฐ๋˜๋ฉด ๊ฐ™์€ ์ƒ‰์œผ๋กœ ๋‹ค์‹œ ์น ํ•จ. ๊ฐ™์€์ƒ‰์˜ ์—์ง€๋ฅผ ๋‹ค์‹œ ์น ํ•˜๋ฉด ์‚ฌ์ดํด!

์„œ๋กœ์†Œ์ธ ์ง‘ํ•ฉ์˜ ํ‘œํ˜„

  • ๊ฐ ์ง‘ํ•ฉ์„ ์ผ์ข…์˜ ํŠธ๋ฆฌ๋กœ ์ƒ๊ฐ, ํ•œ ๋…ธ๋“œ์—์„œ ๋ฃจํŠธ๋ฅผ ์ฐพ์•„ ์˜ฌ๋ผ๊ฐ€๊ธฐ
  • ๋‘ ์ง‘ํ•ฉ์„ ํ•ฉ์น˜๋ ค๋ฉด, ๊ฐ€์žฅ ๋†’์€ ๋…ธ๋“œ๊ฐ€ ๋ฃจํŠธ๊ฐ€ ๋˜๊ณ  ๋‹ค๋ฅธ ์ง‘ํ•ฉ์˜ ๋ฃจํŠธ๋Š” ๊ทธ ๋ฃจํŠธ์˜ ์ž์‹์œผ๋กœ. (union find)