Implementations of Heap
์ด ํฌ์คํธ๋ ์ํคํผ๋์์ Heap(data structure)์ ์๊ฐ๋ Heap์ ๊ตฌํ๋ค์ ๋ค๋ฃน๋๋ค. ์ง์ ๊ณผ ์กฐ์ธ์ ์ธ์ ๋ ํ์์ ๋๋ค ใ ใ
์ด๋ฒ ํฌ์คํธ์์๋ <Heap>์ ๊ตฌํ ๋ฐฉ์์ ์ดํด๋ณผ ์์ ์ ๋๋ค. ๊ตฌํ ์ฝ๋๋ ์ถํ์ ๋ณ๋์ ํฌ์คํธ์์ Heap์ ์ข ๋ฅ๋ณ๋ก ๋ค๋ฃฐ ์์ ์ ๋๋ค! ๐
<Binomial Heap>์์๋ถํฐ ์๊ฐ๋ณต์ก๋๋ฅผ ์ ๋ํ๊ธฐ ์ํด amortized analysis๋ฅผ ์ฌ์ฉํฉ๋๋ค. โAmortized Analysisโ ํฌ์คํธ๋ฅผ ๋จผ์ ์ฝ๊ณ ์ค๊ธธ ๊ถํฉ๋๋ค ๐
<Priority Queue>์ ๊ตฌํ์ธ <Heap>์ ๋ง์ ์๊ณ ๋ฆฌ์ฆ์์ ํต์ฌ์ ์ธ ์ญํ ์ ํ๋ค. ๋ณดํต Binary Tree๋ก ๊ตฌํํ๋ <Binary Heap>์ ๋ง์ด ์ํ ์ง๋ง, ์ ๊ท ์์ ์ด๋ ์ํคํผ๋์์ ๋ฌธ์๋ฅผ ์ดํด๋ณด๋ฉด <Binary Heap> ์ธ์๋ ์ฌ๋ฌ ํํ์ <Heap>์ ๋ํ ๊ตฌํ์ด ์กด์ฌํ๋ค!! ์ด๋ฒ ํฌ์คํธ์์ ์ด <Heap>์ ๊ตฌํ์ ๋ํด ์์ธํ ์์๋ณผ ์์ ์ด๋ค. ๐
- Heap by unordered array
- Heap by ordered array
- Binary Heap
- d-ary Heap
- Binomial Heap
- Lazy-Binomial Heap
- Fibonacci Heap
Unodered Array & Ordered Array
min ๋๋ max์ ๋น๋ฒํ ์ ๊ทผํ๋ priority queue๋ฅผ ๋ฐฐ์ด๋ก naive ํ๊ฒ ๊ตฌํํ๋ ๋ฐฉ์์ด๋ค. ์ ๋ง ์๋ฌด๋ฐ ํ ํฌ๋์ ์ฌ์ฉํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ฟผ๋ฆฌ๊ฐ ๋ค์ด์ฌ ๋๋ง๋ค linear search ๋๋ binary search๋ฅผ ํตํด ์ฟผ๋ฆฌ๋ฅผ ํด๊ฒฐํ๋ค.
Unordered Array.
- $\texttt{getMin}$: $O(N)$
- ์ ํ ํ์์ผ๋ก min ์ฐพ์์ ๋ฆฌํด
- $\texttt{insert}$: $O(1)$
- ๊ทธ๋ฅ ๋ฐฐ์ด์ ๋งจ ๋ค์ ๋ถ์ด๋ฉด OK
- $\texttt{deleteMin}$: $O(N)$
- ์ ํ ํ์์ผ๋ก min ์ฐพ์ $O(N)$
- ๋ฐฐ์ด์ด๋ฏ๋ก ์ญ์ ์ $O(N)$ ์์
Ordered Array.
์์๊ฐ ํ๋ ์ถ๊ฐ๋ ๋๋ง๋ค ์ ๋ ฌํด Ordered ๊ตฌ์กฐ๋ฅผ ์ ์ง. ์ด๋, min-heap์ด๋ผ๋ฉด, min์ด ๋ฐฐ์ด ๋งจ ๋์ ์๋ ๊ตฌ์กฐ์ฌ์ผ ํ๋ค. // ๊ทธ ์ด์ ๋ min์ด ๋ฐฐ์ด ๋งจ ์์ ์๊ฒ ๋๋ฉด, $\texttt{deleteMin}$์์ ์ํด์. ์ง์ ๋น๊ตํด๋ณด๋ฉด ๊ธ๋ฐฉ ์ดํด๊ฐ ๋๋ค.
- $\texttt{getMin}$: $O(1)$
- ๋งจ ๋ค์ ์๋ min ์์๋ฅผ ๋ฆฌํด
- $\texttt{insert}$: $O(N)$
- ์ด์ง ํ์์ผ๋ก ์์ ์ ์์น๋ฅผ ์ฐพ์ $O(\log N)$.
- ๋ฐฐ์ด์ด๋ฏ๋ก ์ฝ์ ์ $O(N)$ ์์.
- $\texttt{deleteMin}$: $O(1)$
- ๋งจ ๋ค์ ์๋ min ์์๋ฅผ ์ญ์ . ๋งจ ๋ค์ ์์๋ฅผ ์์ ๋ฏ๋ก, $O(1)$
Binary Heap
์ผ๋ฐ์ ์ผ๋ก ๋ฐฐ์ฐ๋ <Heap> ์๋ฃ๊ตฌ์กฐ์ด๋ค. <์์ ์ด์ง ํธ๋ฆฌ; Complete Binary Tree>๋ผ๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ตฌํ๋๋ค. ์ฌ์ค ์์ ์ด์ง ํธ๋ฆฌ๋ผ๊ณ ๋ณ๊ฒ ์๋๊ฒ ์๋๋ผ ๋ฐฐ์ด๋ก ๊ตฌํ๋ Binary Tree์์ ๋ถ๋ชจ-์์ ์ฌ์ด์ ๊ด๊ณ๊ฐ
- ๋ถ๋ชจ โ ์์: $k$ โ ($2k$ & $2k+1$)
- ์์ โ ๋ถ๋ชจ: $k$ โ $k/2$
์ธ ๊ตฌ์กฐ์ผ ๋ฟ์ด๋ค. ๋ค๋ง, ์ด ๊ตฌ์กฐ์ผ ๋, <heapify>๋ผ๋ <Heap>์ ์ฐ์ฐ์ $O(\log N)$์ ์๊ฐ์ผ๋ก ํจ์จ์ ์ผ๋ก ์ํํ ์ ์๊ธฐ ๋๋ฌธ์ <Heap>์ ๊ตฌํ์ผ๋ก ์์ฃผ ์๊ฐ๋๋ค. ๋ฌผ๋ก ์ด๋ฐ ๋ฐฐ์ด๋ก ๊ตฌํํ์ง ์๊ณ , ํ๋ฒํ ํธ๋ฆฌ ํํ๋ก ๊ตฌํํด๋ ๋์ผํ ํจ์จ์ ๋ณด์ธ๋ค.
๋ถ๋ชจ ๋ ธ๋์ ํค๊ฐ ์์ ๋ ธ๋์ ํค๋ณด๋ค ํญ์ ํฌ๊ฑฐ๋ ๊ฐ๋ค.
<Binary Heap>์์์ $\texttt{insert}$์ $\texttt{deleteMin}$๋ ๋ฃจํธ ๋ ธ๋์์ ๋ง๋จ ๋ ธ๋๊น์ง ๋๋ ๊ทธ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก $\texttt{swim}$ & $\texttt{sink}$ ์ฐ์ฐ์ ์ํํ๋ ๊ฒ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
$\texttt{swim}$์ ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ํฐ key๋ฅผ ๊ฐ์ง ์์ ๋ ธ๋๊ฐ ๋ถ๋ชจ ๋ ธ๋์ swap ๋์ด ๋ฃจํธ ๋ ธ๋ ์ชฝ์ผ๋ก ์ฌ๋ผ๊ฐ๋ ๊ฒ์ ๋งํ๋ค.
$\texttt{sink}$๋ ์์ ๋ ธ๋๋ณด๋ค ์์ key๋ฅผ ๊ฐ์ง ๋ถ๋ชจ ๋ ธ๋๊ฐ ์์ ๋ ธ๋์ swap ๋์ด ๋ง๋จ ๋ ธ๋ ์ชฝ์ผ๋ก ๋ด๋ ค๊ฐ๋ ๊ฒ์ ๋งํ๋ค.
์ด๋ฒ ํฌ์คํธ์์ <Binary Heap>์ ๋ํด ๊ฐ๋จํ ์๊ฐ๋ง ํ๊ณ , ๋์๊ณผ ๊ตฌํ์ ์์ธํ ๋ ผํ์ง๋ ์๊ฒ ๋ค. ์ถํ์ <Binary Heap>์ ๊ตฌํ ์ฝ๋์์ ์ข๋ ์์ธํ ๋ค๋ฃจ๊ณ , ์ง๊ธ์ Time Complexity ์์ฃผ๋ก ์ดํด๋ณด๊ฒ ๋ค.
- $\texttt{getMin}$: $O(1)$
- ๋ฃจํธ ๋ ธ๋๋ฅผ ๋ฆฌํด
- $\texttt{insert}$: $O(\log N)$
- ์ต์ ์ ๊ฒฝ์ฐ, <Heap>์ ๊น์ด ๋งํผ $\texttt{swim}$ ์ฐ์ฐ์ ์ํ.
- Complete Binary Tree์ด๊ธฐ ๋๋ฌธ์ ๊น์ด $D$๋ $O(\log N)$์ด๋ค โ $O(\log N)$
- $\texttt{deleteMin}$: $O(\log N)$
- ๋งจ ๋ค ์์๋ฅผ ๋ฃจํธ๋ก swap ํ, ๋ฃจํธ ๋ ธ๋ ์๋ ๊ฒ์ ์ญ์
- ์ต์ ์ ๊ฒฝ์ฐ, <Heap>์ ๊น์ด ๋งํผ ๋ฃจํธ ๋ ธ๋์์๋ถํฐ $\texttt{sink}$ ์ฐ์ฐ์ ์ํ โ $O(\log N)$
d-ary Heap
<d-ary Heap>์ <Binary Heap>์ generalization์ด๋ค. <Binary Heap>์ ๊ฐ ๋ ธ๋๊ฐ 2๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ก๋ค๋ฉด, <d-ary Heap>์ ๊ฐ ๋ ธ๋๊ฐ d๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ Complete Tree์ด๋ค. ๋ฐ๋ผ์, <Binary Heap>์ $d=2$์ธ ํน์ํ ๊ฒฝ์ฐ๋ผ๊ณ ๋ณผ ์ ์๋ค.
<d-ary Heap>์ ๋์์ <Binary Heap>์ ๋์๊ณผ ๋์ผํ๋ค. ๊ฐ ๋ ธ๋๋ Heap Order๋ฅผ ๋ง์กฑํด์ผ ํ๋ฉฐ, Heapify๋ฅผ ํตํด Heap์ ๊ตฌ์ฑํ๋ค. ๋ค๋ง, ์์ ๋ ธ๋์ ์๊ฐ ๋ง์์ ธ, Heap์ ๊น์ด $D$๊ฐ $\log_d N$์ผ๋ก ์์ ์ก๋ค. ์ด์ ๋ฐ๋ผ ๊ฐ ์ฐ์ฐ์ Time Complexity๋ ์๋์ ๊ฐ์ด ์ ๋๋๋ค.
- $\texttt{getMin}$: $O(1)$
- ๋ฃจํธ ๋ ธ๋๋ฅผ ๋ฆฌํด
- $\texttt{insert}$: $O(\log_d N)$
- $\texttt{deleteMin}$: $O(d \log_d N)$
* $\texttt{deleteMin}$ in d-ary Heap
๋จผ์ $d=2$์ธ Binary Heap์ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์. ๋ง์ฝ ํ์ฌ min-Heap์ด ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์๋ค๋ฉด,
3 2 1 / \ โ / \ โ / \ 2 1 3 1 3 2
์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ต๋ 2๋ฒ $\texttt{Heapify}$๋ฅผ ํธ์ถํ๋ค.
์ด๋ฒ์๋ $d=3$์ธ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์. ๋ง์ฝ ํ์ฌ min-Heap์ด ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์๋ค๋ฉด,
4 3 2 1 / | \ โ / | \ โ / | \ โ / | \ 3 2 1 4 2 1 4 3 1 4 3 2
์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ต๋ 3๋ฒ์ $\texttt{Heapify}$๋ฅผ ํธ์ถํ๋ค.
๊ฐ $\texttt{Heapify}$๋ $O(\log_d N)$์ ์๊ฐ์ด ์์๋๋ฏ๋ก, $\texttt{deleteMin}$์ $O(d \log_d N)$์ ์๊ฐ์ด ์์๋๋ค.
ps) $d=3$์ธ d-ary Heap์ <Ternary Heap>์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
๐ฅ Wikipedia์ ๊ธฐ์ ๋ ๋ด์ฉ์ ๋ฐ๋ฅด๋ฉด, ์ค์ ์์๋ <4-ary Heap>์ด $\texttt{deleteMin}$ ์๊ฐ๋ณต์ก๋์์ ์ด์ธ์์๋ ๋ถ๊ตฌํ๊ณ , <Binary Heap> ๋ณด๋ค ๋ ์ข์ ์ฑ๋ฅ์ ๋ธ๋ค๊ณ ํ๋ค. ๊ทธ ์ด์ ๋ <4-ary Heap>์ด <Binary Heap>๋ณด๋ค Cache์์ ๋ ์ด๋์ ๋ณด๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํ๋ค ๐
Binomial Heap
<Binomial Heap>์ ์๋ก ๋ค๋ฅธ ๋ Heap์ ๋ณํฉ(merge)ํด ์๋ก์ด Heap์ ๊ตฌ์ฑํ๋ ๊ฒ์ ํนํ๋ Heap ๊ตฌ์กฐ๋ค.
<Binomial Heap>์ <Binomial Tree>๋ผ๋ ํน๋ณํ ํํ์ ํธ๋ฆฌ์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋๋ค. ๋จผ์ <Binomial Tree>์ ๋ํด ์ดํด๋ณธ ํ, <Binomial Heap>์ ๋ํด ์ดํด๋ณด๊ฒ ๋ค. ์ด๋ฒ ํฌ์คํธ์ ๋ด์ฉ์ ์๋ ์ ํ๋ธ ์์์ ๋ด์ฉ์ ์ ์ ํ ์ ๋ฆฌํ ๊ฒ์์ ๋ฏธ๋ฆฌ ๋ฐํ๋ค.
Binomial Tree
<Binomial Tree>๋ degree๊ฐ ๊ฐ์ ๋ <Binomial Tree>๋ฅผ ๋ณํฉ(merge)ํจ์ผ๋ก์จ ๊ตฌ์ถํ๋ค. ๋ฐฉ๋ฒ์ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์๊ณ , ์๋์ ์์๋ฅผ ๋ณด๋ฉด ๋ฐ๋ก ์ดํด ๋ ๊ฒ์ด๋ค. ๐
(deg 0) (deg 0) (deg 1) | (deg 1) (deg 1) (deg 2) 4 + 10 โ 4 | 1 + 7 โ 1 | | | | / | 10 | 9 15 7 9 | | | 15
<Binomial Tree>๋ ์๋์ 4๊ฐ์ง ์ฑ์ง์ ๋ง์กฑํ๋ค.
1. degree $k$์ <Binomial Tree>์ ๋ฃจํธ ๋ ธ๋๋ ์ ํํ $k$๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ๋๋ค.
2. degree $k$์ <Binomial Tree>๋ ์ ํํ $2^k$๊ฐ์ ๋ ธ๋์ ๊น์ด $k$๋ฅผ ๊ฐ๋๋ค.
3. <Binomial Tree>์ ๋ฃจํธ ๋ ธ๋๋ degree $k-1$, $k-2$, โฆ, $0$์ Binomial Tree๋ฅผ ์์์ผ๋ก ๊ฐ๋๋ค.
4. degree $k$์ <Binomial Tree>์์ depth $d$๋ฅผ ๊ฐ๋ ๋ ธ๋์ ์๋ $\displaystyle\binom{k}{d}$์ด๋ค. ์ด ์ฑ์ง ๋๋ฌธ์ <Binomial Tree>๋ผ๋ ์ด๋ฆ์ด ๋ถ์๋ค ๐
Binomial Heap
๋ค์ <Binomial Heap>์ผ๋ก ๋์์ค์. <Binomial Heap>์ ์๋์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ชจ์ธ <Binomial Tree>์ ์งํฉ์ด๋ค.
1. Heap์ ๊ตฌ์ฑํ๋ ๊ฐ Binomial Tree๋ Heap Order๋ฅผ ๋ฐ๋ฅธ๋ค.
2. degree 0์ ํฌํจํด ๊ฐ order๋ณ๋ก 0๊ฐ ๋๋ 1๊ฐ, ์ฆ ๊ฐ order๋ณ ์ต๋ 1๊ฐ์ ์ดํญ ํธ๋ฆฌ๊ฐ Heap์ ์กด์ฌํ๋ค.
2๋ฒ์ฌ ์กฐ๊ฑด์ ์ ์ฒด $n$๊ฐ ๋ ธ๋๊ฐ ์กด์ฌํ ๋, <Binomial Heap>์ด ์ต๋ $(1 + \log n)$๊ฐ์ ์ดํญ ํธ๋ฆฌ๋ก ๊ตฌ์ฑ๋จ์ ๋งํ๋ค. ๊ทธ ์ด์ ๋ degree $k$์ธ Binomial Tree๊ฐ $2^k$ ๋งํผ์ ๋ ธ๋๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ด๋ค! ๋ํ, Heap์ ์กด์ฌํ๋ ๊ฐ Binomial Tree์ degree๋ ์ ์ผํ๊ฒ ๊ฒฐ์ ๋๋ค. ์ ์ฒด ๋ ธ๋์ ์ $n$์ ์ด์ง์๋ก ํํํ๋ค๋ฉด, ๊ฐ digit์ Heap์ ์กด์ฌํ๋ Binomial Tree์ ๊ฐฏ์๋ฅผ ์๋ฏธํ๋ค. ๋ฐ๋ผ์, ์ ์ฒด ๋ ธ๋ ์ $n$์ ๋ํด Binomial Heap์ ๊ตฌ์ฑ์ ์ ์ผํ๋ค! ๐ฅ
Merge.
Binomial Heap์ $\texttt{Merge}$๋ผ๋ ์ฐ์ฐ์ด ์ถ๊ฐ๋์๋ค. ์ผ๋ฐ์ ์ธ Heap๊ณผ ๋ฌ๋ฆฌ ๋น ๋ฅธ Merge๋ฅผ ์ง์ํ๋ค๋ ๊ฒ ์ฅ์ ์ด๋ค.
Image from Wikipedia
์์ ๊ฐ์ด ๋ Binomial Heap์ ๋ณํฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์. ์ด๋, ๋ Heap์ ๋ ธ๋ ์๊ฐ $N$, $M$์ด๋ผ๋ฉด, ๋ Heap์ ์กด์ฌํ๋ Tree์ ์๋ $1 + \log N$, $1 + \log M$์ด ๋๋ค.
์ด๋, ๋ Binomial Heap์ ๋ณํฉํ๋ ๊ฒ์ ๊ฐ์ degree๋ฅผ ๊ฐ๋ Binomial Tree๋ฅผ ๋ณํฉํ๋ ๊ฒ ๊ฐ๋ค. ์ด Tree ๋ณํฉ ์ฐ์ฐ์ $O(1)$์ ์ํ๋๊ณ , ๋ ์ด ๊ณผ์ ์ด ์ต๋ Tree์ ๊ฐฏ์ ๋งํผ ํ์ํ๋ฏ๋ก ์ด $O(\log N + \log M)$ ๋งํผ์ Time Complexity๋ฅผ ๊ฐ๋๋ค.
์์์๋ ์ธ๊ธํ๋ฏ Binomial Heap์ ๊ทธ ๊ตฌ์ฑ์ ๋ฐ๋ผ ์ด์ง์๋ก ์ธ์ฝ๋ฉ ๋ ์ ์๋๋ฐ, Heap Merge ๊ณผ์ ์ ์๋์ ๊ฐ์ด ์ด์ง์ ๋ง์ ์ ๊ด์ ์์ ํด์ํ ์๋ ์๋ค. $N$-์๋ฆฟ์ ์ด์ง์์ $M$-์๋ฆฟ์ ์ด์ง์์ ๋ง์ ์ $O(N + M)$์ Time Complexity๋ฅผ ๊ฐ๋ ๊ฑธ ์๊ฐํ๋ฉด, ๋ ๊ณผ์ ์ด ์ ๋ง ์ ์ฌํจ์ ๊นจ๋ฌ์ ์ ์๋ค ๐คฉ
Insert.
Binomial Heap์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋จ์ํ degree 0์ Binomial Tree๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ๋ค. ๊ทธ๋์ ์์์ ์ธ๊ธํ $\texttt{merge}$์ ์ํฉ๊ณผ ๋น์ทํ๊ฒ ๋์ํ๋ค. ๋ฐ๋ผ์, Time Complexity๋ $O(\log N)$์ด๋ค.
getMin.
Binomial Heap์ ์ด๋ฃจ๋ Tree์ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ดํด๋ณด๋ฉด ๋๋ค. ๋ฐ๋ผ์, Time Complexity๋ $O(\log N)$. ๋ง์ฝ Heap์ Min-elt๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๊ฐ ์กด์ฌํ๋ค๋ฉด, $O(1)$์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค. ๋ณดํต์ $O(1)$๋ก ๊ตฌํํ๋ค ๐
deleteMin.
๋จผ์ $\texttt{getMin}$์ผ๋ก ๋ฃจํธ ๋ ธ๋๋ฅผ ์ญ์ ํ Binomial Tree๋ฅผ ํน์ ํ๋ค. Tree์ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ๋ฉด, ํด๋น Tree์ ์์ ํธ๋ฆฌ๋ค์ด ๋จ๊ฒ ๋๋ค. ๋ง์ฝ $k$๋ฒ์งธ binomial tree์ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ๋ค๋ฉด, $k$๊ฐ์ children binomial tree๋ฅผ ์ป๊ฒ ๋๋ค. ์๋ก ์๊ธด $k$๊ฐ์ Children Binomial Tree๋ค์ ๋ฐํ์ผ๋ก ๋ค์ $\texttt{merge}$ ์ฐ์ฐ์ ์ํํ๋ค. ์ด๋, BIN Heap์ ์กด์ฌํ๋ $1 + \log N$๊ฐ์ ํธ๋ฆฌ ์ค ๋ง์ง๋ง ๋ฒ์งธ ํธ๋ฆฌ์ ๋ฃจํธ๋ ธ๋๊ฐ ์ ๊ฑฐ๋์๋ค๋ฉด, $log N$ ๋งํผ์ binomial tree ๋๋ $\log N$ ๋งํผ์ binomial tree๋ฅผ ๊ฐ๋ BIN heap์ด ์๋ก ์๊ธด๋ค. ๊ธฐ์กด์ BIN heap๊ณผ ์๋ก ์๊ธด BIN heap์ merge ํ๋ฉด, Time Complexity๋ $O(\log N + \log N) = O(\log N)$์ด๋ค.
Image from Wikipedia
์ผ๋ฐ์ ์ผ๋ก Binomial Heap์ Linked List๋ก ๊ตฌํํ๋ค. ์ด๋, ์ผ๋ฐ์ ์ธ ํํ์ Linked List Tree์์ sibling ์์๋ฅผ ์ถ๊ฐ๋ก ์ ์ฅํด ๊ด๋ฆฌํ๋ค. <Binomial Heap>์ ๊ตฌํ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ถํ์ ๋ณ๋์ ํฌ์คํธ์์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ๋ค ๐
Lazy-Binomial Heap
์ด๋ฒ ํฌ์คํธ์ ๋ด์ฉ์ ์๋ ์ ํ๋ธ ์์์ ๋ด์ฉ์ ์ ์ ํ ์ ๋ฆฌํ ๊ฒ์์ ๋ฏธ๋ฆฌ ๋ฐํ๋ค.
<Lazy-Binomial Heap>์ ์์์ ์ดํด๋ณธ <Binomial Heap>๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก Heap์ $\texttt{merge}$ ์ฐ์ฐ์ ํนํ๋ ์๋ฃ ๊ตฌ์กฐ๋ค! ์ ์ฒด์ ์ธ ๊ฐ๋ ์ <Binomial Heap>๊ณผ ์ ์ฌํ๊ณ , $\texttt{marge}$์ $\texttt{extractMin}$ ์ฐ์ฐ์์ ์ฐจ์ด๊ฐ ์๋ค.
์ผ๋จ <Lazy-Binomial Heap>์ ์์ด๋์ด๋ โmerge lazily!โ์ด๋ค. <Lazy-Binomial Heap>์ $\texttt{merge}$ ์ฐ์ฐ์ ๊ทธ๋ฅ ๋ BIN Heap์ concatenate๋ก ๋ถ์ด๋ ๊ฒ์ ๋ถ๊ณผํ๋ค. ๊ทธ๋์ $O(\log n + \log m)$์ ๋น์ฉ์ด ๋๋ <BIN Heap>๊ณผ ๋ฌ๋ฆฌ, <Lazy-BIN Heap>์์๋ $O(1)$์ ๋น์ฉ์ด ๋ ๋ค! ๐ฒ ๋ง์ฐฌ๊ฐ์ง๋ก ์์๋ฅผ ํ๋ ์ถ๊ฐํ๋ $\texttt{insert}$ ์ฐ์ฐ ์ญ์ $O(1)$์ ๋น์ฉ์ด ๋ ๋ค.
ํ์ง๋ง, ์์ ๊ฐ์ด $\texttt{merge}$๋ฅผ ์ํํ ๊ฒฝ์ฐ, ์์์ ์ดํด๋ณธ <BIN Heap>์ ์๋ฆ๋ต๊ณ ์ข์ ์ฑ์ง์ด ๊นจ์ง๊ฒ ๋๋ค ๐ฅ <Lazy-BIN Heap>์์๋ BIN Tree์ degree๋ ๊ท์น์ฑ ์์ด ์์ ๋กญ๊ฒ ๋ถํฌ๋์ด ์์ ๊ฒ์ด๋ค.
์ด๋ฒ์๋ <Lazy-BIN Heap>์ $\texttt{extractMin}$ ์ฐ์ฐ์ ์ดํด๋ณด์. ์ด ์ฐ์ฐ์ Heap์์ ๊ฐ์ฅ ์์ ์์๋ฅผ ์ ๊ฑฐํ๋ค. <Lazy-BIN Heap>์ ์ด $\texttt{extractMin}$ ์ฐ์ฐ์ด ์ํ๋ ๋, $\texttt{consolidation}$(= ํฉ๋ณ, ๋ณํฉ)์ ์ํํ์ฌ <Lazy-BIN Heap>์์ BIN Heap์ ๊ตฌ์กฐ๋ฅผ ๋ค์ ๊ตฌ์ถํ๋ค.
์ด $\texttt{consolidation}$์ด ์ํ๋๋ ๊ณผ์ ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ถ์ํด๋ณด์. degree๊ฐ ์์ ๋กญ๊ฒ ๋ถํฌ๋์ด ์๋ ์ํฉ์์ $\texttt{consolidation}$์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๊ฐ BIN Tree๋ฅผ degree ๋ณ๋ก ์ ๋ ฌํ์ฌ ์์์๋ถํฐ ์ฐจ๋ก๋ก Tree๋ฅผ ํฉ์น๋ ๊ฒ์ด๋ค. ์๋๋ ์ ๋ ฌ์ ์ํํ ๋, $O(t \log t)$ ($t$๋ Heap์ ์กด์ฌํ๋ BIN Tree์ ์) ๋งํผ์ ์๊ฐ์ด ์์๋๋ค. ๊ทธ๋ฐ๋ฐ ์ ๋ ฌ ๊ณผ์ ์์ <Bucket Sort>๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, BIN Tree ํ์์ $O(t)$, Bucket์ ์ $O(\log n)$ ๋งํผ BIN tree merge ๋น์ฉ์ด ๋ค์ด $O(t + \log n)$์ ๋น์ฉ์ผ๋ก $\texttt{consolidation}$์ ์ํํ ์ ์๋ค. ์์ธํ ๋ด์ฉ์ ์๋์ ์์์ ์ฐธ๊ณ ํ์!
๐ Jeff Zhang - Lazy Binomial Heap Intro Part 1 of 2
$\texttt{extractMin}$ ์ฐ์ฐ์ ๋ํด์๋ ๊ทธ ์๊ฐ ๋ณต์ก๋๊ฐ โamortized $O(\log n)$โ๋ผ๊ณ ํ๋ค. ์๊ฐ ๋ณต์ก๋ ๋ถ์์ <Potential Method>๋ฅผ ์ฌ์ฉํ๋๋ฐ, Potential Method์ ์๊ฐํ๋ lecture note Lecture 20: Amortized Analysis์ Lazy-BIN Heap์ Potential Method๋ก ๋ถ์ํ ์ด lecture note Lecture 3: Fibonacci Heaps๋ฅผ ์ ์ฝ์ด๋ณด๋ฉด ๊ทธ๋ญ์ ๋ญ ์ดํดํ ์ ์๋ค ๐ค
Operation | Binomial Heap | Lazy-Binomial Heap |
---|---|---|
$\texttt{insert}$ | $O(\log n)$ | $O(1)$ |
$\texttt{getMin}$ | $O(1)$ | $O(1)$ |
$\texttt{extractMin}$ | $O(\log n)$ | amortized $O(\log n)$ |
$\texttt{merge}$ | $O(\log n)$ | $O(1)$ |
Fibonacci Heap
์ด๋ฒ ํฌ์คํธ์ ๋ด์ฉ์ ์๋ ์ ํ๋ธ ์์์ ๋ด์ฉ์ ์ ์ ํ ์ ๋ฆฌํ ๊ฒ์์ ๋ฏธ๋ฆฌ ๋ฐํ๋ค.
๋ง์ง๋ง์ผ๋ก ๋ค๋ฃฐ Heap ๊ตฌ์กฐ๋ <Fibonacci Heap>์ด๋ค ๐ ๊ฐ์ธ์ ์ผ๋ก ๋ง์ง๋ง์ ์ ๋๋๋ ๋งํผ ๊ฐ์ฅ ์ด๋ ค์ด Heap ๊ตฌ์กฐ๋ผ๊ณ ์๊ฐํ๋ค ๐ฑ
๋จผ์ <Fibonacci Heap>์ ์์์ ๋ค๋ฃฌ <Lazy-Binomial Heap>๋ณด๋ค ๋ Lazy ํ ๋ ์์ด๋ค! <Lazy-BIN Heap>๋ณด๋ค $\texttt{decreaseKey}$ ์ฐ์ฐ์ Lazy ํ๊ฒ ์ฒ๋ฆฌํด์ ๋น์ฉ์ ๋ ์ค์ธ๋ค!
์ฌ์ค โLazy decreaseKeyโ ์ฐ์ฐ์ ์์ด๋์ด ์์ฒด๋ ๊ฐ๋จํ๋ค. $\texttt{decreaseKey}$๋ฅผ ์ํํ ๋, heap-order๋ฅผ ๋ฒ์ด๋๋ ๋ถ๋ถ์ ๋ํด์๋ ์๋ผ๋ธ๋ค๋ ๊ฒ ์ ๋ถ๋ค.
<BIN Heap>์์ $\texttt{decreaseKey}$ ์ฐ์ฐ์ ์ํํ๋ฉด $\texttt{Heapify}$ ๋๋ฌธ์ ํธ๋ฆฌ์ ๋์ด ๋งํผ, ์ฆ $O(\log n)$์ ๋น์ฉ์ด ๋ค์๋ค. ๊ทธ๋ฌ๋ <Fibonacci Heap>์ ๋์์ด ๋๋ BIN tree๋ฅผ ์๋ผ๋ด๊ธฐ ๋๋ฌธ์ $\texttt{Heapify}$ ์ฐ์ฐ ์์ด $O(1)$์ ๋น์ฉ๋ง ๋ ๋ค.
์ฌ๊ธฐ์ ์ ๊น ์ง๊ธ๊น์ง <BIN Heap>์์ ๊ฐ์ ๋ ๋ถ๋ถ๋ค์ ์ง๊ณ ๋์ด๊ฐ์.
- Merge: $O(\log n + \log m) \rightarrow O(1)$ (by Lazy-BIN Heap)
- Insert: $O(\log n) \rightarrow O(1)$ (by Lazy-BIN Heap)
- extractMin: $O(\log n) \rightarrow \text{amoritzed} \; O(\log n)$ (by Lazy-BIN Heap)
- deleteKey: $O(\log n) \rightarrow O(1)$ (by Fibonacci Heap!) ๐ฅ
์ ์ฐ์ฐ๋ค์ ๋ํ ๋น์ฉ์ด ์ค์์ง๋ง, ๋ ์ ์ฐ์ฐ๋ค์ด Heap ๊ตฌ์กฐ๋ฅผ ์๋ง์ผ๋ก ๋ง๋๋ ์ฃผ๋ฒ์ด๊ธฐ๋ ํ๋ค ๐คฆโโ๏ธ ๊ทธ๋ฆฌ๊ณ Fibo Heap์ ๋ณํ๋ $\texttt{deleteKey}$ ์ฐ์ฐ์ $\texttt{extractMin}$ ์ฐ์ฐ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ผ์น๋ค ๐ฑ
๊ทธ.๋ฌ.๋. ์์ฌํ๋ผ! Lazy decreaseKey๋ฅผ ๋์ ํ๋๋ผ๋ $\texttt{extractMin}$์ ๋น์ฉ์ ์ฌ์ ํ โamortized $O(\log n)$โ์ด๋ค! ๐ฒ
<Fibonacci Heap>์์ ์ํ๋๋ $\texttt{extractMin}$์ ์ข๋ ์ดํด๋ณด์. $\texttt{extractMin}$ ์ดํ ์ํ๋๋ $\texttt{consolidate}$ ์ฐ์ฐ์ Heap์ ์ด๋ฃจ๋ ํธ๋ฆฌ๋ฅผ degree $k$์ ๋ฐ๋ผ โBucket Sortโ๋ก ์ ๋ ฌํ์ฌ ์ฐจ๋ก๋ก ์๋ก์ด ํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
ํ์ง๋ง, Lazy decreaseKey ์ฐ์ฐ์ ์ํํ๋ฉด ๋์ด์ Heap์ ์กด์ฌํ๋ Tree๋ BIN Tree์ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๊ฒ ๋๋ค. ์๋ํ๋ฉด, BIN Tree๊ฐ ๋๋ ค๋ฉด degree $k$์ผ ๋, $2^k$ ๊ฐ์ ๋ ธ๋๊ฐ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. (Fibo Heap์์๋ $2^k$ ๋ณด๋ค ์ ์ ์์ ๋ ธ๋๊ฐ ํธ๋ฆฌ์ ๋จ๊ฒ ๋๋ค.)
์๋ฅผ ๋ค์ด ์ผ์ชฝ์ BIN tree์์ โ10โ์ ํค๋ฅผ ๊ฐ์ง ๋ง๋จ ๋ ธ๋์ ํค๋ฅผ โ3โ์ผ๋ก ๋ฐ๊พผ๋ค๋ฉด, ๊ทธ ๋ ธ๋๋ฅผ BIN tree์์ ๋ถ๋ฆฌ(cut)ํ๋ ๋ฐฉ์์ผ๋ก $\texttt{decreaseKey}$ ์ฐ์ฐ์ ์ํํ๋ค. ์ด๊ฒ์ $\texttt{decreaseKey}$ ์ฐ์ฐ์ ๋์์ด ๋๋ BIN tree๊ฐ ๋์ด์ BIN tree์ ์ฑ์ง์ ๋ง์กฑํ์ง ๋ชป ํ๋๋ก ๋ง๋ ๋ค.
์ด๋ฐ ๋ฌธ์ ๋๋ฌธ์ ํธ๋ฆฌ๋ฅผ degree $k$๋ก ๋ถ๋ฅํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅ ํด $\texttt{consolidate}$ ๋จ๊ณ์์ Bucket Sort๋ฅผ ์ํํ ์ ์๋ค ๐ฑ ๊ทธ๋์ <Fibonacci Heap>์์๋ ํธ๋ฆฌ์ degree๋ฅผ ์๋์ ๊ฐ์ด ์๋กญ๊ฒ ์ ์ํ์ฌ ์ฌ์ฉํ๋ค.
A tree has degree $k$, if its root has $k$ children.
Fibo Heap์์๋ ์์ ์ ์๋ฅผ ์ฌ์ฉํด Bucket Sort๋ฅผ ์ํํ๋ฉฐ, ์๋ง์ด ๋ BIN Heap์ ์ ๋ฆฌ(clean-up)ํ๋ค. ๊ทธ๋ฌ๋โฆ
๊ทธ๋ฌ๋! ์์ ๊ฐ์ด $\texttt{decreaseKey}$์ $\texttt{consolidate}$๋ฅผ ์ํํ๊ฒ ๋๋ฉด, ์ต์ ์ ๊ฒฝ์ฐ์๋ $\texttt{decreaseKey}$์ ์ํด Heap์ด degree 0์ ํธ๋ฆฌ $n$๊ฐ๋ก ์ด๋ค์ง ํ์ $\texttt{consolidate}$๊ฐ ์ด๋ค์ง ์ ์๋ค ๐คฆโโ๏ธ ์ด ๊ฒฝ์ฐ, ๋น์ฉ์ $O(n)$์ด๋คโฆ
BIN tree๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ <BIN Heap>๊ณผ <Lazy-BIN Heap>์ ํธ๋ฆฌ์ ์ฌ์ด์ฆ๊ฐ $2^k$๋ก exponential ํ๊ฒ ์ฆ๊ฐํด์ $\text{amortized} \; O(\log n)$๋ก $\texttt{consolidate}$ ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, Fibo Heap์์๋ $\texttt{decreaseKey}$ ์ฐ์ฐ์ ์๋ก์ด ๊ท์น์ ์ถ๊ฐํ๋ค.
Paraents can lose at most one children.
If a parent loses two children, we also cut the parent off from the grand-parent.
์ ๊ท์น์ Heap์ ์์ฑํ๊ฒ๋๋ง โlogarithmicโํ๋๋ก ๋ง๋ ๋ค. ์ด๊ฒ์ ๋ํ ๊ตฌํ์ ์๊ฐ๋ณด๋ค ๊ฐ๋จํ๋ค. ๊ทธ๋ฅ ๋ถ๋ชจ ๋ ธ๋๊ฐ $\texttt{decreaseKey}$์ ์ํด ์์ ๋ ธ๋๋ฅผ ์์ผ๋ฉด ๊ทธ ๋ถ๋ชจ ๋ ธ๋๋ฅผ โ๋งํนโ ํด๋๋ค. ์ดํ์ ๋ถ๋ชจ ๋ ธ๋๊ฐ ๋ ํ๋ฒ ์์ ๋ ธ๋๋ฅผ ์๋๋ค๋ฉด, ๊ทธ๋๋ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ์กฐ๋ถ๋ชจ ๋ ธ๋๋ก๋ถํฐ ๋ถ๋ฆฌ์ํจ๋ค! // ์์์์ ์ ์ค๋ช ํ๋ ์ด ๋ถ๋ถ์ ์์์ ๋ณด์!
๊ธ๋ก๋ ๊ฐ์ด ์ ์กํ๋, ๊ทธ๋ฆผ์ผ๋ก ์ดํด๋ณด์!
BIN tree๊ฐ child๋ฅผ ํ๋ ์์ด ๋ถ์์์ผ๋ก ๋งํน ๋์๋ค.
๋ถ์์์ผ๋ก ๋งํน๋ ๋ ธ๋๊ฐ ๋ ํ๋์ ์์ ๋ ธ๋๋ฅผ ์์๋ค!
๊ทธ๋ฌ๋ฉด ํด๋น ๋ ธ๋๋ฅผ ๋ถ๋ชจ ๋ ธ๋๋ก๋ถํฐ ๋ถ๋ฆฌ์ํจ๋ค!
์ถ๊ฐ๋ ๊ท์น์ BIN Heap์ โroot listโ์ ํฌ๊ธฐ๋ฅผ approximately logarithmic ํ๊ฒ ์ ์งํด์ค๋ค๊ณ ํ๋ค. ๊ทธ๋์ <Fibonacci Heap>์ $\texttt{extractMin}$๋ $\text{amortized} \; O(\log n)$์ ์๊ฐ์ผ๋ก ์ํ๋๋ค! ๐ ์์ธํ ๋ด์ฉ์ Lecture 3: Fibonacci Heaps์ โ5. Analysisโ๋ฅผ ํตํด ํ์ธํ ์ ์๋ค.
์ด ์ ๋๋ฉด ์ถฉ๋ถํ ๊ฒ ๊ฐ์๋ฐ, <Fibonacci Heap>์ ์ฌ๊ธฐ์ <Maximally Damaged Tree>๋ผ๋ ๊ฐ๋ ์ ๋ ์๊ฐํ๋ค! ๐ฑ ์ด ๋ ์์ ์ํด ์ด Heap ๊ตฌ์กฐ๊ฐ โFibonacciโ Heap์ด๋ผ๊ณ ๋ถ๋ฆฌ๊ฒ ๋์์ผ๋ ์กฐ๊ธ๋ง ๋ ํ์ ๋ด๋ณด์! ๐คฆโโ๏ธ (์๊ฐ๋ณต์ก๋์ ๊ด๋ จ๋ ๊ฐ๋ ์ ์๋๋ ๊ฐ๋ฒผ์ด ๋ง์์ผ๋ก ์ฝ์ ๐)
A <maximally damaged tree> is a binomial tree of degree $k$1 which has been maximally damaged by cutting off subtrees from the lazy decreaseKey operation.
<Maximally damaged tree>๋ degree $k$์ BIN Tree์ $\texttt{decreaseKey}$๋ฅผ ์ํํ ๋, Tree์ degree $k$๋ฅผ ํผ์ํ์ง ์์๋๊น์ง $\texttt{decreaseKey}$๋ฅผ ์ํํ ํธ๋ฆฌ๋ฅผ ๋งํ๋ค. ์ด ๊ฐ๋ ์ ์ฐ๋ฆฌ๊ฐ ์์์ ์ ์ํ ์๋ก์ด $\texttt{decreaseKey}$์ ๋ฐฉ์์์ ์์ฐ์ค๋ฝ๊ฒ ์ ๋๋๋ ๊ฐ๋ ์ด๋ค. // ์ด ๋ถ๋ถ ์ญ์ ์์์์ ์ ์ค๋ช ํ๋ ์์์ ๋ณด์!
BIN tree์ degree๊ฐ ์ค์ง ์์ ๋๊น์ง $\texttt{decreaseKey}$๋ฅผ ์ํํ ๋ชจ์ต
Corollary.
A <maximally-damaged tree of degree $k$> is a tree whose children are maximally-damaged trees of degrees $0, 0, 1, 2, 3, \dots, k-2$.
์์ ๋ฐ๋ฆ ์ ๋ฆฌ์ ์ํด <maximally damaged tree>์์๋ ์๋์ ์ ๋ฆฌ๊ฐ ์ฑ๋ฆฝํ๋ค! ๐ฒ
Theorem.
The #. of nodes in a <maximally damaged tree of degree $k$> is $F_{k+2}$.
์ฆ๋ช ์ ์์ ๋ฐ๋ฆ ์ ๋ฆฌ์ ์ฌ์ค์ ๊ทธ๋๋ก ์์์ผ๋ก ๊ธฐ์ ํ๋ฉด ๋๋ค. ๐
์ง๊ธ๊น์ง ์ดํด๋ณธ <BIN Heap>๊ณผ ๊ทธ ๋ณํ๋ค์ ๋ํ ์ฐ์ฐ์ ์๊ฐ๋ณต์ก๋๋ฅผ ์ ๋ฆฌํ๋ฉด ์๋์ ๊ฐ๋ค ๐
Operation | Binomial Heap | Lazy-Binomial Heap | Fibonacci Heap |
---|---|---|---|
$\texttt{insert}$ | $O(\log n)$ | $O(1)$ | $O(1)$ |
$\texttt{getMin}$ | $O(1)$ | $O(1)$ | $O(1)$ |
$\texttt{extractMin}$ | $O(\log n)$ | amortized $O(\log n)$ | amortized $O(\log n)$ |
$\texttt{merge}$ | $O(\log n)$ | $O(1)$ | $O(1)$ |
$\texttt{decreaseKey}$ | $O(\log n)$ | $O(\log n)$ | $O(1)$ |
์ง๊ธ๊น์ง <Heap> ๋๋ <Priority Queue>์ ์ฃผ์ํ ๊ตฌ์กฐ๋ค์ ์ดํด๋ดค๋ค. ์์งํ ๋งํด ์ค์ ์์ ์์ฃผ ์ฐ๋ ๊ตฌ์กฐ๋ค์ ์๋์ง๋ง, <์๊ณ ๋ฆฌ์ฆ> ์์ ๊ณผ ์๋ฃ๋ค์์ ์ข ์ข ๋ฑ์ฅํด์ ์ด๋ฒ ๊ธฐํ์ ์ญ ์ ๋ฆฌํด๋ณด์๋ค.
<Heap>์ ๋ณํ๋ค์ด ๋ญ๊ฐ ์ค์ํ๊ฐ ์ถ์ง๋ง <Fibo Heap>์ด ์๊ฐ๋ ์ํฐํด์ ๋ฐ๋ฅด๋ฉด <Fibo Heap>์ ๋์ ํจ์ผ๋ก์จ Dijkstraโs single-source shortest path algorithm์ ์ฑ๋ฅ์ด $O(E \log E)$์์ $O(E + V \log V)$๋ก ํ๊ธฐ์ ์ผ๋ก ์ค์๋ค๊ณ ํ๋ค! ๐ฒ
์ฐธ๊ณ ์๋ฃ
- โํํฌ๋ง๊ตฌ๋กโ๋์ ํฌ์คํธ
- PQ์ ๋ํ ๋ฌธ์ ์ PQ๋ฅผ ์ด์ฉํ <A* Algorithm> ๋ฑ ๋ค์ํ ๋ด์ฉ์ ํฌ์คํธ๊ฐ ์์ต๋๋ค ๐
- geeksforgeeks: K-ary Heap
- Wikipedia: d-ary heap
- Wikipedia: Binomial heap
- โJeff Zhangโ์ ์ ํ๋ธ ์์ - Binomial Heap
- โJeff Zhangโ์ ์ ํ๋ธ ์์ - Lazy-Binomial Heap
- โJeff Zhangโ์ ์ ํ๋ธ ์์ - Fibonacci Heap
- Lecture 20: Amortized Analysis
- Lecture 03: Fibonacci Heaps
-
์ด๋ degree์ ์๋ฏธ๋ <Fibonacci Heap>์์ ์๋กญ๊ฒ ๋์ ํ, children์ ๊ฐฏ์์ $k$๋ค.ย ↩