๊ธ€ ์ž‘์„ฑ์ž: ๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด

Spanning Tree

Minimum Spanning Tree ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—, Spanning Tree๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ •๋ฆฌํ•ด๋ณด์ž.

Spanning Tree Condition

์‹ ์žฅํŠธ๋ฆฌ ๋ผ๊ณ ๋„ ํ•˜๋Š” ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์ด ์„ฑ๋ฆฝํ•ด์•ผํ•œ๋‹ค.

  1. N๊ฐœ์˜ ์ •์ ์„ ๊ฐ€์ง€๋Š” ๊ทธ๋ž˜ํ”„์—์„œ ์ตœ์†Œ N-1 ๊ฐœ์˜ ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.
  2. ๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  ์ •์ ์„ ํฌํ•จํ•œ๋‹ค.

๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  ์ •์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ์‹ ์žฅํŠธ๋ฆฌ์˜ ์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ„์„ ์˜ ๊ฐฏ์ˆ˜๋Š” ํ•ญ์ƒ N-1 ๊ฐœ๊ฐ€ ๋  ์ˆ˜ ๋ฐ–์— ์—†๊ณ , N-1๊ฐœ์˜ ๊ฐ„์„ ๊ณผ N๊ฐœ์˜ ์ •์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ทธ๋ž˜ํ”„๋Š” ์ „์ฒด ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•œ ์‚ฌ์ดํด์ด ์กด์žฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๊ฐ€ DFS๋‚˜ BFS ๋กœ ํƒ์ƒ‰ํ•˜๋ฉด ๊ฐ ์ •์ ๋“ค์„ ์—ฐ๊ฒฐํ•˜๊ฒŒ ๋˜๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ Spanning Tree ๊ฐ€ ์™„์„ฑ์ด ๋œ๋‹ค.

Minimum Spanning Tree (MST)

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

 

 

์œ„ ์™€ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ์„ ๋•Œ, ํƒ์ƒ‰ ๋ฐฉํ–ฅ์„ ์–ด๋””๋กœ ๋‘๋Š”์ง€์— ๋”ฐ๋ผ์„œ ํƒ์ƒ‰์„ ๋งˆ์นœํ›„ ์ƒ์„ฑ๋˜๋Š” ํŠธ๋ฆฌ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์œ„ ๊ทธ๋ž˜ํ”„์˜ ์ •์ ์˜ ๊ฐฏ์ˆ˜๋Š” 4๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์–ด์ง„ ๋ชจ๋“  ๊ฐ„์„ ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  3๊ฐœ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ํŠธ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค๋ฉด, ์œ„ ์ฒ˜๋Ÿผ ๊ทธ๋ž˜ํ”„๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ์ด 6์œผ๋กœ ์ตœ์†Œ ์‹ ์žฅํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

Algorithm Approach

์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

  1. ๊ฐ„์„ ์„ ๋„ฃ์„ ์ง‘ํ•ฉ A๋ฅผ ๋งŒ๋“ค์ž.
  2. ์ด ์ง‘ํ•ฉ์— Safe Edge ๋ฅผ ํ•˜๋‚˜์”ฉ ๋„ฃ๋Š”๋‹ค.

Safe Edge

์—ฌ๊ธฐ์„œ Safe Edge(์•ˆ์ „๊ฐ„์„ ) ๋ผ๋Š” ๊ฐœ๋…์ด ๋“ฑ์žฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Safe Edge ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ช‡๊ฐ€์ง€ ๊ฐœ๋…๋“ค์„ ์ •๋ฆฌํ•ด๋ณด์ž.

  • Cut(๋‹จ์ ˆ) : Cut์€ ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ์ •์ ๋“ค์˜ ์ง‘ํ•ฉ์„ V๋ผ๊ณ  ํ•  ๋•Œ, ์ด ์ •์ ๋“ค์„ ๋‘๊ฐœ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๊ทธ๋ž˜ํ”„๋ฅผ ์ด๋ฃจ๋Š” ์ •์ ์˜ ์ง‘ํ•ฉ {A, B, C, D} ๋ฅผ {A, C}, {B, D} ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ๋‘ ์ง‘ํ•ฉ์˜ ์ •์ ์˜ ์ˆ˜๊ฐ€ ๊ฐ™๊ฒŒ ๋‚˜๋ˆ„์–ด์ ธ์•ผํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ  ์ „์ฒด ์ง‘ํ•ฉ์—์„œ ๋‘ ์ง‘ํ•ฉ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

  • Cross (๊ต์ฐจ) : Cross ๋Š” Cut ๋ฅผ ํ†ตํ•ด ๋‚˜๋ˆ„์–ด์ง„ ๋‘ ์ง‘ํ•ฉ ์‚ฌ์ด์— ์—ฐ๊ฒฐ๋œ ๊ฐ„์„ ์ด ์กด์žฌํ•  ๋•Œ, ๋‘ ์ง‘ํ•ฉ์ด ๊ต์ฐจํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์œ„ ์ฒ˜๋Ÿผ ๋‚˜๋ˆ„์–ด์ง„ ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ์„ ๋•Œ, ์„œ๋กœ ๋‹ค๋ฅธ ์ง‘ํ•ฉ์— ์†ํ•˜๋Š” A์™€ D๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„์„  AD๋Š” ๋‘ ์ง‘ํ•ฉ์„ ๊ต์ฐจํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Respect (๋”ฐ๋ฆ„) : ์–ด๋–ค ์ง‘ํ•ฉ A๊ฐ€ MST์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, A์— ์†ํ•˜๋Š” ์ •์  ์ค‘์— cut ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง„ ๋‹ค๋ฅธ ์ง‘ํ•ฉ์œผ๋กœ cross ํ•˜๋Š” edge๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ณ  ์ด๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ cut์ด A๋ฅผ repect ํ•œ๋‹ค๊ณ  ํžŒ๋‹ค. ์œ„์—์„œ ์‚ฌ์šฉํ•œ ๊ทธ๋ฆผ์„ ๋‹ค์‹œ ๋ณด๋ฉด AD๋Š” ๋‘ ์ง‘ํ•ฉ ์‚ฌ์ด๋ฅผ ๊ต์ฐจํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋งŒ์•ฝ A์˜ ๊ฐ„์„  ์ง‘ํ•ฉ์ด MST์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์ด๋ผ๋ฉด cut์€ A๋ฅผ repect ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.
  • Light Edge (๊ฒฝ๋Ÿ‰ ๊ฐ„์„ ) : cut์„ cross ํ•˜๋Š” ๊ฐ„์„ ๋“ค์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๋•Œ, ๊ทธ ์ค‘ ๊ฐ€์ค‘์น˜๊ฐ€ ์ตœ์†Œ์ธ ๊ฐ„์„ ์„ ๋งํ•œ๋‹ค.

์œ„ ๊ฐœ๋…๋“ค์„ ์‚ฌ์šฉํ•ด์„œ Safe Edge๋ฅผ ์ •์˜ํ•˜๋ฉด, ์–ด๋–ค ๊ฐ„์„ ์˜ ์ง‘ํ•ฉ A๊ฐ€ MST ์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์ด๊ณ , cut์— ์˜ํ•ด ๊ทธ๋ž˜ํ”„์˜ ์ •์ ์ง‘ํ•ฉ V๊ฐ€ S ์™€ V-S ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์„ ๋•Œ, ์ด cut์ด A๋ฅผ respect ํ•œ๋‹ค๊ณ  ํ•˜์ž. ์ฆ‰ A์˜ ๊ฐ„์„ ๋“ค์ด ๋‹ค๋ฅธ ์ง‘ํ•ฉ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ํ•  ๋•Œ, ์–ด๋–ค light edge x-v๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด, ์ด ๊ฐ„์„ ์„ A์˜ ์•ˆ์ „ ๊ฐ„์„ ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 

์ด ๊ทธ๋ฆผ์„ ํ™•์ธํ•ด๋ณด์ž.

  1. ์ „์ฒด ์ •์ ์˜ ์ง‘ํ•ฉ V{x, y, u, v} ๋Š” S{x, y}์™ธ V-S{u, v}๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค.
  2. MST์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์ธ A์—๋Š” ๊ฐ„์„  xy๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ˜„์žฌ๊นŒ์ง€ cut ์€ A์— respect ํ•˜๋‹ค.
  3. ์ด๋•Œ ๊ฐ„์„  xv ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค๊ณ  ํ•˜์ž. ๊ฐ„์„  xv๋Š” S ์™€ V-S ๋ฅผ cross ํ•˜๋Š” ๊ฐ„์„  ์ค‘ ๊ฐ€์žฅ ๊ฐ€์ค‘์น˜๊ฐ€ ์ž‘์€ ๊ฐ„์„ ์ธ light edge ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด ๊ฐ„์„ ์€ Safe Edge ์ด๋‹ค.

๋”ฐ๋ผ์„œ Safe Edge ๋Š” ๊ทธ๋ž˜ํ”„ ์ „์ฒด ์ •์ ์„ ํฌํ•จํ•˜๋Š” ๋‘ ๊ฐœ์˜ ๋ถ€๋ถ„ ์ง‘ํ•ฉ์„ ์ž‡๋Š” ๊ฐ€์žฅ ์ž‘์€ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง„ ๊ฐ„์„ ์ด๋ฏ€๋กœ, ๊ทธ๋ž˜ํ”„๋ฅผ ์ž˜๊ฐœ ์ชผ๊ฐœ์–ด์„œ ๋ชจ๋“  ์ •์ ์„ ํฌํ•จํ•  ๋•Œ๊นŒ์ง€ Safe Edge๋ฅผ ๊ตฌํ•ด์„œ ์ •์ ๋“ค์„ ์—ฐ๊ฒฐํ•˜๋‹ค๋ณด๋ฉด ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๊ฐ€ ์™„์„ฑ๋œ๋‹ค. ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์€ Greedy Algorithm๊ณผ ๊ฐ™๋‹ค.

Proof

๋ง์€ ๊ฐ„๋‹จํ•œ๋ฐ ์–ด๋–ป๊ฒŒ ์ด๊ฒŒ ๊ฐ€๋Šฅํ• ๊นŒ? ์ฆ๋ช…์„ ํ•ด๋ณด์ž.

 

 

์œ„์™€ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ์ง„ํ•œ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ํ‘œํ˜„๋œ ๊ฐ„์„ ์€ ๋ชจ๋‘ MST์˜ ๋ถ€๋ถ„ ์ง‘ํ•ฉ์ด ๋˜๋Š” ๊ฐ„์„ ๋“ค์ด๋ผ๊ณ  ํ•˜์ž. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์ •๋ฆฌํ•œ ์ •์˜๋Œ€๋กœ ํ˜„์žฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” Safe Edge๋Š” ๊ฐ„์„  AE์ด๋‹ค. ๋‘ ์ •์  ์ง‘ํ•ฉ์„ ๊ต์ฐจํ•˜๋Š” ๊ฐ€์žฅ ์งง์€ ๊ธธ์ด์˜ ๊ฐ„์„ ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  1. ๊ทธ๋Ÿผ ์ด์ œ light edge์ธ ๊ฐ„์„  AE๊ฐ€ MST์— ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•ด๋ณด์ž.
  2. ๊ทธ๋ ‡๋‹ค๋ฉด ์ •์  ์ง‘ํ•ฉ์ด ๋Š์–ด์ง€๊ฒŒ ๋˜๋Š”๋ฐ, MST๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ชจ๋“  ์ •์ ์„ ๋‹ค ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค. ์ด์ œ cut์— ์˜ํ•ด ๋‚˜๋ˆ„์–ด์ง„ ๋‘ ์ง‘ํ•ฉ์„ ์ด์–ด์ค„ ๋‹ค๋ฅธ ๊ฒฝ๋กœ ๋ฅผ ์ฐพ์•„์•ผํ•œ๋‹ค.
  3. ๊ฐ„์„  CF๊ฐ€ ์ƒˆ๋กœ์šด cross ๊ฐ€ ๋˜์–ด์„œ ๋‘ ์ง‘ํ•ฉ์„ ์ด์„ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ์ด MST๋ฅผ ์ƒˆ๋กœ์šด T๋กœ ์ •์˜ํ•˜์ž.
  4. ์ด๋ ‡๊ฒŒ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง„ MST T๋Š” ๊ธฐ์กด AE๋ฅผ ์‚ฌ์šฉํ•ด ๋งŒ๋“  MST์™€ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐ„์„ ์ด ๊ฐ™๊ณ  cross ํ•˜๋Š” Edge ๋งŒ ๋‹ค๋ฅด๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด, T์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ์€ ํ•ญ์ƒ AE๋ฅผ ํฌํ•จํ•˜๋Š” ๊ธฐ์กด์˜ MST๋ณด๋‹ค ํด ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ์™œ๋ƒํ•˜๋ฉด AE๋Š” ์ฒ˜์Œ์— light edge๋กœ ์ •์˜๋˜์—ˆ๊ณ , light weight๋Š” crossํ•˜๋Š” ๊ฐ„์„  ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง€๋Š” ๊ฐ„์„ ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  5. ๋”ฐ๋ผ์„œ ๋‘ ์ •์ ์ง‘ํ•ฉ์„ cross ํ•˜๋Š” edge๊ฐ€ light edge๋ผ๋ฉด, ์ด ๊ฐ„์„ ์€ Safe Edge ๊ฐ€ ๋˜๊ณ  MST๋Š” ์–ธ์ œ๋‚˜ ์„ฑ๋ฆฝํ•œ๋‹ค.