์ ์ฅ ํธ๋ฆฌ (Spanning Tree)
๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ์ต์ ์ฐ๊ฒฐ ๋ถ๋ถ ๊ทธ๋ํ๋ฅผ ๋งํ๋ค. ์ฆ, N๊ฐ์ ์ ์ ์ ๊ฐ์ง๋ ๊ทธ๋ํ ์ค ๋ชจ๋ ์ ์ ์ ํฌํจํ๋ฉด์ ์ต์ ๊ฐ์ ์ ์์ธ N-1๊ฐ์ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๋ถ๋ถ ๊ทธ๋ํ๋ฅผ ๋ปํ๋ค. ํน์ ๊ทธ๋ํ์์ ์ต์ ๊ฐ์ ์์ธ N-1๊ฐ์ ๊ฐ์ ์ ๊ฐ์ง๊ณ ์๋ ๊ทธ๋ํ๋ ํธ๋ฆฌ ํํ๋ฅผ ์ด๋ฃฐ ์ ๋ฐ์ ์์ด ์ ์ฅ "ํธ๋ฆฌ"๋ผ๊ณ ํ๋ค.
๐น์ ์ ์: N
๐น๊ฐ์ ์: N-1
๐น์ฆ, ๊ทธ๋ํ ๋ด ๋ชจ๋ ์ ์ ์ ํฌํจํ๋ ํธ๋ฆฌ (์ฌ์ดํด ์กด์ฌ X)
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ๋์ ๊ทธ๋ํ์์ ์ ์ฅ ํธ๋ฆฌ๋ ์ฌ๋ฌ๊ฐ๊ฐ ์กด์ฌํ ์ ์๋ค. ์ด๋ ํ๋์ ๊ทธ๋ํ์์ ์์ฑ๋ ์ ์๋ ์ ์ฅ ํธ๋ฆฌ ์ค ๊ฐ์ค์น์ ํฉ์ด ๊ฐ์ฅ ์์ ํธ๋ฆฌ๋ฅผ ์ต์ ์ ์ฅ ํธ๋ฆฌ๋ผ๊ณ ํ๋ค. MST๋ฅผ ๊ตฌํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค.
๐ก ์ต์ ์ ์ฅ ํธ๋ฆฌ (MST: Minimum Spanning Tree)
GRANT ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์์๊ฒ ๊ถํ์ ๋ถ์ฌ
REVOKE ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์์๊ฒ ๊ถํ์ ์ทจ์
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ
๊ทธ๋ฆฌ๋ํ ๋ฐฉ๋ฒ์ ์ด์ฉํด ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ์ ์ต์ ๋น์ฉ์ผ๋ก ์ฐ๊ฒฐํ๋ฉฐ ์ต์ ์ ํด๋ต์ ๋์ถํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ํ์ง๋ง ๋ฌด์์ ์ต์ ๊ฐ์ ๋ง ์ ํํ๋ค๋ณด๋ฉด ์ฌ์ดํด์ด ๋ฐ์ํ๋ฉฐ ์ต์ ์ ์ฅ ํธ๋ฆฌ์ ํน์ง์ ๋ฌด์ํด๋ฒ๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ดํด์ ํ์ฑํ์ง ์๋ ์ต์ ๋น์ฉ์ ๊ฐ์ ์ ์ ํํด์ผ ํ๋ค.
1. ๊ทธ๋ํ์ ๊ฐ์ ๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
2. ์ ๋ ฌ๋ ๊ฐ์ ๋ค ํ์ํ๋ฉฐ MST ์งํฉ์ ํฌํจ (์ฌ์ดํด์ ํ์ฑํ์ง ์๋, ์ต์ ๋น์ฉ์ ๊ฐ์ ์ ํ)
- ์ ํํ ๊ฐ์ ์ด ์ฌ์ดํด ํ์ฑ → ํธ๋ฆฌ ์งํฉ์ ํฌํจ X
- ์ ํํ ๊ฐ์ ์ด ์ฌ์ดํด ํ์ฑ X → ํธ๋ฆฌ ์งํฉ์ ํฌํจ
3. 2๋ฒ ๊ณผ์ ์ N-1๋ฒ ๋ฐ๋ณต (๋ชจ๋ ์ ์ ์ ์ฐ๊ฒฐํ ๋๊น์ง)
1. ๊ฐ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
์์ ๊ฐ์ด ๊ทธ๋ํ๊ฐ ์์ ๋, ๊ฐ์ ์ ๊ฐ์ค์น๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค. ์ฌ๊ธฐ์ ๊ฐ์ (4,5)๋ ์ ์ 4์ ์ ์ 5๋ฅผ ์๋ ๊ฐ์ ์ด๋ผ๋ ์๋ฏธ์ด๋ค.
2. ์ฌ์ดํด์ ํ์ฑํ์ง ์๋ ์ต์ ๋น์ฉ ๊ฐ์ ์ ํ
๊ฐ์ค์น๊ฐ ์์ ์์๋ถํฐ ์ ๋ ฌ๋์ด ์๋ ๊ฐ์ ๋ฆฌ์คํธ์์ ๊ทธ๋ฆฌ๋ํ๊ฒ ๊ฐ์ฅ ์์ ๊ฐ์ ์ MST์ ํฌํจ์ํจ๋ค. ํ์์ MST์ ํฌํจ์ํจ ๊ฐ์ ์ ํ๋์์ผ๋ก ํ์ํ๋ค.
๋ค์ ๊ฐ์ ์ ์ดํผ๊ณ ์ฌ์ดํด์ด ๋ฐ์ํ๋์ง ํ์ธํ๋ค. ๊ฐ์ (1,5)๋ฅผ ํฌํจ์์ผ๋ ์ฌ์ดํด์ด ๋ฐ์ํ์ง ์์ผ๋ฏ๋ก MST์ ํฌํจ์ํจ๋ค.
๊ฐ์ (3,4) ์ญ์ ํฌํจ์์ผ๋ ์ฌ์ดํด์ด ๋ฐ์ํ์ง ์์ผ๋ฏ๋ก ํฌํจ์ํจ๋ค.
๊ฐ์ (1, 3)์ ํฌํจ์ํค๋ ค๊ณ ํ๋ ์ฌ์ดํด์ด ๋ฐ์ํ๋ฏ๋ก ๊ฐ์ (1,3)์ MST์ ํฌํจ์ํค์ง ์๋๋ค.
๊ฐ์ (2,3) ๊น์ง ํฌํจํ๊ณ ๋๋ ๊ฐ์ 4๊ฐ๊ฐ ํฌํจ๋์๊ณ , ์ ์ ์ด 5๊ฐ์ธ ๊ทธ๋ํ์์ ์ต์ ๊ฐ์ ์ ์๋ 4๊ฐ์ด๋ฏ๋ก ํ์์ ์ข ๋ฃํ๋ค. ์ด๋ก์จ ๊ฐ์ค์น์ ํฉ์ด 14์ธ ์ต์ ์ ์ฅ ํธ๋ฆฌ๊ฐ ๊ตฌํด์ก๋ค.
์ฌ์ดํด ์์ฑ ์ฌ๋ถ ํ์ธ
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ ์์ฒด๋ ์ฌ์ดํด ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ์กฐ๊ฑด ํ๋์ ๊ทธ๋ฆฌ๋ํ ๋ฐฉ์์ผ๋ก ๋น์ฉ์ ์ต์ํํ๋ ๊ฒ์ผ๋ก ๊ฐ๋จํ ์ดํดํ ์ ์๋ค. ๊ทธ๋ฆฌ๋ํ๊ฒ ์์ ๋น์ฉ๋ถํฐ ํ์ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ ฌ์ ํตํด ๊ตฌํํ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฌ์ดํด์ด ์์ฑ๋๋์ง ํ์ธํ๋ ๊ฒ์ ์ด๋ป๊ฒ ํ ๊น? ์๋ก์ ์งํฉ์ ํํํ๋ ๋ฐฉ๋ฒ์ธ Union-Find ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์ฌ์ดํด์ด ์์ฑ๋๋์ง ํ๋จํ ์ ์๋ค.
// union-find ํฌ์คํ ๋งํฌ
Union-Find ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์ถ๊ฐํ๊ณ ์ ํ๋ ๊ฐ์ ์ ์ ๋ ์ ์ ์ด ๊ฐ์ ์งํฉ์ ์ํด ์๋์ง๋ฅผ ๊ฒ์ฌํ๋ค.
๐น๋ ์ ์ ์ด ๊ฐ์ ์งํฉ์ ์ํจ → ์ฌ์ดํด ์์ฑ
๐น๋ ์ ์ ์ด ๊ฐ๊ฐ ๋ค๋ฅธ ์งํฉ์ ์ํจ → ์ฌ์ดํด ์์ฑ X
๐ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ ์ถ์ฒ ๋ฌธ์
๐ ๋ฐฑ์ค 1197 ์ต์ ์คํจ๋ ํธ๋ฆฌ