Union-Find

Union-Find ๋Š” ์ƒํ˜ธ๋ฐฐํƒ€์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ง‘ํ•ฉ์„ ํšจ์œจ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ฆ‰, ๊ณตํ†ต ์›์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„ ์ง‘ํ•ฉ๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ์ง‘ํ•ฉ์„ ๋ณ‘ํ•ฉํ•˜๋Š” Union ์—ฐ์‚ฐ๊ณผ ์ง‘ํ•ฉ์˜ ์›์†Œ๊ฐ€ ์–ด๋–ค ์ง‘ํ•ฉ์— ์†ํ•ด์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” Find ์—ฐ์‚ฐ์ด ์กด์žฌํ•œ๋‹ค.

Find

Find ์—ฐ์‚ฐ์€ ํ•œ ์›์†Œ๊ฐ€ ์–ด๋–ค ์ง‘ํ•ฉ์˜ ์†ํ•ด์žˆ๋Š”์ง€ ์ฐพ๋Š” ์—ฐ์‚ฐ์ด๋‹ค.

ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ์— ์žˆ๋Š” ๊ฐ ์›์†Œ๋“ค์„ ๊ฐ™์€ ์ง‘ํ•ฉ์— ์†ํ•ด์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด์•ผ ํ•œ๋‹ค.

Find ์—ฐ์‚ฐ์€ ์›์†Œ๊ฐ€ ์†ํ•ด์žˆ๋Š” ์ง‘ํ•ฉ์˜ ๋ฃจํŠธ ๋…ธํŠธ๋ฅผ ์ฐพ๋Š”๋‹ค.

์œ„ ๊ฒฝ์šฐ์—์„œ Find(1) = Find(3) = Find(2) = Find(4) = 1 ๋กœ ๋‹ค ๊ฐ™๋‹ค.

Find(x) : x๊ฐ€ ์†ํ•œ ์ง‘ํ•ฉ์˜ ๋ฃจํŠธ ๋…ธ๋“œ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.

set[x] ๋Š” x๊ฐ€ ์†ํ•ด์žˆ๋Š” ์ง‘ํ•ฉ์„ ๋œปํ•œ๋‹ค. ๋งŒ์•ฝ set[x] ๊ฐ€ x๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ, ์žฌ๊ท€์ ์œผ๋กœ ์ง‘ํ•ฉ์˜ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ฐพ์•„๊ฐ„๋‹ค.

์œ„์˜ ์ด๋ฏธ์ง€์—์„œ set ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

0
1
2
3
4
5

0

1

1

1

2

5

Union

Union ์—ฐ์‚ฐ์€ ๋‘ ์›์†Œ๊ฐ€ ์†ํ•œ ์ง‘ํ•ฉ์„ ํ•ฉ์นœ๋‹ค.

์œ„ ์ƒํ™ฉ์—์„œ Union(5, 2) ์˜ ๊ฒฝ์šฐ 5์™€์™€ 2๊ฐ€ ์†ํ•œ ๊ฐ๊ฐ์˜ ์ง‘ํ•ฉ์„ ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ•ฉ์นœ๋‹ค.

Union(x, y) : x์™€ y๊ฐ€ ์†ํ•œ ๋‘ ์ง‘ํ•ฉ์„ ํ•ฉ์นœ๋‹ค.

์œ„ ์ด๋ฏธ์ง€์—์„œ Union(5, 2) ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด set ์€ ๋ณ€๊ฒฝ๋œ๋‹ค.

0
1
2
3
4
5

1

1

1

1

2

0

Union-Find ์ตœ์ ํ™”

๋งŒ์•ฝ ํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ๋น„๋Œ€์นญ์ธ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

Untitled
0
1
2
3
4
5

0

0

1

2

3

4

Find(5) ์˜ ๊ฒฝ์šฐ Find ์—ฐ์‚ฐ์„ 5ํšŒ ๋ฐ˜๋ณตํ•ด์•ผ ํ•œ๋‹ค. ์œ„ ๊ทธ๋ฆผ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•œ๋‹ค๋ฉด ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ค.

0
1
2
3
4
5

0

0

0

0

0

0

Find ์—ฐ์‚ฐ ์ตœ์ ํ™”

์ด ์ƒํ™ฉ์—์„œ Find(2) ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ, 2-1-0 ์œผ๋กœ ํƒ€๊ณ  ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋œ๋‹ค.

์ด๋•Œ, set[2] ์™€ set[1] ์˜ ๊ฐ’์„ ์ง‘ํ•ฉ์˜ ๋ฃจํŠธ๋…ธ๋“œ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค. (set[1]์€ ์ด๋ฏธ 0)

0
1
2
3
4
5

0

0

1 โ†’ 0

1

0

0

Find ์—ฐ์‚ฐ์„ ํ•˜๋ฉด์„œ ์œ„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋ฉด, ๋‹ค์Œ Find ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋น„๊ต์  ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋‚ฎ์•„์ง„๋‹ค.

Union ์—ฐ์‚ฐ ์ตœ์ ํ™”

๋‘ ์ง‘ํ•ฉ์„ ํ•ฉ์น  ๋•Œ, ๋†’์ด๊ฐ€ ๋” ๋‚ฎ์€ ์ง‘ํ•ฉ์„ ๋†’์ด๊ฐ€ ๋” ๋†’์€ ์ง‘ํ•ฉ ๋ฐ‘์— ๋„ฃ๋Š”๋‹ค.

๋†’์ด๊ฐ€ ๋” ๋†’์€ ์ง‘ํ•ฉ(๋†’์ด N)์„ ๋†’์ด๊ฐ€ ๋” ๋‚ฎ์€ ์ง‘ํ•ฉ(๋†’์ด M) ๋ฐ‘์œผ๋กœ ํ•ฉ์น˜๋Š” ๊ฒฝ์šฐ, ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(N + M - 1) = 4๊ฐ€ ๋œ๋‹ค.

ํ•˜์ง€ ๋†’์ด๊ฐ€ ๋” ๋‚ฎ์€ ์ง‘ํ•ฉ์„ ๋†’์ด๊ฐ€ ๋” ๋†’์€ ์ง‘ํ•ฉ์— ํ•ฉ์น˜๋Š” ๊ฒฝ์šฐ, O(N) = 3์œผ๋กœ ์œ ์ง€๋œ๋‹ค.

Last updated