dynamic minimum spanning tree

10
Dynamic Minimum Spanning Tree 2018D 6 10||| โ€ฆ1โ€šLยทd} lโ€น (koosaga.com) Contents 1 1 2 Special Case : Online Incremental 2 2.1 8 ................................. 4 3 General Case : O๏ฌ„ine Algorithm 4 3.1 8 ................................. 8 4 General Case : Online Algorithm 8 5 References 9

Upload: others

Post on 20-Oct-2021

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Dynamic Minimum Spanning Tree

Dynamic Minimum Spanning Tree

2018๋…„ 6์›” 10์ผ ์ผ์š”์ผ

์‚ผ์„ฑ์†Œํ”„ํŠธ์›จ์–ด๋ฉค๋ฒ„์‰ฝ ๊ตฌ์žฌํ˜„ (koosaga.com)

Contents

1 ์†Œ๊ฐœ 1

2 Special Case : Online Incremental 2

2.1 ์—ฐ์Šต ๋ฌธ์ œ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 General Case : Offline Algorithm 4

3.1 ์—ฐ์Šต ๋ฌธ์ œ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4 General Case : Online Algorithm 8

5 References 9

Page 2: Dynamic Minimum Spanning Tree

Dynamic Minimum Spanning Tree

1 ์†Œ๊ฐœ

N๊ฐœ์˜ ๋„์‹œ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ตญ๊ฐ€๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์ž. ์šฐ๋ฆฌ๋Š” ์ด ๊ตญ๊ฐ€์— ๊ณ ์†์ฒ ๋„๋ง์„ ์„ค์น˜

ํ•  ๊ณ„ํš์ธ๋ฐ, ๊ณ ์†์ฒ ๋„๋ง์„ ์„ค์น˜ํ•œ ์ดํ›„์—๋Š” ์–ด๋– ํ•œ ๋„์‹œ์—์„œ ์ถœ๋ฐœํ•ด๋„ ๊ณ ์†์ฒ ๋„๋งŒ์„

์‚ฌ์šฉํ•ด์„œ ๋ชจ๋“  ๋„์‹œ์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์šฐ๋ฆฌ๋Š” M๊ฐœ์˜ ์ฒ ๋„๋ง ํ›„๋ณด๋ฅผ ๊ฐ€์ง€๊ณ 

์žˆ๋Š”๋ฐ, ๊ฐ ์ฒ ๋„๋ง์€ ์„ค์น˜์— ์ผ์ •ํ•œ ๋น„์šฉ์ด ๋“ค๋ฉฐ, ๋‘ ๋„์‹œ๋ฅผ ์ž‡๋Š”๋‹ค. ์ตœ์†Œ ๋น„์šฉ์œผ๋กœ

๊ตญํ† ๋ฅผ ๊ฐ€๋กœ์ง€๋ฅด๋Š” ๊ณ ์†์ฒ ๋„๋ง์„ ๊ตฌ์ถ•ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?

์ด ๋ฌธ์ œ๋Š” ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ (Minimum Spanning Tree, MST) ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š”, ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ถ„์•ผ์˜ ๊ธฐ์ดˆ์ ์ธ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋‹ค. ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋Š” ์ตœ์†Œ์˜ ๋น„์šฉ์œผ๋กœ โ€์—ฐ๊ฒฐ์„ฑโ€์ด๋ผ

๊ณ  ํ•˜๋Š” ์ค‘์š”ํ•œ ์„ฑ์งˆ์„ ์ด๋ฃจ๊ฒŒ ํ•œ๋‹ค๋Š” ์ ์—์„œ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค. ๊ทธ ์‚ฌ์šฉ ์˜ˆ ์ค‘ ์ผ๋ถ€๋ฅผ

๋‚˜์—ดํ•˜์ž๋ฉด,

โ€ข ์œ„ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์ตœ์†Œ ๋น„์šฉ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ์ฐพ๋Š” ํ˜•ํƒœ์˜ ๋ฌธ์ œ

โ€ข MST์˜์„ฑ์งˆ์„ํ™œ์šฉํ•ด์„œ๋‹ค๋ฅธ๋ฌธ์ œ์˜ subroutine์œผ๋กœ์‚ฌ์šฉํ•˜๋Š”๊ฒฝ์šฐ : Christofide

์˜ 1.5-factor TSP approximation์ด๋‚˜, Widest Path Problem ๋“ฑ

โ€ข ์ด๋ฏธ์ง€ ํ”„๋กœ์„ธ์‹ฑ, ํด๋Ÿฌ์Šคํ„ฐ๋ง, ํ•„๊ธฐ ๋ถ„์„ (์ฃผ์–ด์ง„ ์ด๋ฏธ์ง€๋ฅผ ๊ฒฉ์ž ๊ทธ๋ž˜ํ”„๋กœ ๋ณธ ํ›„,

์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํด๋Ÿฌ์Šคํ„ฐ๋งํ•˜๋Š” ๋ฅ˜์˜ ๋ฐฉ๋ฒ•๋“ค)

โ€ข ๋“ฑ๋“ฑ...

์ด์—๋Œ€ํ•œ์ž์„ธํ•œ์ •๋ณด๋Š” https://en.wikipedia.org/wiki/Minimum_spanning_

tree#Applications ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

MST๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์€ Kruskal Algorithm ๋“ฑ์œผ๋กœ ํ•ด๊ฒฐ๋˜๋Š” ์ž˜ ์•Œ๋ ค์ง„ ๋ฌธ์ œ์ด๋‹ค. ํ•˜์ง€๋งŒ

์‹ค์ œ๋กœ๋Š” ์ด๋ณด๋‹ค ๋” ๋ณต์žกํ•œ ํ˜•ํƒœ์˜ ์‘์šฉ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค : ์ด ์ค‘ ํ”ํžˆ ๋ณด์ด๋Š” ๊ฒฝ์šฐ๋Š”,

๋ฐ”๋กœ ๊ทธ๋ž˜ํ”„์— ๋ณ€๊ฒฝ์ด ๊ฐ€ํ•ด์ง€๋Š” ์ƒํ™ฉ์—์„œ์˜ ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ์˜ ๋ณ€ํ™”์ด๋‹ค. ๋„คํŠธ์›Œํฌ

ํ†ต์‹ ์„ ์ˆ˜๋ฆฝํ•  ๋•Œ ๋‘ ์ •์ ์„ ์˜ค๊ฐ€๋Š” ํŒจํ‚ท์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ฑฐ๋‚˜, ์ด๋ฏธ์ง€ ํด๋Ÿฌ์Šคํ„ฐ๋ง์„

ํ• ๋•Œ์ฃผ์–ด์ง„์ด๋ฏธ์ง€์—๊ตญ์†Œ์ ์ธ๋ณ€ํ™”๊ฐ€๊ฐ€ํ•ด์ง€๋Š”๋“ฑ,๊ธฐ์กด๊ทธ๋ž˜ํ”„์™€ MST๋ฅผ์•Œ๊ณ ์žˆ์„

๋•Œ, โ€์กฐ๊ธˆโ€ ๋‹ฌ๋ผ์ง„ ๊ทธ๋ž˜ํ”„์—์„œ์˜ MST์˜ ๋ณ€ํ™”๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ํ˜•ํƒœ์˜ ์‘์šฉ์ด๋‹ค.

Page 3: Dynamic Minimum Spanning Tree

Dynamic Minimum Spanning Tree

๋‹จ์ˆœํ•œ์•Œ๊ณ ๋ฆฌ์ฆ˜์€๋งค๋ณ€ํ™”์ดํ›„์ฒ˜์Œ๋ถ€ํ„ฐ๋‹ค์‹œ์ผ๋ฐ˜์ ์ธ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœMST๋ฅผ๊ณ„์‚ฐํ• 

๊ฒƒ์ด๋‹ค. ์ฃผ์–ด์ง€๋Š” ๋ณ€ํ™”์˜ ๊ฐœ์ˆ˜๋ฅผ O(Q)๊ฐœ๋ผ๊ณ  ํ•˜๋ฉด, ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์€ ๋Œ€๋žต

O(QM) ๊ฐ€๋Ÿ‰์ด๋ฉฐ, ๊ทธ๋ž˜ํ”„์˜ ํฌ๊ธฐ๋‚˜ ๋ณ€ํ™”์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ถฉ๋ถ„ํžˆ ํฐ ์ƒํ™ฉ์—์„œ ์ด๋Š” ์ƒ๋‹นํžˆ

๋น„ํšจ์œจ์ ์ด๋‹ค (100MB๋‹จ์œ„์˜์ž…๋ ฅ์ด์ฃผ์–ด์ง„๋‹ค๋ฉด,์•„๋งˆ๋ช‡๋‹ฌ์ด๊ฑธ๋ฆด๊ฒƒ์ด๋‹ค.).๋”๋น ๋ฅธ

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ?

์œ„์—์„œ ์†Œ๊ฐœํ•œ, ๊ทธ๋ž˜ํ”„์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ™”๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ๋งˆ๋‹ค ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ํšจ์œจ

์ ์œผ๋กœ ๊ณ„์‚ฐํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ Dynamic MST ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. [1] ๋น„์Šทํ•œ ํ˜•ํƒœ์˜ ๋ฌธ์ œ์ธ

Dynamic Shortest Path ๋ฌธ์ œ๊ฐ€ ํšจ์œจ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด ์‰ฝ๊ฒŒ ๋‚˜์˜ค์ง€ ์•Š๋Š” ๋ฐ˜๋ฉด, Dynamic

MST์˜ ๊ฒฝ์šฐ์—๋Š” ์ด๋ณด๋‹ค๋Š” ํ›จ์”ฌ ๋” ๋งŽ์€ ์ง„์ „์ด ์ง„ํ–‰๋œ ์ƒํƒœ์ด๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์ด๋Ÿฌํ•œ

ํšจ์œจ์ ์ธ ํ•ด๊ฒฐ์ฑ… ๋ช‡ ๊ฐ€์ง€์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค.

2 Special Case : Online Incremental

Dynamic MST ๋ฌธ์ œ ์ค‘์—์„œ๋„, ๊ทธ๋ž˜ํ”„์— ์ฃผ์–ด์ง€๋Š” ๋ณ€ํ™”์˜ ์ข…๋ฅ˜๊ฐ€ โ€๊ฐ„์„  ์ถ”๊ฐ€โ€ ๋ฐ–์—

์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŠน์ˆ˜ํ•œ ์ธ์Šคํ„ด์Šค๋“ค์ด ์กด์žฌํ•œ๋‹ค. ์ด๋ฅผ Incremental Dynamic MST ๋ผ๊ณ 

๋ถ€๋ฅด์ž.์ด๋•Œ๋Š” Link-Cut Tree๋ฅผ์‚ฌ์šฉํ•˜๋ฉด์‰ฝ๊ฒŒ๋ฌธ์ œ๋ฅผํ•ด๊ฒฐํ• ์ˆ˜์žˆ๋‹ค. Link-Cut Tree

๋Š” ๋ณต์žกํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด์ง€๋งŒ, ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ฐฉ๋ฒ• ์ž์ฒด๋Š” MST์˜ ๊ธฐ์ดˆ์ ์ธ ์„ฑ์งˆ์„ ๊ทธ๋Œ€๋กœ

์‚ฌ์šฉํ•˜๋Š” ๋‹จ์ˆœํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

์ด์•Œ๊ณ ๋ฆฌ์ฆ˜์€๊ฐ๊ฐ„์„ ์ถ”๊ฐ€์งˆ์˜๋ฅผ amortized O(logN)์—์ˆ˜ํ–‰ํ• ์ˆ˜์žˆ์œผ๋ฉฐ,์•„๋ž˜๋‚˜์˜จ

์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์ด ๋ชจ๋‘ ์งˆ์˜๋‹น O(log2N) ์ด์ƒ์˜ ์‹œ๊ฐ„์„ ์†Œ๋ชจํ•œ๋‹ค๋Š” ์ ์„ ๋น„๊ตํ•ด ๋ดค์„ ๋•Œ

์ด ์ ์—์„œ ํ™•์‹คํ•œ ์šฐ์œ„๋ฅผ ์ง€๋‹Œ๋‹ค. ์‹ค์ œ๋กœ N,Q = 100000 ๊ฐ€๋Ÿ‰์˜ ์ธ์Šคํ„ด์Šค์—์„œ ๊ฐ„๋‹จํžˆ

ํ…Œ์ŠคํŠธํ•ด๋ณธ๊ฒฐ๊ณผ,์•„๋ž˜์†Œ๊ฐœํ•  Offline Algorithm์—๋น„ํ•ด์„œ์•ฝ 3๋ฐฐ์ •๋„์˜์„ฑ๋Šฅ์ฐจ์ด๋ฅผ

๋ณด์˜€๋‹ค. [2]

๋˜ํ•œ, ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์˜จ๋ผ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์งˆ์˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘์—์„œ ์˜ค

ํ”„๋ผ์ธ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹๋“ค์ด ์•Œ๋ ค์ ธ ์žˆ๋Š”๋ฐ, ์ด ์ฒ˜๋ฆฌ ๋ฐฉ์‹์€ ์งˆ์˜๋ฅผ ์ „๋ถ€ ๋ฐ›์€ ์ดํ›„

์ด ์งˆ์˜๋“ค์„ ํ•œ๊บผ๋ฒˆ์— ์ฒ˜๋ฆฌ (Batch process) ํ•˜๋Š” ์‹์œผ๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์ด๋Š” ๋ฐฉ์‹

์ด๋‹ค. ์˜คํ”„๋ผ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ๊ฒฝ์šฐ ํ›จ์”ฌ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€๋ฆฌ๋Š” ๋ฌธ์ œ๋“ค์ด

Page 4: Dynamic Minimum Spanning Tree

Dynamic Minimum Spanning Tree

์—ฌ๋Ÿฟ ์•Œ๋ ค์ ธ ์žˆ์œผ๋‚˜, ์ด๋“ค์€ ๊ฐ๊ฐ์˜ ์งˆ์˜์— ๋Œ€ํ•ด์„œ ์ฆ‰๊ฐ์ ์ธ ์‘๋‹ต์„ ๋‚ด๋†“์ง€ ๋ชปํ•œ๋‹ค๋Š”

ํ•œ๊ณ„์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ๊ฐ์˜ ์งˆ์˜์— ๋Œ€ํ•ด์„œ ๊ทธ๋•Œ ๊ทธ๋•Œ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋†“๋Š”

์˜จ๋ผ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ์ด๋Ÿฌํ•œ ํ•œ๊ณ„์ ์—์„œ ๋น„๊ต์  ์ž์œ ๋กญ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์†Œ๊ฐœํ•˜๊ธฐ ์•ž์„œ์„œ, ์œ„ Incremental Dynamic MST ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฐ„๋‹จํ•œ

์•Œ๊ณ ๋ฆฌ์ฆ˜์„์ œ์‹œํ•œ๋‹ค.์ด์•Œ๊ณ ๋ฆฌ์ฆ˜์˜์ฆ๋ช…์€,์–ด๋– ํ•œ๊ฐ„์„  e๊ฐ€MST์—์„œํ•œ๋ฒˆ์‚ฌ๋ผ์ง€๋Š”

์ผ์ด ์žˆ๋‹ค๋ฉด ๋‹ค์‹œ ์ถ”๊ฐ€๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์„ฑ์งˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Algorithm 1 Incremental Dynamic MST, O(N) per query

1: procedure DMST1 Naive(S)

2: ์ดˆ๊ธฐ ๊ทธ๋ž˜ํ”„ G์˜ ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ T๋ฅผ ๊ตฌํ•จ.

3: for ๊ฐ๊ฐ์˜ ์ฟผ๋ฆฌ e = {ui, vi}, ui 6= vi ์— ๋Œ€ํ•˜์—ฌ do

4: f = (T ์ƒ์—์„œ ui, vi ๋ฅผ ์ž‡๋Š” ๊ฒฝ๋กœ ์ƒ์—์„œ ๊ฐ€์ค‘์น˜ ์ตœ๋Œ€์ธ ๊ฐ„์„ )

5: if weight(f) > weight(e) then

6: T โ† RemoveEdge(T, f)

7: T โ† AddEdge(T, e)

8: end if

9: end for

10: end procedure

์ด์ œ Link-Cut Tree๋ฅผ ํ†ตํ•ด์„œ ์ด๋ฅผ ์ตœ์ ํ™” ํ•˜๋Š” ๊ฒƒ์ด ๋‚จ์•˜๋‹ค. Link-Cut Tree๋Š” ํฌ๋ ˆ์Šค

ํŠธ์—์„œ ํšจ์œจ์ ์œผ๋กœ ๊ฐ„์„  ์ถ”๊ฐ€ / ์‚ญ์ œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ์˜ ๊ฒฝ๋กœ๋ฅผ Splay

Tree๋ผ ํ•˜๋Š” ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ž„์˜์˜ ๊ฒฝ๋กœ์— ๋Œ€ํ•ด์„œ ๊ฒฐํ•ฉ ๋ฒ•์น™์ด

์ ์šฉ๋˜๋Š” ์—ฐ์‚ฐ (ํ•ฉ, ์ตœ์†Ÿ๊ฐ’, ์ตœ๋Œ“๊ฐ’, gcd ๋“ฑ๋“ฑ) ์˜ ๊ฒฐ๊ณผ๋ฅผ amortized O(lgN) ์— ๊ด€๋ฆฌํ• 

์ˆ˜ ์žˆ๋‹ค. Link-Cut Tree์— ๋Œ€ํ•ด์„œ๋Š” [3]๋ฒˆ ๋งํฌ์— ๋งค์šฐ ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…๋˜์–ด ์žˆ์œผ๋‹ˆ ์ด

๊ธ€์„ ์ฐธ๊ณ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋‹ค. ๊ณ ๋กœ, RemoveEdge,AddEdge ์—ฐ์‚ฐ๊ณผ f๋ฅผ ๊ตฌํ•˜๋Š”

์—ฐ์‚ฐ์„ ๋ชจ๋‘ amortized O(lgN) ์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๋•Œ, Link-Cut Tree๋Š” ์ด ๊ฐ’๋“ค์„ ๊ฐ„์„ ์ด ์•„๋‹Œ ์ •์ ์— ๊ฐ€์ง€๊ณ  ๋‹ค๋‹ˆ๋Š” ๊ฒƒ์— ์œ ์˜ํ•ด์•ผ

ํ•œ๋‹ค. ์ด๋Š” ๊ฐ„์„ ์— ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์ €์žฅํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ„์„  e = {u, v}๋ฅผ ๊ธธ์ด 2์˜ ๊ฒฝ

๋กœ P = {u, eโ€ฒ, v} ๋กœ ์ชผ๊ฐ  ํ›„ (subdivide), ๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜๋ฅผ ์ฃผ๊ณ , ์ •์ ์—๋Š” min ์—ฐ์‚ฐ์˜

Page 5: Dynamic Minimum Spanning Tree

Dynamic Minimum Spanning Tree

ํ•ญ๋“ฑ์›์ธ โˆž ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ„๋‹จํ•œ ํŠธ๋ฆญ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

2.1 ์—ฐ์Šต ๋ฌธ์ œ

์‹ค์ œ ๊ตฌํ˜„์„ ํ•ด ๋ณด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•œ ์—ฐ์Šต ๋ฌธ์ œ์ด๋‹ค. ๋‚œ์ด๋„ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค.

โ€ข https://www.acmicpc.net/problem/10724

โ€ข http://codeforces.com/gym/101047/problem/I

โ€ข https://www.acmicpc.net/problem/15386

โ€ข https://ijpc2012-3.contest.atcoder.jp/tasks/ijpc_animals2

โ€ข http://acm.timus.ru/problem.aspx?space=1&num=2055

โ€ข https://www.codechef.com/MARCH14/problems/GERALD07

3 General Case : Offline Algorithm

์œ„์—์„œ๋„ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์งˆ์˜๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ์ด ์งˆ์˜๋ฅผ ํ•œ๊บผ๋ฒˆ์— ๋ฐ›์€ ์ดํ›„ ๊ฐ™

์ด ์ฒ˜๋ฆฌ (Batch process) ํ•˜๋Š” ์˜คํ”„๋ผ์ธ ํ’€์ด๋Š”, ํ’€์ด์˜ ๋ฒ”์šฉ์„ฑ์„ ์ค„์ด์ง€๋งŒ, ๋ฌธ์ œ๋ฅผ

ํ•ด๊ฒฐํ•˜๋Š” ํ›จ์”ฌ ๋” ๊ฐ•๋ ฅํ•œ ํ•ด๊ฒฐ ๋ฐฉ์‹์ด ๋œ๋‹ค. Dynamic MST์—์„œ ์˜คํ”„๋ผ์ธ ํ’€์ด ๋ฐฉ์‹

์„ ์ ์šฉํ•˜๋ฉด, ์œ„ ์˜จ๋ผ์ธ ํ’€์ด์˜ ๋ณต์žกํ•œ ์ž๋ฃŒ๊ตฌ์กฐ (Link-Cut Tree) ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„

O(Q log2N) ์˜ ๋น ๋ฅธ ์‹œ๊ฐ„ ๋ณต์žก๋„์— ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. [4]

์ด ์˜คํ”„๋ผ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€, ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๋ฐ”๊พธ๋Š” ํ˜•ํƒœ์˜ ์งˆ์˜๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ, ๊ฐ ์งˆ

์˜์— ๋”ฐ๋ผ์„œ ๋ณ€๊ฒฝ๋œ MST๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๋ฅผ

๋ฐ”๊พผ๋‹ค๋Š” ํ˜•ํƒœ์˜ ๋ชจ๋ธ๋ง์€ ํ›จ์”ฌ ๋” ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๊ทธ๋ž˜ํ”„ ๋ณ€๊ฒฝ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ

๋“ค์–ด ๊ฐ„์„  ์ถ”๊ฐ€ / ์ œ๊ฑฐ๋Š” ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๋ฅผโˆžโ†’ x, xโ†’โˆž ๋กœ ๋ฐ”๊ฟ”์คŒ์œผ๋กœ์จ ๊ฐ€๋Šฅํ•˜๋ฉฐ,

๊ฐ„์„ ์˜ ์ถ”๊ฐ€ / ์ œ๊ฑฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ •์  ์ถ”๊ฐ€ / ์ œ๊ฑฐ๋„ ํ•ด๋‹น ์ •์ ์— ์ธ์ ‘ํ•œ ๊ฐ„์„ ์„

์ „๋ถ€ ์ถ”๊ฐ€ / ์ œ๊ฑฐํ•˜๋Š” ์‹์œผ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค.

Page 6: Dynamic Minimum Spanning Tree

Dynamic Minimum Spanning Tree

์˜คํ”„๋ผ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์€ ๋ถ„ํ•  ์ •๋ณต์— ๊ธฐ๋ฐ˜ํ•ด ์žˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€

์ฟผ๋ฆฌ ์ˆœ์„œ๋ฅผ ์‹œ๊ฐ„ ์ˆœ์œผ๋กœ ๋‚˜์—ดํ•œ ํ›„, ์ด ์ˆœ์„œ์— ๊ธฐ๋ฐ˜ํ•ด์„œ ๋ถ„ํ•  ์ •๋ณต์„ ์‹œํ–‰ํ•˜๋Š”๋ฐ,

solve(G, [L,R], T, E) ๋ผ๋Š” ํ•จ์ˆ˜๋Š” :

โ€ข G๋ผ๋Š” ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด์„œ

โ€ข [L,R] ๊ตฌ๊ฐ„์— ์žˆ๋Š” ์ฟผ๋ฆฌ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•˜๋ฉฐ,

โ€ข MST์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ด ํ™•์‹คํ•œ ๊ฐ„์„ ์˜ ์ง‘ํ•ฉ์ด T์ด๊ณ ,

โ€ข MST์— ๋“ค์–ด๊ฐˆ ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•˜๋Š” ๊ฐ„์„ ์˜ ์ง‘ํ•ฉ์ด E์ธ (๋‹ค๋งŒ T์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ„์„ 

์€ E์— ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค.)

์žฌ๊ท€ํ•จ์ˆ˜์ด๋‹ค.๋งŒ์•ฝ์— L = R์ผ๊ฒฝ์šฐ,์šฐ๋ฆฌ๋Š”MST์—๋“ค์–ด๊ฐ€๋Š”๊ฒƒ์ดํ™•์‹คํ•œ๊ฐ„์„ ์ง‘ํ•ฉ

T๊ณผ ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•˜๋Š” ๊ฐ„์„ ์˜ ์ง‘ํ•ฉ E๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ณ , (๊ธฐ๋Œ€ํ•˜๊ฑด๋ฐ) E์˜ ํฌ๊ธฐ๊ฐ€ ๊ฑฐ์˜

๋น„์–ด์žˆ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, T์—์„œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์‹ค, ์‹œ๊ฐ„ ๋ณต์žก๋„์— ๋Œ€ํ•œ ๊ด€์‹ฌ์ด ์—†๋‹ค๋ฉด, ๊ทธ๋ƒฅ ๋‹จ์ˆœํžˆ T = โˆ…, E = E(G) (E(G) = G

์˜ ์—์ง€ ์ง‘ํ•ฉ) ๋กœ ๋‘๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋„ ์ „ํ˜€ ์ƒ๊ด€์ด ์—†๋‹ค. L = R์ผ ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ T

๋กœ ์•Œ์•„๋‚ธ ๊ฒŒ ์—†์œผ๋ฉฐ, E์— ๋“ค์–ด๊ฐˆ ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•˜๋Š” ๊ฐ„์„ ๋“ค์ด ๋‹น์—ฐํžˆ ์ „๋ถ€ ๋“ค์–ด๊ฐ€

์žˆ๊ธฐ ๋•Œ๋ฌธ์—, MST๋ฅผ ๊ทธ๋•Œ ๊ทธ๋•Œ ๊ตฌํ•ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฅผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด

๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Algorithm 2 Poor Manโ€™s Offline Dynamic MST, O(Mฮฑ(M)) per query

1: procedure solve(G, [L,R], T, E)

2: if L = R then

3: E๋ฅผ ํ† ๋Œ€๋กœ ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ•จ.

4: else

5: solve(G, [L, (L+R)/2], T, E)

6: solve(G, [(L+R)/2 + 1, R], T, E)

7: end if

8: end procedure

9: Call solve(G, [0, Qโˆ’ 1], โˆ…, E(G))

Page 7: Dynamic Minimum Spanning Tree

Dynamic Minimum Spanning Tree

๋‹น์—ฐํ•˜์ง€๋งŒ, ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋Š๋ฆฌ๊ณ , ๋ถ„ํ• ์ •๋ณต์„ ํ•˜๋Š” ์˜๋ฏธ๋„ ์—†๋‹ค. ๊ณ ๋กœ ์šฐ๋ฆฌ๋Š” ์žฌ๊ท€

๋ฅผ์ง„ํ–‰ํ•˜๋Š”๊ณผ์ •์—์„œ์ถฉ๋ถ„ํžˆ T๋ฅผํฌ๊ฒŒ์œ ์ง€์‹œํ‚ค๊ณ ,์ถฉ๋ถ„ํžˆ E๋ฅผ์ž‘๊ฒŒ์œ ์ง€์‹œ์ผœ์•ผํ•œ๋‹ค.

ํ•œํŽธ, [L,R]๊ตฌ๊ฐ„์—์„œ๊ฐ€์ค‘์น˜๊ฐ€๋ฐ”๋€Œ๋Š”์—์ง€๋“ค์€๋งŽ์•„์•ผ Rโˆ’L+1๊ฐœ์กด์žฌํ•œ๋‹ค.์ด๋“ค์˜

๊ฐ€์ค‘์น˜์—์ƒ๊ด€์—†์ดํ•ญ์ƒ์ตœ์†Œ์ŠคํŒจ๋‹ํŠธ๋ฆฌ๋ฅผ์ด๋ฃจ๋Š”์—์ง€๋“ค์„๊ตฌํ• ์ˆ˜์žˆ์„๊นŒ?์•„๋‹ˆ๋ฉด,

์ด๋“ค์˜ ๊ฐ€์ค‘์น˜์— ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ์ด๋ฃจ์ง€ ์•Š๋Š” ์—์ง€๋“ค์„ ๊ตฌํ•  ์ˆ˜ ์žˆ

์„๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์ด๋“ค์˜ ๊ฐœ์ˆ˜๋Š” ์–ผ๋งˆ๋‚˜ ๋  ๊นŒ? ํ•ญ์ƒ ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ์ด๋ฃจ๋Š” ์—์ง€๋“ค์€

T์— ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ์—์ง€๋“ค์€ E์—์„œ ์ œ๊ฑฐํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.

์ด์ œ, S([L,R]) ์„ ๊ตฌ๊ฐ„ [L,R] ์—์„œ ๊ฐ€์ค‘์น˜๊ฐ€ ๋ฐ”๋€Œ๋Š” ์—์ง€๋“ค์˜ ์ง‘ํ•ฉ์ด๋ผ๊ณ  ํ•˜์ž. ๋‹ค์Œ

Lemma๋“ค์„ ํ†ตํ•ด์„œ ์œ„ ๊ด€์ฐฐ๋“ค์„ ๊ตฌ์ฒดํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

Lemma 1. T โˆช E์—์„œ S([L,R]) ์— ์†ํ•˜๋Š” ์—์ง€๋“ค์— ๊ฐ€์ค‘์น˜ โˆ’โˆž ๋ฅผ ๋งค๊ธด ํ›„ ์ตœ์†Œ ์Šค

ํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ–ˆ์„ ๋•Œ, ์ด ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ์— ์†ํ•˜๋Š” ์—์ง€๋“ค์€ ์–ด๋– ํ•œ ์ฟผ๋ฆฌ์—์„œ๋„ ๋ฌด์กฐ๊ฑด

์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ์ด๋ฃฌ๋‹ค.

Lemma 2. T โˆชE์—์„œ S([L,R])์—์†ํ•˜๋Š”์—์ง€๋“ค์—๊ฐ€์ค‘์น˜โˆž์„๋งค๊ธดํ›„์ตœ์†Œ์ŠคํŒจ๋‹

ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ–ˆ์„ ๋•Œ, ์ด ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ์— ์†ํ•˜์ง€ ์•Š๋Š” ์—์ง€๋“ค์€ ์–ด๋– ํ•œ ์ฟผ๋ฆฌ์—์„œ๋„ ์ ˆ๋Œ€

์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ์ด๋ฃจ์ง€ ์•Š๋Š”๋‹ค.

Lemma 3. ํŽธ์˜์ƒ G๊ฐ€ ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ž. Lemma 1๊ณผ 2๋ฅผ ์ ์šฉ์‹œํ‚จ ์ดํ›„,

E์˜ ํ›„๋ณด๋กœ ๋‚จ๋Š” ์—์ง€๋Š” ๋งŽ์•„์•ผ O(Rโˆ’ L+ 1) ๊ฐœ์ด๋‹ค.

Proof. E์—์„œ ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ์ด๋ฃจ๋Š” ๊ฐ„์„ ๋“ค ์ค‘, ๊ฐ€์ค‘์น˜ โˆ’โˆž์˜ ๊ฐ„์„ ์€ ๋งŽ์•„์•ผ

O(R โˆ’ L + 1) ๊ฐœ ์žˆ๊ณ , ๋‚˜๋จธ์ง€ ๊ฐ„์„ ๋“ค์€ ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ์ด๋ฃธ์ด ํ™•์‹คํ•œ ๊ฐ„์„ ๋“ค์ด

๋‹ค.์ดํ™•์‹คํ•œ๊ฐ„์„ ๋“ค๋กœ์ด๋ฃจ์–ด์ง„ํฌ๋ ˆ์ŠคํŠธ์—์„œ,๊ฐ์ปดํฌ๋„ŒํŠธ๋ฅผํ•˜๋‚˜์˜์ •์ ์œผ๋กœ๋ฌถ์–ด์„œ

์ƒ๊ฐํ•˜์ž. ๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜ โˆž๋ฅผ ๋งค๊ฒผ๋‹ค๋Š” ๊ฒƒ์€ ๊ทธ๋ž˜ํ”„์—์„œ ์—†์•ด๋‹ค๋Š” ๊ฒƒ๊ณผ ํฐ ์ฐจ์ด๊ฐ€ ์—†

์œผ๋‹ˆ, ์ด๋ ‡๊ฒŒ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์••์ถ•๋œ ๊ทธ๋ž˜ํ”„์—์„œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ์ด๋ฃจ๋Š” ๊ฐ„์„ ๋“ค๋งŒ์ด E์˜

ํ›„๋ณด๋กœ ๋‚จ๊ฒŒ ๋œ๋‹ค. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์••์ถ•๋œ ๊ทธ๋ž˜ํ”„๋Š” ๋งŽ์•„์•ผ Rโˆ’L+ 1 ๊ฐœ์˜ ์ •์ ์„ ๊ฐ€์ง€๋‹ˆ,

์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ์ด๋ฃจ๋Š” ๊ฐ„์„ ๋„ R โˆ’ L+ 1๊ฐœ์ด๋‹ค. ์—ฌ๊ธฐ์— S([L,R]) ์— ์†ํ•˜๋Š” ์—์ง€๋“ค์„

๋”ํ•ด์•ผ ํ•˜์ง€๋งŒ, ์—ฌ์ „ํžˆ O(Rโˆ’ L+ 1) ์˜ ํฌ๊ธฐ๊ฐ€ ๋‚˜์˜จ๋‹ค.

Page 8: Dynamic Minimum Spanning Tree

Dynamic Minimum Spanning Tree

์ด์ œ, ๊ฐ๊ฐ์˜ ์žฌ๊ท€ ํ•จ์ˆ˜ ์ฝœ์—์„œ |E| โ‰ค O(R โˆ’ L + 1) ์ด๋ผ๋Š” ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ฐ€์ •ํ•  ์ˆ˜

์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ฆ‰, ์œ„์—์„œ ๋งํ•œ ๊ณ„์‚ฐ์„ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฌธ์ œ๋ฅผ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๊ฒŒ

ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ, T์˜ ํฌ๊ธฐ๊ฐ€ O(N) ์— ์œก๋ฐ•ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค์ œ๋กœ ์œ„์˜

๊ณผ์ •์„์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ๋Š” O(|T |+ |E|) โ‰ค O(N+Rโˆ’L+1)์˜์‹œ๊ฐ„์ด์†Œ๋ชจ๋œ๋‹ค. (์‹ค์ œ๋กœ๋Š”

logarithmic factor๊ฐ€ ๋” ๋ถ™์„ ์ˆ˜๋„ ์žˆ๋‹ค.)

Algorithm 3 Lesser Poor Manโ€™s Offline Dynamic MST, O(N) per query

1: procedure solve(G, [L,R], T, E)

2: if L = R then

3: ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ•จ (|E| = 1์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœ ์ผ€์ด์Šค ๋ถ„์„.)

4: else

5: T,E, S([L,R) ์„ ์‚ฌ์šฉํ•ด์„œ ๋” ํฐ T โ€ฒ์™€ ๋” ์ž‘์€ E โ€ฒ๋ฅผ ํ˜•์„ฑ

6: solve(G, [L, (L+R)/2], T โ€ฒ, E โ€ฒ)

7: solve(G, [(L+R)/2 + 1, R], T โ€ฒ, E โ€ฒ)

8: end if

9: end procedure

10: Call solve(G, [0, Qโˆ’ 1], โˆ…, E(G))

์ด๋ฅผ ์ตœ์ข…์ ์œผ๋กœ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ๋Š”, T์— ์†ํ•˜๋Š” ์—์ง€๋“ค์ด ์‚ฌ์‹ค์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•ฉ์ณ์ฃผ๋Š”

์—ญํ•  ์™ธ์—๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด์—์„œ ํฐ ์—ญํ• ์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๊ด€์ฐฐํ•˜๋ฉด ๋œ๋‹ค. ์•Œ๊ณ 

๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰ ๊ณผ์ •์—์„œ, T์— ์†ํ•˜๋Š” ์—์ง€๋“ค์ด ์ƒˆ๋กญ๊ฒŒ ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค๋ฉด, ์ด ์—์ง€๋Š” ๋ฌด์กฐ๊ฑด

์ŠคํŒจ๋‹ ํŠธ๋ฆฌ ์ƒ์— ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—์ง€๊ฐ€ ์ž‡๋Š” ๋‘ ์ •์ ์„ ๋‹ค๋ฅด๊ฒŒ ๋ณด๋Š” ํšจ๊ณผ๊ฐ€ ๊ฑฐ์˜ ์—†

๋‹ค. ์ฆ‰, T์— ์†ํ•˜๋Š” ์—์ง€๋“ค์ด ์ƒˆ๋กญ๊ฒŒ ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค๋ฉด, Union-Find ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ

๊ทธ๋ž˜ํ”„ ์ƒ์˜ ๋‘ ์ •์ ์„ ํ•ฉ์ณ์ค„ ์ˆ˜ ์žˆ๊ณ , ์ด๋Ÿฌํ•œ ํ•ฉ์ณ์ง„ ์ •์ ๋“ค์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„

๋‹ค๋ฉด ์ด์ œ ๋ชจ๋“  ๊ฒƒ์ด E์™€ S([L,R]) ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋กœ๋งŒ ๊ท€๊ฒฐ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์œ„ ํ•ฉ์ณ์ฃผ๋Š”

๊ณผ์ •์„ O((Rโˆ’ L+ 1) log(Rโˆ’ L+ 1) ์‹œ๊ฐ„์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์ œ์™„์ „ํ•œ์•Œ๊ณ ๋ฆฌ์ฆ˜์„์œ ๋„ํ• ์ˆ˜์žˆ๊ณ ,์ด์•Œ๊ณ ๋ฆฌ์ฆ˜์˜์‹œ๊ฐ„๋ณต์žก๋„๋Š” T (N) = T (N/2)ร—

2 +O(N logN), ์ฆ‰ O(Q log2Q)๊ฐ€ ๋œ๋‹ค.

Page 9: Dynamic Minimum Spanning Tree

Dynamic Minimum Spanning Tree

Algorithm 4 Offline Dynamic MST, O(log2Q) per query

1: procedure solve(G, [L,R], T, E)

2: if L = R then

3: ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ•จ (|E| = 1์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœ ์ผ€์ด์Šค ๋ถ„์„.)

4: else

5: T,E, S([L,R) ์„ ์‚ฌ์šฉํ•ด์„œ ๋” ํฐ T โ€ฒ์™€ ๋” ์ž‘์€ E โ€ฒ๋ฅผ ํ˜•์„ฑ

6: solve(G, [L, (L+R)/2], T โ€ฒ, E โ€ฒ)

7: solve(G, [(L+R)/2 + 1, R], T โ€ฒ, E โ€ฒ)

8: end if

9: end procedure

10: Call solve(G, [0, Qโˆ’ 1], โˆ…, E(G))

3.1 ์—ฐ์Šต ๋ฌธ์ œ

์‹ค์ œ ๊ตฌํ˜„์„ ํ•ด ๋ณด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•œ ์—ฐ์Šต ๋ฌธ์ œ์ด๋‹ค. ๋‚œ์ด๋„ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค.

โ€ข https://dmoj.ca/problem/ccoprep4p3

โ€ข http://codeforces.com/gym/101246/problem/L

โ€ข https://www.acmicpc.net/problem/7148

4 General Case : Online Algorithm

๊ฐ„์„ ์˜๊ฐ€์ค‘์น˜๋ฅผ๋ฐ”๊พธ๋Š”ํ˜•ํƒœ์˜์งˆ์˜๊ฐ€๋“ค์–ด์™”์„๋•Œ์ด๋ฅผ์˜จ๋ผ์ธํ˜•ํƒœ๋กœํ•ด๊ฒฐํ•˜๋Š”์•Œ๊ณ 

๋ฆฌ์ฆ˜๋“ค์„ ๋‚˜์—ดํ•œ๋‹ค. ์•„์ง๊นŒ์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€ํšŒ์˜ ๋ฒ”์œ„์— ๋“ค์–ด์˜จ ๋ฌธ์ œ๋“ค์€ ์•„๋‹ˆ๋ฉฐ (๊ณ ๋กœ

์—ฐ์Šต ๋ฌธ์ œ๋„ ์—†๋‹ค.) ๋ชจ๋‘ ์˜คํ”„๋ผ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋น„ํ•ด์„œ ๋ณต์žกํ•˜๊ณ  ์ˆ˜ํ–‰ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.

๊ณ ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์กด์žฌ์„ฑ ์ •๋„๋งŒ ์ฐธ๊ณ ํ•ด ๋‘๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋‹ค.

โ€ข ์งˆ์˜๋‹น O(โˆšm) ์— ํ•ด๊ฒฐ : Frederickson, Greg N. โ€Data structures for on-line

updating of minimum spanning trees, with applications.โ€ SIAM Journal on

Computing 14.4 (1985): 781-798. [5]

Page 10: Dynamic Minimum Spanning Tree

Dynamic Minimum Spanning Tree

โ€ข ์งˆ์˜๋‹น O(โˆšn) ์— ํ•ด๊ฒฐ : Eppstein, David, et al. โ€Sparsificationโ€”a technique

for speeding up dynamic graph algorithms.โ€ Journal of the ACM (JACM) 44.5

(1997): 669-696. [6]

โ€ข ์งˆ์˜๋‹น O(log4 n) ์— ํ•ด๊ฒฐ : Holm, Jacob, Kristian De Lichtenberg, and Mikkel

Thorup. โ€Poly-logarithmic deterministic fully-dynamic algorithms for connec-

tivity, minimum spanning tree, 2-edge, and biconnectivity.โ€ Journal of the ACM

(JACM) 48.4 (2001): 723-760. [7]

5 References

1. https://en.wikipedia.org/wiki/Minimum_spanning_tree#Related_

problems

2. https://www.acmicpc.net/problem/status/10724

3. http://topology-blog.tistory.com/5

4. Eppstein, David. โ€Offline algorithms for dynamic minimum spanning tree prob-

lems.โ€ Journal of Algorithms 17.2 (1994): 237-250. https://www.ics.uci.edu/

หœeppstein/pubs/Epp-TR-92-04.pdf

5. Frederickson, Greg N. โ€Data structures for on-line updating of minimum spanning

trees, with applications.โ€ SIAM Journal on Computing 14.4 (1985): 781-798. https:

//docs.lib.purdue.edu/cgi/viewcontent.cgi?referer=&httpsredir=

1&article=1367&context=cstech

6. Eppstein, David, et al. โ€Sparsificationโ€”a technique for speeding up dynamic graph

algorithms.โ€ Journal of the ACM (JACM) 44.5 (1997): 669-696. http://www.cs.

ust.hk/mjg_lib/bibs/qzhang_lib/Dynamic/p669-eppstein.pdf

7. Holm, Jacob, Kristian De Lichtenberg, and Mikkel Thorup. โ€Poly-logarithmic de-

terministic fully-dynamic algorithms for connectivity, minimum spanning tree, 2-edge,

and biconnectivity.โ€ Journal of the ACM (JACM) 48.4 (2001): 723-760. https://

www.cs.princeton.edu/courses/archive/fall03/cs528/handouts/Poly%

20logarithmic.pdf