๐ง Spanning Tree
๊ทธ๋ ํ ๋ด์ ๋ชจ๋ ์ ์ ์ ํฌํจํ๋ ํธ๋ฆฌ๋ค ์ค, ์ต์ ์ฐ๊ฒฐ ํธ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค.
์ต์ ์ฐ๊ฒฐ์ ์๋ฏธ๋ ๊ฐ์ ์ ์๊ฐ ๊ฐ์ฅ ์ ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ์ด๋ฅผ ์ํด์๋ ์ฌ์ดํด์ด ์กด์ฌํด์๋ ์๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ ์ ์ ์๊ฐ $n$ ๊ฐ์ธ ๊ทธ๋ํ์ Spanning Tree๋ edge๊ฐ ์ ํํ $n-1$ ๊ฐ ์กด์ฌํฉ๋๋ค.
๋ํ ํ๋์ ๊ทธ๋ํ์๋ ๋ง์ ์ ์ฅ ํธ๋ฆฌ๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค.
๐ง ์ต์ ์ ์ฅ ํธ๋ฆฌ (MST)
์ ์ฅ ํธ๋ฆฌ๋ค ์ค edge๋ค์ ๋น์ฉ(cost)์ ์ด ํฉ์ด ์ต์์ธ ํธ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค.
๋์ผํ Cost๋ฅผ ๊ฐ์ง๋ Edge๊ฐ ์ฌ๋ฌ๊ฐ ์์ ๊ฒฝ์ฐ MST๋ ์ฌ๋ฌ ์ข ๋ฅ๊ฐ ๋์ฌ ์ ์์ผ๋ฉฐ,
๋ฐ๋๋ก ๋ชจ๋ Edge๋ค์ cost๊ฐ ๊ตฌ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ MST๋ ๋จ ํ๋๋ง ์กด์ฌํ ์ ์์ต๋๋ค.
(์ด๋ ๋ค์์ ์ฆ๋ช ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค :D)
๋ค์์ ํ๋์ ๊ทธ๋ํ์ ๋ํ ์ฌ๋ฌ MST๋ฅผ ๋ํ๋ธ ๊ฒ์ ๋๋ค.
MST๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํ๋ฆผ์ ์๊ณ ๋ฆฌ์ฆ์ด ์์ผ๋ฉฐ, ํ๋ํ๋ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ ์๊ณ ๋ฆฌ์ฆ ๋ชจ๋ Greedy Algorithm ์ ์ํฉ๋๋ค.
(์ ๋ง ์ ๋ง ๊ฐ๋จํ๊ฒ๋)
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ edge๋ฅผ ์ด์ฉํ์ฌ MST๋ฅผ ๊ตฌํ๋ฉฐ,
ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ์ vertex๋ฅผ ์ด์ฉํ์ฌ MST๋ฅผ ๊ตฌํฉ๋๋ค.
๐ง Kruskal's Algorithm
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก MST๋ฅผ ๊ตฌํฉ๋๋ค.
์ฐ์ ์ ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Connected graph $G$ ๊ฐ ์ฃผ์ด์ก์ ๋, $G$ ์ MST๋ฅผ $G'$ ์ผ๋ก ํ์ํ๋ฉฐ, $G'$ ์ Edge Set์ $T$ ๋ก ๋ํ๋ ๋๋ค.
1. $T$ ๋ฅผ Empty Set์ผ๋ก ๋๊ณ ์์ํฉ๋๋ค.
2. ํ์ฌ $T$ ์ ์ถ๊ฐํ๋๋ผ๋ ์ฌ์ดํด์ด ์๊ธฐ์ง ์๋ edge๋ค ์ค, ๊ฐ์ค์น(cost)๊ฐ ๊ฐ์ฅ ์์ edge๋ฅผ $T$ ์ ์ถ๊ฐํฉ๋๋ค.
(์ด์ ๊ฐ์ด $T$ ์ edge $e$ ๋ฅผ ์ถ๊ฐํด๋ spanning tree์ ์กฐ๊ฑด์ ๋ง์กฑํ ๋, $T + e$ ๋ feasible(๊ฐ์ฉ)ํ๋ค๊ณ ํฉ๋๋ค.)
(Spanning Tree์ ์กฐ๊ฑด: Connected + ์ต์ ๊ฐ์์ ๊ฐ์ )
3. 2์ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค.
โญ๏ธ ์๋์ฝ๋ - DFS ์ฌ์ฉ
์๊ณ ๋ฆฌ์ฆ์ ์๋์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
(1) : ์ ๋ ฌ์๋ O( $m \; log \; n$ ) ์๊ฐ์ด ์์๋ฉ๋๋ค.
(2) : ์ฌ์ดํด ์ฌ๋ถ ํ๋จ์ $G' = (V(G), T)$ ์ ๋ํ์ฌ DFS๋ฅผ ์ํํ์ฌ ํ๋จํฉ๋๋ค.
๋ฐ๋ผ์ ๊ฐ edge๋ฅผ ์ถ๊ฐํ ๋๋ง๋ค ์ต๋ $O(n + m)$์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก $O(m (n + m))$
(e๋ฅผ ์ถ๊ฐํ์ฌ explore๋ฅผ ํ๋ฉฐ backedge๊ฐ ์๋ค๋ฉด ์ฌ์ดํด)
๋ฐ๋ผ์ ์์ ์๊ณ ๋ฆฌ์ฆ์ ์ด $O(m log n) + O(m(n+m)) = O(m^{2})$ ์๊ฐ์ด ์์๋ฉ๋๋ค.
์ด๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๊ฐ์ ํ๊ธฐ ์ํด Union-Find ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ ์ ์, ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ด ์ต์ ํด๋ฅผ ๋ฐํํจ์ ์ฆ๋ช ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ง ์ฆ๋ช
์ ํฌ๊ฐ ์ฆ๋ช ํ๊ณ ์ ํ๋ ๊ฒ์ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ํญ์ ์ต์ ํด๋ฅผ ๋ฐํํ๋ค๋ ๊ฒ์ ๋๋ค.
์ด๋ฅผ ์ฆ๋ช ํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ๋ณด์กฐ์ ๋ฆฌ๋ค์ ์ฆ๋ช ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
โญ๏ธ Lemma 1 - feasibility(๊ฐ์ฉ์ฑ)
์ฆ๋ช ํ๊ณ ์ ํ๋ ์ฃผ์ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฐ๊ณผ๋ฌผ $G' = (V(G), T)$ ๋ ํญ์ connected ํ๋ค.
์ฆ๋ช ์ ๊ท๋ฅ๋ฒ์ ํตํด ์งํ๋๋ฉฐ ์๋์ ๊ฐ์ต๋๋ค.
$G'$ ์ด connected ๊ฐ ์๋๋ผ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
$V_1, V_2, ..., V_r$ ์ $G'$ ์ connected component๋ค์ด๋ผ ํ๊ฒ ์ต๋๋ค.
$G$ ๋ connected ํ๋ฏ๋ก, ์ผ๋ฐ์ฑ์ ์์ง ์๊ณ
$V_1$ ์์ ์ ์ ๊ณผ $V(G) \setminus V_1 $ ์์ ์ ์ ์ ์ด์ด์ฃผ๋ edge $e$๊ฐ ์ธ์ ๋ ์ ์ด๋ ํ๋ ์กด์ฌํฉ๋๋ค.
ํด๋น edge $e$ ๋ฅผ $G'$ ์ ์ถ๊ฐํ๋๋ผ๋ ๊ทธ๋ํ๋ ์ฌ์ ์ด acyclic ํฉ๋๋ค.
๋ฐ๋ผ์ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ edge $e$ ๋ฅผ ์ถ๊ฐํ๋ค๋ ๊ฒ์ ๋ชจ์์ด ๋ฐ์ํ๋ฉฐ, $G'$ ๋ ํญ์ connected ํ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
โญ๏ธ Lemma 2 - optimality(์ต์ )
์ฆ๋ช ํ๊ณ ์ ํ๋ ์ฃผ์ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ $G$ ์ edge๋ค์ cost๊ฐ ๋ชจ๋ ๋ค๋ฅผ ๋, ์ ์ผํ MST๋ฅผ ๋ฐํํ๋ค.
(๊ฐ์ cost๋ฅผ ๊ฐ์ง edge๊ฐ ์๋ ๊ฒฝ์ฐ, MST๋ ๋ง๋ค์ด์ง์ง๋ง ์ ์ผํจ์ ์ฑ๋ฆฝํ์ง ์์ต๋๋ค.)
์ฆ๋ช ์ ๊ท๋ฅ๋ฒ์ผ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$T$ ๋ฅผ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ด ํฌํจํ๋ edge set,
$T'$ ์ optimal solution(MST)๊ฐ ํฌํจํ๋ edge set ์ด๋ผ ํ๊ฒ ์ต๋๋ค.
๋ง์ฝ $T \neq T'$ ๋ผ๋ฉด, $T' \setminus T$ (์ต์ ํด์ ํฌํจ๋์ง ์๋ ๊ฐ์ ์ค ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ด ๊ณ ๋ฅธ ๊ฐ์ )์ ์ํ๋ ๊ฐ์ $e = (u, v)$ ๊ฐ ์กด์ฌํด์ผ ํฉ๋๋ค.
์ด๋ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ์ํด $T$ ์์ $u$ ์์ $v$ ๊น์ง์ path๋ฅผ ์ด๋ฃจ๋ edge๋ค์ cost์ ์ด ํฉ์ $e$ ์ cost๋ณด๋ค ์์ต๋๋ค. (์๋ ๊ฒฝ์ฐ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ e๋ฅผ ๋ฐ๋์ ํฌํจํฉ๋๋ค.)
์ด๋ $e' $ ๋ฅผ $T$ ์์ $u$ ์์ $v$ ๊น์ง์ path ์ค ์์์ edge๋ผ๊ณ ํ๋ฉด,
$T' \setminus \left\{ e \right\} \cup \left\{ e' \right\}$ ์ ์ด cost๋ $T'$ ์ ์ด cost๋ณด๋ค ์์ผ๋ฉฐ, ํด๋น edge๋ค์ ์ฌ์ ํ spanning tree๋ฅผ ์ด๋ฃน๋๋ค.
๋ฐ๋ผ์ $T'$ ์ด optimal ์ด๋ผ๋ ๊ฐ์ ์ ๋ชจ์๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ฃผ์ฅ์ด ์ฆ๋ช ๋ฉ๋๋ค.
๐ง Union-Find๋ฅผ ์ฌ์ฉํ Kruskal's Algorithm
Union-Find ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด
์ธ์ ํ ๋ ์ ์ $v, u$ ์ ๋ํ์ฌ find()์ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ํด๋น edge๋ฅผ ์ถ๊ฐํ๊ฒ ๋๋ค๋ฉด ์ฌ์ดํด์ด ์๊ธฐ๋ ๊ฒ์ด๋ผ ํ๋จํ ์ ์์ต๋๋ค.
์ฆ Cycle์ด ์๊ธฐ๋ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$find(u) == find(v)$
ํด๋น ์ฑ์ง์ ์ด์ฉํ์ฌ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ ์๋์ฝ๋๋ฅผ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
โญ๏ธ ์๋์ฝ๋ - Union Find ์ฌ์ฉ
(1) : n๊ฐ์ ์ ์ ์ ๋ํด ์ํํ๋ฏ๋ก $O(n)$
(2) : ์ ๋ ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ $O(m \; log \; n )$
(3) : find ๋ฐ union ์ฐ์ฐ์ ์ต๋ m ๋ฒ(๊ฐ์ ์ ๊ฐ์) ์งํํ๋ฏ๋ก $O(m \; log\; n)$
๋ฐ๋ผ์ ์ด $O(m \; log\; n)$ ์ ์๊ฐ์ด ์์๋ฉ๋๋ค.
(3) ์ ๊ฒฝ์ฐ union-find ๊ฒ์๊ธ์์ ์์๋ณธ property 3์ ์ํ์ฌ ์ฑ๋ฆฝํฉ๋๋ค.
$|V(G)| = n$ ์ด๋ผ๊ณ ํ ๋,
m์ ์ต๋ ๊ฐ์๋ $G$ ์ vertex๋ค ์ค ์ค๋ณต์์ด ๋ฌด์์๋ก 2๊ฐ ๊ณ ๋ฅธ ์์ ๊ฐ๊ณ , ์ด๋ $\theta(n^2)$ ์ ๋๋ค.
find ๋ฐ union์ edge ๊ฐ์์ธ m๊ฐ์ ๋ํด m๋ฒ ๋ฐ์ํ๋๋ฐ,
ํ๋ฒ ๋ฐ์ํ ๋๋ง๋ค $log \; m = log(n^2)$ ์ด๊ณ , $log(n^2) = 2\;log\;n $ ์ ๋๋ค.
๐ง Prim's Algorithm
MST๋ฅผ ๊ตฌํ๋ ๋ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
Cut Property ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
โญ๏ธ Cut Property
๊ฐ์ e = ($u$, $v$) ๋ MST์ ๊ฐ์ ๋ค์ ์งํฉ $T$ ์ ์ํด ์๋ค
if and only if
e ๋ ์ ์ $u$๋ฅผ ํฌํจํ ์ด๋ค ์ ์ ๋ค์ ์งํฉ $S$์,
$v$ ๋ฅผ ํฌํจํ $V(G) \setminus S$ ๋ฅผ ์ด์ด์ฃผ๋ ๊ฐ์ ๋ค ์ค ์ ์ผ cost๊ฐ ์๋ค
์ฆ๋ช ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. MST ๊ฐ ์์ ํด๋นํ๋ e ๋์ , $S$ ์ $V(G) - S$ ๋ฅผ ์ด์ด์ฃผ๋ ๋ค๋ฅธ edge $e'$ ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฌ๋ฉด e์ ์ฑ์ง์ ์ํ์ฌ $T - \left\{ e'\right\} \cup \left\{ e\right\}$ ์ ์ด cost๋ ๊ธฐ์กด์ $T$ ์ ์ด cost๋ณด๋ค ์์์ง๋ฏ๋ก, $T$๊ฐ MST์ ๊ฐ์ ๋ค์ ์งํฉ์ ์ํ๋ค๋ ๊ฐ์ ์ ๋ชจ์์ ๋๋ค.
2. $T$ ๊ฐ ์ด๋ค MST๋ฅผ ์ด๋ฃจ๋ ๊ฐ์ ๋ค์ ์งํฉ์ด๋ผ ํ๊ณ ,
$S$ ์ $V(G) - S$ ๋ฅผ ๊ฐ๊ฐ $T - \left\{ e \right\}$ ์ connected component์ ์ํ๋ ์ ์ ๋ค์ ์งํฉ์ด๋ผ ํ๊ฒ ์ต๋๋ค.
์ด๋ $e = (u,v)$ ์์ $u$ ์ $v$ ๋ฅผ ์ด์ด์ฃผ๋ $e$ ๊ฐ ์๋ edge $e' $ ์ ๋ํ์ฌ,
$e'$ ์ cost๊ฐ $e$ ๋ณด๋ค ๋ ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฌ๋ฉด $T - \left\{ e'\right\} \cup \left\{ e\right\}$ ์ ์ด cost๋ ๊ธฐ์กด์ $T$ ์ ์ด cost๋ณด๋ค ์์์ง๋ฏ๋ก,
T๊ฐ MST์ edge set ์ด๋ผ๋ ๊ฐ์ ์ ๋ชจ์์ ๋๋ค.
Cut Property์ ์ํด ์ด๋ค ์์์ ์ ์ ๋ค์ ์งํฉ$S$ (S๋ $V(G)$ ์ ์ง๋ถ๋ถ์งํฉ) ์ ๋ํ์ฌ,
MST๋ $S$์ $V(G) \setminus S$ ๋ฅผ ์ด์ด์ฃผ๋ ๊ฐ์ ๋ค ์ค cost๊ฐ ๊ฐ์ฅ ์์ ๊ฐ์ ์ ์ธ์ ๋ ํฌํจํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ $S$ ์ ์ํ ์ ์ ์ ํ๋์ฉ ๋๋ ค๊ฐ๋ฉฐ cut property๋ฅผ ๋ง์กฑ์ํค๋๋ก ๊ฐ์ ์ ๊ณ ๋ฅด๋ฉด MST๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
โญ๏ธ ์๊ณ ๋ฆฌ์ฆ
๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
1. $S = \left\{ v \right\}$ ๋ก ์ค์ ํฉ๋๋ค.
$v$ ๋ $G$ ์์ ์๋ฌด vertex๋ ์๊ด์์ต๋๋ค.
2. $S$ ์ $V(G) \setminus S$ ๋ฅผ ์ด์ด์ฃผ๋ edge๋ค ์ค ๊ฐ์ฅ ์์ cost๋ฅผ ๊ฐ์ง $e = (v, w)$๋ฅผ, MST์ edge set $T$ ์ ์ถ๊ฐํฉ๋๋ค.
3. vertex $w$ ๋ฅผ $S$ ์ ์ถ๊ฐํฉ๋๋ค.
4. 2๋ฒ๊ณผ 3๋ฒ์ ๊ณผ์ ์ $S = V(G)$ ๊ฐ ๋ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
โญ๏ธ ์๋์ฝ๋
(1) : ์ ์ ์ ๊ฐ์์ธ n๋ฒ ๋ฐ๋ณตํ๋ฏ๋ก $O(n)$
(2) : ํด๋น ์กฐ๊ฑด์ ํด๋นํ๋ edge๋ฅผ ์ฐพ๊ธฐ ์ํด $v, w$ ๋ฅผ ์ฐ๊ฒฐํ๋ edge๋ฅผ ๋ชจ๋ ๊ฒ์ฌํด์ผ ํ๋ฏ๋ก ์ต๋ $O(m)$
๋ฐ๋ผ์ ์ด $O(nm)$ ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค.
์๋๋ฅผ ๋ ๋์ด๊ธฐ ์ํด์๋ Priority Queue๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐ง Prim's Algorithm using Priority Queue
์ฌ์ฉ๋๋ Priority Queue์ ์ฐ์ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
(์ด๋ Priority Queue๋ ์๊ฐ ๋ฎ์์๋ก ์ฐ์ ์์๊ฐ ๋๋ค๊ณ ์ค์ ๋์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.)
1. findmin() : Priority Queue ์์ priority๊ฐ ๊ฐ์ฅ ๋์ item ๋ฐํ
2. deletemin() : Priority Queue ์์ priority๊ฐ ๊ฐ์ฅ ๋์ item์ ์ ๊ฑฐ ํ ๋ฐํ
3. insert(item) : Priority Queue ์ ์๋ก์ด item ์ถ๊ฐ
4. delete(item) : item์ Priority Queue ์์ ์ ๊ฑฐํ๊ณ ๋ฐํ
5. decreasekey(item, k) : item์ priority๋ฅผ k๋ก ๋ณ๊ฒฝ
1๋ฒ์ $O(1)$
2, 3๋ฒ์ $O(log \; n)$
4๋ฒ์ heap์ ์์น๋ฅผ ์ ์ฅํ๋ array๋ฅผ ๋ง๋ค์ด deletemin๊ณผ ๋น์ทํ๊ฒ ํด๋น heap์ node๋ฅผ ์ ๊ฑฐํ ์ ์์ผ๋ฏ๋ก $O(log \; n)$
5๋ฒ์ delete + insert๋ฅผ ํตํด ์ฐ์ ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์์ผ๋ฏ๋ก, $O(log\;n)$
์ด๋ฅผ ์ฌ์ฉํ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฐ์ $cost(v)$ ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํฉ๋๋ค.
$V(G)$ ์ ์ํ ์ ์ $v$ ์ ๋ํ์ฌ $cost(v) = min_{u \in S} e(u, v)$
์ฆ $v$ ์ ์ธ์ ํ ์ ์ ๋ค ์ค ๋น์ฉ์ด ์ต์์ธ ๊ฐ์ ์ cost๊ฐ cost(v)๊ฐ ๋ฉ๋๋ค.
1. $cost(v)$ ์ ์ด๊ธฐ๊ฐ์ Prim ์๊ณ ๋ฆฌ์ฆ์ ์์ํ ์ฒซ๋ฒ์งธ ์ ์ ์ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ๋ฌดํ๋๋ก ์ค์ ํฉ๋๋ค.
์ฒซ๋ฒ์งธ ์ ์ ์ 0์ผ๋ก ์ค์ ํฉ๋๋ค.
๋ํ $G$์ ๊ฐ ์ ์ a ์ ๋ํ์ฌ, pre(a) ๋ผ๊ณ ํ๋ ํฌ์ธํฐ๋ฅผ ๋๊ณ ์ด๊ธฐ๊ฐ์ null(์๋ฌด๊ฒ๋ ๊ฐ๋ฆฌํค์ง ์์)๋ก ๋ก๋๋ค.
2. ์ ์ ๋ค์ ๋น์ฉ์ด ์์์๋ก ์ฐ์ ์์๊ฐ ๋๋๋ก ์ค์ ๋ ์ฐ์ ์์ ํ H ์ ๋ํ์ฌ, ๋ชจ๋ ์ ์ ๋ค์ ์ฝ์ ํฉ๋๋ค.
3. H ์์ deletemin ์ ํตํด ์ป์ ์ ์ v ๋ฅผ $S$ ์ ์ถ๊ฐํฉ๋๋ค.
์ดํ pre(v) ๊ฐ null์ด ์๋ ๊ฒฝ์ฐ ๊ฐ์ (v, pre(v)) ๋ฅผ MST์ ๊ฐ์ ๋ค์ ์งํฉ $T$ ์ ์ถ๊ฐํฉ๋๋ค.
(deletemin์ ํตํด ์ป์ ์ ์ v ๋ MST์ ์ํ๋ ์ ์ ๋ค์ ์งํฉ $S$ ์,
$V(G) - S$ ๋ฅผ ์ด์ด์ฃผ๋ ์ ์ ๋ค ์ค ๊ฐ์ฅ ๋น์ฉ์ด ๋ฎ์ ๊ฐ์ ์ ํฌํจ๋๋ฉฐ,
v ๋ ์์ง MST์ ์ํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ถ๊ฐํด ์ฃผ๋ ๊ฒ์ ๋๋ค.)
4. 3๋ฒ์์ ๊บผ๋ธ v ์ ๋ํด, v ์ ์ธ์ ํ ๋ชจ๋ ์ ์ ๋ค์ ๋น์ฉ์ ๋ค์ ๊ณ์ฐํ์ฌ,
cost ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ decreasekey๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝํฉ๋๋ค.
์ด๋ v ์ ์ธ์ ํ ์ด๋ ์ ์ z ์ ๋ํ์ฌ edge e = (v, z) ๋ก ์ธํด cost(z) ์ ๊ฐ์ด ๋ณ๊ฒฝ๋์๋ค๋ฉด,
pre(z) = v ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
5. 3๋ฒ๊ณผ 4๋ฒ์ ๊ณผ์ ์ ์ฐ์ ์์ ํ $H$ ๊ฐ ์์ ํ ๋น ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
โญ๏ธ ์๋์ฝ๋ ( ์ฐ์ ์์ ํ ์ฌ์ฉ )
(1) : makequeue๋ n๋ฒ์ insert๊ฐ ํ์ํ๋ฏ๋ก $O(n \; log\; n)$
(2) : deletemin ์ญ์ n์ ๊ฐ์๋งํผ ์คํ๋๋ฏ๋ก $O(n \; log\; n)$
(3) : ๊ฐ edge๋ฅผ ์ต๋ 2๋ฒ ํ์ธํ๋ฉฐ, decreasekey๋ ์ต๋ m๋ฒ ์ํ๋๊ธฐ ๋๋ฌธ์ $O(m \; log\; n)$
๋ฐ๋ผ์ ์ด $O((m+n) \;log\; n)$ ์๊ฐ์ด ์์๋ฉ๋๋ค.
(3)๋ฒ์ ๊ฒฝ์ฐ decresekey๋ cost๊ฐ ์ ๋ฐ์ดํธ ๋ ๋๋ง ์ํํ๋๋ฐ,
์ด๊ธฐํ ์ edge๊ฐ ์ ๋ถ ๋ฌดํ๋๋ก ์ค์ ํ๋ฏ๋ก ํด๋น edge๋ฅผ ์ฒ์ ๋ง๋ ๋์ cost๊ฐ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
๊ทธ ์ดํ ๋ค์ ํด๋น edge๋ฅผ ๋ง๋๋ฉด ์ด๋ฏธ ์ ๋ฐ์ดํธ๋ cost๋ผ์ decreasekey๋ฅผ ํ์ง ์์ผ๋ฏ๋ก
decreasekey๋ ์ต๋ m๋ฒ(๊ฐ์ ์ ๊ฐ์) ์ํ๋๋ ๊ฒ์ ๋๋ค.
'๐ฅ Computer Science > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ฆฌ๋ (3) - Huffman Encoding(ํํ๋ง ๋ถํธํ) (0) | 2022.10.21 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ฆฌ๋ (2) - Interval scheduling (0) | 2022.10.21 |
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ฆฌ๋ (0) -๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ (0) | 2022.10.13 |
[์๊ณ ๋ฆฌ์ฆ] ์ ๋์จ ํ์ธ๋(Union-Find) ์๋ฃ๊ตฌ์กฐ (0) | 2022.10.03 |
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ํ (7) - ๊ฐํ ์ฐ๊ฒฐ ์์ (Strongly Connected Components) (1) | 2022.09.25 |