๊ทธ๋ž˜ํ”„ ์šฉ์–ด

  • V : vertex
  • E : Edge
  • path
  • ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„ : ์–ด๋–ค ๋‘ ์ •์  ์‚ฌ์ด์—๋„ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„
  • ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„
  • ๊ฐ€์ค‘์น˜ ํฌํ•จ ๊ทธ๋ž˜ํ”„ : Edge์— ๊ฐ€์ค‘์น˜๊ฐ€ ๋‹ฌ๋ ค์žˆ์Œ
  • ์ˆœํ™˜ ๊ฒฝ๋กœ
  • ์ˆœํ™˜ ๊ทธ๋ž˜ํ”„, ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„
  • ํŠธ๋ฆฌ - ๋น„์ˆœํ™˜, ๋น„๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„
  • ์‹ ์žฅ ํŠธ๋ฆฌ : ์—ฐ๊ฒฐ๋œ, ๋น„๋ฐฉํ–ฅ์„ฑ ๊ทธ๋ž˜ํ”„์—์„œ ์ˆœํ™˜๊ฒฝ๋กœ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด์„œ ์—ฐ๊ฒฐ๋œ ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋˜๋„๋ก ํ•˜๋Š” ํŠธ๋ฆฌ
    • ์‹ ์žฅ ํŠธ๋ฆฌ์˜ ๊ฐœ์ˆ˜๋Š” Cayleyโ€™s formula์— ๋”ฐ๋ฅธ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€์ง

์ตœ์†Œ๋น„์šฉ์‹ ์žฅํŠธ๋ฆฌ

  • ์‹ ์žฅ ํŠธ๋ฆฌ๊ฐ€ ๋˜๋Š” ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„ ์ค‘์—์„œ ๊ฐ€์ค‘์น˜๊ฐ€ ์ตœ์†Œ๊ฐ€๋˜๋Š” ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„
  • ๋ฌด์กฐ๊ฑด ํŠธ๋ฆฌ๋กœ ๋‚˜์˜จ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ˆœํ™˜ ๊ฒฝ๋กœ๊ฐ€ ์—†์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ
  • ๋ธŒ๋ฃจํŠธ ํฌ์Šค
    • n์— ๋Œ€ํ•ด ์‹ ์žฅํŠธ๋ฆฌ์˜ ๊ฐœ์ˆ˜๋Š” ๊ฐœ
    • ์•ˆ๋œ๋‹ค.

Prim ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ธ์ ‘ ํ–‰๋ ฌ
    • ์—ฐ๊ฒฐ ์•ˆ๋˜์–ด ์žˆ์œผ๋ฉด ๋ฌดํ•œ๋Œ€
    • ์—ฐ๊ฒฐ๋˜๋ฉด ๊ฐ€์ค‘์น˜
    • ๋‚˜๋ผ๋ฉด 0
    • ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ ‘ํ–‰๋ ฌ์€ ๋Œ€์นญ์ด๋‹ค.
  • ํ•ต์‹ฌ์€ ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๊ฒƒ์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐ„์„ ์„ ๊ฐ€์ง€ ์•Š๋Š”๊ฒƒ.
  • ๊ฐ€์ง€ ์•Š์€ ๊ฒƒ๋“ค์ค‘ ์ตœ์†Œ๋ฅผ ์„ ํƒํ•˜์—ฌ ์„ ํƒํ•œ ์ง‘ํ•ฉ์— ๋„ฃ๋Š”๊ฒƒ
  • ์ด๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ˜„์žฌ ์„ ํƒ๋œ ์ง‘ํ•ฉ์œผ๋กœ๋ถ€ํ„ฐ ์„ ํƒ๋˜์ง€ ์•Š์€ ์œ„์น˜๋กœ์˜ ์ตœ์†Œ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์†ํ•ด์„œ ์—…๋ฐ์ดํŠธ ํ•ด์•ผํ•œ๋‹ค.
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณด๊ฒŒ๋˜๋ฉด, Y์ง‘ํ•ฉ์— ๋„ฃ๊ธฐ ์œ„ํ•ด n-1๋ฒˆ์˜ ๋ฐ˜๋ณต, ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ ๋‹จ๊ณ„์—์„œ ๊ฐ€์žฅ ์งง์€ ๊ธธ์ด๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— O(n^2)์ด๋‹ค.

Kruskal ์•Œ๊ณ ๋ฆฌ์ฆ˜

  1. ๋‘๊ฐœ์˜ ์„œ๋กœ์†Œ ์ง‘ํ•ฉ์„ ๋งŒ๋“ ๋‹ค.
  2. ๊ทธ ๋‘๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์ง€๋Š” ๊ฐ€์ค‘์น˜๋ณ„๋กœ ์ •๋ ฌํ•œ๋‹ค.
  3. ํ•ด๋‹น ์—ฐ๊ฒฐ์˜ ์‹œ์ž‘ ๋…ธ๋“œ์™€ ๋ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  4. ๊ฐ๊ฐ์˜ ๋…ธ๋“œ ์ง‘ํ•ฉ์„ ๊ฐ€์ ธ์˜จ๋‹ค.
  5. ๋‘ ์ง‘ํ•ฉ์ด ๊ฐ™์€ ์ง‘ํ•ฉ์ด ์•„๋‹ˆ๋ผ๋ฉด ๋‘ ์ง‘ํ•ฉ์„ ํ•ฉ์นœ๋‹ค.
  • ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•ต์‹ฌ์€ ์ตœ์†Œ์‹ ์žฅํŠธ๋ฆฌ๋ฅผ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ตœ์†Œ๋กœ ์—ฐ๊ฒฐ๋œ ์ง‘ํ•ฉ์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ€์ค‘์น˜๊ฐ€ ์ž‘์€ ๋…ธ๋“œ๋“ค๋ผ๋ฆฌ ๋จผ์ € ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๋งž๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๋ฉด, ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋กœ์†Œ ์ง‘ํ•ฉ์— ๋Œ€ํ•ด ์ด๋ฅผ ๋น„๊ตํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
  • ์ด ๋•Œ union find ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ disjoint ์ง‘ํ•ฉ์„ ์•Œ์•„๋‚ด์–ด ์ด๋ฅผ ๋น„๊ตํ•œ๋‹ค.
  • ๋‹ค๋ฅด๋‹ค๋ฉด ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๋งž๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฐ€์ค‘์น˜๋ณ„๋กœ ๋‚ฎ์€ ๊ฐ’๋ถ€ํ„ฐ ์ •๋ ฌ์„ ํ•ด๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ
  • ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” O()์ด๋‹ค.

๋‹จ์ผ ์ถœ๋ฐœ์  ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ : ๋‹ค์ต์ŠคํŠธ๋ผ

  1. ๊ฐ€์žฅ ์งง์€ ๋…ธ๋“œ๋ฅผ ํŽธ์ž…์‹œํ‚จ๋‹ค.
  2. ๋…ธ๋“œ๊ฐ€ ํŽธ์ž…๋œ ์ƒํƒœ์—์„œ ์„ ํƒ๋˜์ง€ ์•Š์€ ๋…ธ๋“œ๋“ค์— ๋Œ€ํ•œ ์ตœ์†Œ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.
  3. ๋ฐ˜๋ณตํ•œ๋‹ค.

0-1 Knapsack ๋ฌธ์ œ

  • ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ, ๊ฐ€์น˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๊ณ , ๊ฐ€๋ฐฉ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ๊ฐ€ ์ •ํ•ด์ ธ์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ,
  • ๊ฐ€๋ฐฉ์˜ ๋ฌด๊ฒŒ๋ฅผ ๋„˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์—์„œ ๊ฐ€๋ฐฉ์— ๋„ฃ์€ ๊ฐ€์น˜๊ฐ€ ์ตœ๋Œ€๊ฐ€ ๋˜๋„๋ก ํ•˜๋Š” ๋ฌธ์ œ
  • ๋ถ€๋ฅดํŠธ ํฌ์Šค : 2
  • ๊ฐ€์žฅ ๋น„์‹ผ ๋ฌผ๊ฑด ๋ถ€ํ„ฐ ์ฑ„์šด๋‹ค? x
  • ๋ฌด๊ฒŒ๊ฐ€ ๋œ๋‚˜๊ฐ€๋Š” ๋ฌผ๊ฑด ๋ถ€ํ„ฐ ์ฑ„์šด๋‹ค? x
  • ๋ฌด๊ฒŒ๋‹น ๊ฐ€์น˜๊ฐ€ ๋†’์€ ๋ฌผ๊ฑด๋ถ€ํ„ฐ ์ฑ„์šด๋‹ค? x

๊ทธ๋Ÿผ ๋นˆํ‹ˆ์—†์ด ์ฑ„์šฐ๋Š” ๊ฒฝ์šฐ๋Š” ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

  • ๋ฐฐ๋‚ญ ๋นˆํ‹ˆ์—†์ด ์ฑ„์šฐ๊ธฐ ๋ฌธ์ œ
    • ์ด๊ฑด ๊ทธ๋ฆฌ๋””๋กœ ํ’€๋ฉด๋œ๋‹ค.
    • ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋ฌด๊ฒŒ๋‹น ๊ฐ€์น˜๊ฐ€ ๋†’์€ ๊ฒƒ์„ ๋‹ค ์ฑ„์šฐ๊ณ , ๋ฌด๊ฒŒ๊ฐ€ ์•ˆ๋˜๋Š” ๊ฒƒ์€ ๊ทธ๋‹ค์Œ ๋ฌผ๊ฑด์— ๋Œ€ํ•ด
    • ์ž˜๋ผ์„œ ๋„ฃ์–ด๋ฒ„๋ฆฌ๋ฉด ๋.

๋™์  ๊ณ„ํš๋ฒ• ์‹œ๋„

์Œ.. ๊ทธ๋Ÿผ ์ด ์ •์˜๋ฅผ ๋งŒ์กฑํ•˜๋ ค๋ฉด

P[i][w] = ๋ฌด๊ฒŒ๊ฐ€ w๋ฅผ ๋„˜์ง€ ์•Š๊ณ , i๋ฒˆ์งธ ๋ฌผ๊ฑด๊นŒ์ง€์˜ ํ•ญ๋ชฉ ์ค‘์—์„œ ์–ป์–ด์ง„ ์ตœ๊ณ  ์ด์ต
 
P[i][w] = max(P[i-1][w]. p[i-1][w-wi]+pi) # ๋งŒ์•ฝ ํ˜„์žฌ ๋ฌด๊ฒŒ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ๋„ฃ์€ ๊ฒƒ์˜ ๋ฌด๊ฒŒ๋ฅผ ๋„˜์ง€ ์•Š์œผ๋ฉด
P[i][w] = p[i-1][w] # ๋„˜์–ด๋ฒ„๋ฆฌ๋ฉด i๋ฒˆ์งธ๋ฅผ ๋„ฃ์ง€ ์•Š์•„์•ผ ํ•จ, ์ด์ „๊ฑฐ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ

๊ฒฐ๊ตญ ๋™์  ๊ณ„ํš๋ฒ• ์•„์ด๋””์–ด๋Š”, ๋ณ€ํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๋ฌธ์ œ์ 

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋  ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, n๊ณผ W๋Š” ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์—, W๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๊ฐ’์ด ํฌ๋‹ค๋ฉด ํšจ์œจ์ด ๊ต‰์žฅํžˆ ์ข‹์ง€ ์•Š์•„์ง„๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฅผ ๊ฐœ์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ž˜ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ๋ชจ๋“  ๋ฌด๊ฒŒ์— ๋Œ€ํ•ด ํŒ๋‹จํ•  ํ•„์š”๊ฐ€ ์—†๊ณ , ์ง€๊ธˆ ํ˜„์žฌ ํŒ๋‹จํ•˜๊ณ  ์‹ถ์€ ๋ฌด๊ฒŒ๋ฅผ ๋„ฃ์—ˆ์„ ๊ฒฝ์šฐ, ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ๋งŒ ๋น„๊ตํ•˜๋ฉด ๋œ๋‹ค.

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

์ด๋Ÿฐ์‹์œผ๋กœ ํŠน์ • ์•„์ดํ…œ์„ ๋„ฃ์—ˆ์„ ๋•Œ๋ฅผ ํŒ๋ณ„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ๋„ฃ์—ˆ์„ ๊ฒฝ์šฐ์™€ ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ๋งŒ ํŒ๋‹จํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ํ–ˆ์„ ๊ฒฝ์šฐ์— ์‹œ๊ฐ„๋ณต์žก๋„๋Š”?

  • ์—ฐ์‚ฐ์œผ๋กœ ๋น„๊ตํ•˜๋Š” ๊ฒฝ์šฐ
    • ๋งจ ๋งˆ์ง€๋ง‰๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 2๋ฒˆ์˜ ๋น„๊ต๊ฐ€ ํ•„์š”
    • ๊ทธ ์ด์ „์˜ ๊ฐ’ ์—ญ์‹œ 2๋ฒˆ
    • ๊ฒฐ๊ตญ n๊ฐœ์˜ ์•„์ดํ…œ์— ๋Œ€ํ•ด 2๋ฒˆ์”ฉ ๊ณ„์‚ฐ์ด ๋Š˜์–ด๋‚˜๊ฒŒ ๋จ.
    • O(2^n)
  • ํ•„์š”ํ•œ ์—”ํŠธ๋ฆฌ์˜ ์ˆซ์ž๋กœ ํŒ๋‹จํ•˜๋Š” ๊ฒฝ์šฐ
    • ๋งŒ์•ฝ ์•„์ดํ…œ์˜ ๋ฌด๊ฒŒ๊ฐ€ ๋‹ค 1์ด์•ผ
    • ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ์•„๋ž˜ ๊ทธ๋ฆผ๋งŒํผ ํ•„์š”ํ•œ ๊ฑฐ์ง€. ์‚ผ๊ฐํ˜• ๋„“์ด๋งŒํผ

Union find

  • ์„œ๋กœ์†Œ ์ง‘ํ•ฉ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • Linked list
  • array
  • Tree
    • ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•
    • ๋ฌด๊ฒŒ ๊ณ ๋ ค๋ฐฉ๋ฒ•
    • ๊ฒฝ๋กœ ์••์ถ• ๋ฐฉ๋ฒ•
  • ์„œ๋กœ์†Œ์ธ ๋‘ ์ง‘ํ•ฉ์— ๋Œ€ํ•ด์„œ ์ฒ˜๋ฆฌํ• ๋งŒํ•œ ์—ฐ์‚ฐ์€,
    • ๊ฐ™์€๊ฐ€?
    • ํ•ฉ์ณ์ค˜!
  • ๋ฐ–์— ์—†๋‹ค.

Linked list ์‚ฌ์šฉ

  • ์ผ๋‹จ ์–˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‘๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ฒŒ ๋œ๋‹ค.
  • ์ฒซ๋ฒˆ์งธ๋Š” ๋‚ด ์ง‘ํ•ฉ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
  • ๋‘๋ฒˆ์งธ๋Š” ๋‚ด ๋‹ค์Œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
  • find : O(1)
  • union : ๋งŒ์•ฝ ์™ผ์ชฝ์„ ์˜ค๋ฅธ์ชฝ์— ๋ถ™์ธ๋‹ค๊ณ  ํ•˜๋ฉด ์™ผ์ชฝ์— ์žˆ๋Š” ์›์†Œ ๋ชจ๋‘ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ถ™์—ฌ์•ผ ํ•˜๋‹ˆ 4๋ฒˆ์˜ ํฌ์ธํ„ฐ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค.

๋ฌธ์ œ์ 

  • ์ด๊ฒŒ ์ž˜๋ณด๋ฉด ๋ฌธ์ œ์ ์ด ์žˆ๋Š”๋ฐ,
  • ์˜ˆ๋ฅผ ๋“ค์–ด n๊ฐœ์˜ ์›์†Œ๊ฐ€ ์žˆ์„ ๋•Œ, ์ˆœ์ฐจ์ ์œผ๋กœ ๋’ค์— ์žˆ๋Š” ์›์†Œ์˜ ์ง‘ํ•ฉ์— ํ•ฉ์นœ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.
  • ๊ทธ๋Ÿฌ๋ฉด ์•ž์— ์žˆ๋Š” ์ง‘ํ•ฉ์€ ๊ณ„์†ํ•ด์„œ ์ปค์ง€๋Š” ์ƒํ™ฉ์ธ๋ฐ ๋’ค๋Š” ์ž๊ธฐ ๊ฐ€์ง„๋งŒ์„ ์›์†Œ๋กœ ๊ฐ€์ง€๋Š” ์ง‘ํ•ฉ์ด๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฉด ์•ž์— ์›์†Œ๋“ค์˜ ํฌ์ธํ„ฐ ์ด๋™ํšŸ์ˆ˜๋Š” linearํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•œ๋‹ค.
  • n๊ฐœ์˜ ์›์†Œ๊ฐ€ ๋ชจ๋‘ ํ•œ์ง‘ํ•ฉ์ด ๋˜๋Š”๋ฐ ๊นŒ์ง€ ํฌ์ธํ„ฐ ์ด๋™ํšŸ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ฒŒ ๋˜๋ฉด ์ด๋‹ค.
  • ์ฆ‰ O(n^2)์ด๋‹ค.
  • ์ข€๋” ์ •ํ™•ํ•˜๊ฒŒ m๋ฒˆ์˜ union์„ ํ•œ๋‹ค๊ณ  ํ•˜๋ฉด O(m^2)์ด๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•œ๋ฐ, ๊ทธ๋ƒฅ ๋” ํฐ ์ง‘ํ•ฉ์— ์ž‘์€ ์ง‘ํ•ฉ์„ ํ•ฉ์น˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ด๋Ÿด ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(nlogn)์ด๋‹ค. ์™œ?

  • ์‰ฝ๊ฒŒ ๊ทธ๋ฆผ์œผ๋กœ ์•Œ์•„๋ณด๋ฉด
  • ์ž, ํŠน์ • ์›์†Œ๊ฐ€ ์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ๋ช‡๋ฒˆ ํฌ์ธํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š”์ง€ ๋ณด์ž.
  • logn๋ฒˆ์ด๋‹ค.
  • ์ž ๊ทธ๋Ÿฌ๋ฉด ์ด๋ฒˆ์—๋Š” ๊ณ„์†ํ•ด์„œ ์ž‘์€ ์ง‘ํ•ฉํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ณด์ž.
  • 1๋ฒˆ์ด๋‹ค. ์•ˆ๋ฐ”๋€Œ๋Š” ๊ฑฐ์ง€
  • ๊ทธ๋Ÿผ ๊ฒฐ๊ตญ ๋ญ์•ผ. ํ•˜๋‚˜์˜ ์›์†Œ์˜ ํฌ์ธํ„ฐ ์ด๋™์€ logn, ๋ชจ๋“  ์›์†Œ์— ๋Œ€ํ•ด nlogn

Array ์‚ฌ์šฉ

  • ๊ต‰์žฅํžˆ ์ง๊ด€์ ์ด์ง€?
  • i๋ฒˆ์งธ index์— ์žˆ๋Š” ์›์†Œ์˜ ์ง‘ํ•ฉ ๋ฒˆํ˜ธ๋ฅผ value๋กœ ๊ทธ๋ƒฅ ๋‹ฌ์•„๋ฒ„๋ฆฐ๊ฑฐ์ง€.
  • find๋Š” ๋‹น์—ฐํžˆ ์ƒ์ˆ˜์‹œ๊ฐ„
  • union๊ฐ™์€ ๊ฒฝ์šฐ ๊ฐ™์€ ์ง‘ํ•ฉ์ด๋ผ๊ณ  ๋ฌถ์—ฌ ์žˆ๋Š” ๋…€์„๋“ค์„ y์˜ ์ง‘ํ•ฉ ๋ฒˆํ˜ธ๋กœ ๋‹ค ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋˜๊ฒ ์ง€.
  • ์ผ๋‹จ ์ด๊ฑธ ํ•  ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ๊ฐ๊ฐ์˜ ์ง‘ํ•ฉ ๋ฒˆํ˜ธ์— ์žˆ๋Š” ์›์†Œ๋“ค์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ์–ด์•ผ ๊ฒ ์ง€.
  • ๊ทธ๋ฆฌ๊ณ  ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋†’ํžˆ๋ ค๋ฉด ๋‹น์—ฐํžˆ ์ง‘ํ•ฉ์„ ํ•ฉ์น˜๋Š” ๋ฐ ์žˆ์–ด์„œ ํ•ด๋‹น ์›์†Œ๊ฐ€ ์†ํ•ด์žˆ๋Š” ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ์ง€.

Tree ์‚ฌ์šฉ

  • ์‚ฌ์‹ค ์ด๊ฒŒ ์ œ์ผ ์ข‹์€ ๋ฐฉ๋ฒ•์ด์•ผ.
  • ์™œ๋ƒํ•˜๋ฉด ํ•ด๋‹น ์ž‘์—…์€ ๊ฐ๊ฐ์˜ ์›์†Œ์— ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์—†์–ด
  • ๊ทธ๋ƒฅ ์ง‘ํ•ฉ๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋•ก์ด์•ผ.
  • ๊ทธ๋Ÿฌ๋ฉด ์™œ ๊ตณ์ด ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์“ฐ๋ƒ
  • ๋‹น์—ฐํžˆ ํŠธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋ฒ ์ŠคํŠธ์ง€. ํŠน์ • ์›์†Œ๊ฐ€ ์–ด๋”” ์†ํ•ด์žˆ๋Š”์ง€ ์ฐพ์•„๊ฐ€๋Š”๋ฐ ์žˆ์–ด์„œ logn์ด ๊ฑธ๋ฆฌ๋‹ˆ๊นŒ.
  • ์•„ ๋ฌผ๋ก  ๊ธฐ์กด์˜ find ๋ณด๋‹ค ์ƒ์ˆ˜์‹œ๊ฐ„๋ณด๋‹ค๋Š” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€.
  • ๊ทผ๋ฐ union์—์„œ ์—„์ฒญ๋‚œ ์žฅ์ ์ด ์žˆ์ง€.
  • logn์œผ๋กœ ์ฐพ๊ณ  ํ•ด๋‹น ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ ์ง‘ํ•ฉ ์›์†Œ์— ๊ฑ ๋ถ™์—ฌ๋ฒ„๋ฆฌ๋ฉด ๋์ด๊ฑฐ๋“ .

๋ฌธ์ œ์ 

  • ์•„ ๊ทธ๋Ÿฐ๋ฐ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด.
  • ํŠธ๋ฆฌ ๋ฌธ์ œ ์•Œ์ง€? ์ž˜๋ชปํ•˜๋ฉด ๊ทธ๋ƒฅ ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ๋ž‘ ๋˜‘๊ฐ™์€ ๊ฑฐ์—ฌ
  • ๊ทธ๋Ÿฌ๋ฉด ๊ฒฐ๊ตญ ํ•ฉ์น˜๋Š”๋ฐ ์žˆ์–ด์„œ ๋งŒ์•ฝ์— ํฐ์ง‘ํ•ฉ์„ ์ž‘์€ ์ง‘ํ•ฉ์— ๋ถ™์ด๋ฉด (x1์„ x2์— ๋ถ™์—ฌ๋ผ๊ฐ€ default์ž„)
  • ํฌ์ธํ„ฐ ๋ณ€๊ฒฝ์€ 1ํšŒ์ด์ง€๋งŒ, ์ด๋™์ด ๊ฒฐ๊ตญ ๋งŽ์ด ๋ฐœ์ƒํ•ด.
  • x1์ด ํ•ด๋‹น๋œ ๋…ธ๋“œ๋ฅผ ๊ณ„์† ํƒ€๊ณ ์˜ฌ๋ผ๊ฐ€์•ผ ํ•˜๋Š”๋ฐ ์ค„์ค„์ด ๋‹ค๋ฐœ์ด๋‹ˆ๊นŒ ๊ณ„์† ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด๊ฑฐ์•„๋ƒ.

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

  • ์•„๋‹ˆ ๊ทธ๋Ÿฌ๋ฉด ์ด์ „์— ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ํฐ๋†ˆ์„ ์ž‘์€๋†ˆ์—๊ฒŒ ๋ถ™์ด์ง€ ๋ง์ž.
  • ํฐ๋†ˆ์ธ์ง€ ์ž‘์€๋†ˆ์ธ์ง€ ํŒ๋‹จํ•˜๊ณ  ์ž‘์€๋†ˆ์„ ๋ถ™์—ฌ์„œ ํ•ด๊ฒฐํ•˜์ž.
  • ํŠธ๋ฆฌ๋‹ˆ๊นŒ ์ด๋ฒˆ์—๋Š” ์•„๋ž˜๋กœ ๋Š˜์–ด์ง„, ์ฆ‰ ๋ฌด๊ฒŒ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฑฐ์•ผ
  • ์ด ๋ฌด๊ฒŒ๋Š” ๊ฒฐ๊ตญ ํŠธ๋ฆฌ์˜ ๊นŠ์ด๊ฐ€ ๋˜๊ฒ ์ง€. ๊นŠ์ด๊ฐ€ ๊นŠ์–ด์ง€๋ฉด ๊ฒฐ๊ตญ ๋ฌด๊ฑฐ์›Œ์ง€์ž–์•„. ํƒ์ƒ‰ํ•˜๊ธฐ๊ฐ€
  • ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ฆ‰, ๊นŠ์ด๊ฐ€ ๋‚ฎ์€๋†ˆ์„ ๊นŠ์ด๊ฐ€ ๊นŠ์€๋†ˆ ํ•œํ…Œ ์—ฐ๊ฒฐํ•ด ๋ฒ„๋ ค์„œ ์ด์ „์ฒ˜๋Ÿผ ์ค‘๋ณตํ•ด์„œ ํฌ์ธํ„ฐ ์ด๋™์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•ด๋ณด์ž.
  • ์ด๋Ÿฐ๊ฑฐ์•ผ.
  • ์œ„์˜ ๊ทธ๋ฆผ๋ณด๋ฉด ๊ฒฐ๊ตญ ์™ผ์ชฝ ๊ฐ™์€ ๊ฒฝ์šฐ ๊นŠ์ด๊ฐ€ ๊นŠ์€ ๋†ˆ์„ ๋‚ฎ์€๋†ˆํ•œํ…Œ ์—ฐ๊ฒฐํ•ด๋ฒ„๋ ค์„œ ์ด์ „๋ณด๋‹ค 1๋งŒํผ ๊นŠ์ด๊ฐ€ ๋Š˜์–ด๋‚ฌ์ง€.
  • ๊ทธ๋Ÿฐ๋ฐ ์˜ค๋ฅธ์ชฝ ๊ฐ™์€ ๊ฒฝ์šฐ ๋‚ฎ์€ ๋†ˆ์„ ๊นŠ์€๋†ˆํ•œํ…Œ ์—ด๊ฒฐํ•ด์„œ ๊นŠ์ด๊ฐ€ ์ด์ „๋ณด๋‹ค ์ค„์–ด๋“ค์—ˆ์–ด
  • ๊ฒฐ๊ตญ ๊นŠ์ด๊ฐ€ ๋‚ฎ์€๊ฒŒ ์ตœ๊ณ  ์ข‹๋‹ค ์ด๊ฑฐ์•ผ. ๊ทธ๋ž˜์•ผ find ์—ฐ์‚ฐ์ด ์ ๊ฒŒ๋“ค์ง€.

์ตœ๊ณ  ๊นŠ์ด

  • ๊ทธ๋Ÿผ ์ตœ๊ณ  ๊นŠ์ด๋ฅผ ํŒ๋‹จํ•ด๋ณด์ž.
  • ์ตœ๊ณ  ๊นŠ์–ด์ง€๋„๋ก ํ•œ๋ฒˆ ํ•ด๋ณด๋ฉด, ์œ„์™€ ๊ฐ™์ด ๊ฒฐ๊ตญ ๊นŠ์ด๋Š” 3์ด์•ผ.
  • ์ฆ‰ ์ตœ๋Œ€ ๋†’์ด๋Š” n๊ฐœ์˜ ์›์†Œ์— ๋Œ€ํ•ด logn์ธ๊ฑฐ์ง€.
  • ์ด๊ฑธ m๋ฒˆ unionํ•œ๋‹ค๊ณ  ํ•˜๋ฉด ํ•œ๋ฒˆ์˜ union์— ๋Œ€ํ•ด logn์˜ find๋ฅผ ์ˆ˜ํ–‰
  • O(mlogn)

๊ฒฝ๋กœ ์••์ถ•

  • ์ž ๊ทธ๋Ÿฐ๋ฐ, find๋ฅผ ํ•  ๋•Œ, ๊ฒฝ๋กœ ์••์ถ•๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฐพ๋Š” ๊ณผ์ •์€ ์žฌ๊ท€์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š”๋ฐ ์ด๋•Œ, ์ตœ๊ณ  root node๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด ๋Œ์•„์˜ค๋ฉด์„œ ์ฐพ์•˜๋˜ node๋ฅผ root์˜ ์ž์‹์œผ๋กœ ๋งŒ๋“ค์–ด ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ