ํ
Tree์ ํํ๋ก, Tree ์ค์์๋ ์ต๋,์ต์๊ฐ์ ์ฐพ์๋ด๋ ์ฐ์ฐ์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํ ์์ ์ด์ง ํธ๋ฆฌ์ด๋ค. (Complete Binary Tree )
์ฐ์ ์์๋ฅผ ๋ฌด์์ ๋๋์ ๋ฐ๋ผ ์์๊ฐ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์๋ฃ๊ฐ ๋ค์ด์จ ์๊ฐ์ ์ฐ์ ์์๋ก ๋๋๋ค๊ณ ํ๋ฉด ์ผ๋ฐ์ ์ธ ํ๋ ์ฐ์ ์์ ํ๊ฐ ๋ ์ ์๋ค.
โ ์ต๋ ํํ(Max Heap)
๋ถ๋ชจ ๋ ธ๋์ key๊ฐ์ด ์์ ๋ ธ๋์ key๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์์ ์ด์ง ํธ๋ฆฌ
โ ์ต์ ํํ(Min Heap)
๋ถ๋ชจ ๋ ธ๋์ key๊ฐ์ด ์์ ๋ ธ๋์ key๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ด์ง ํธ๋ฆฌ
โ ํ์ ๊ตฌํ
๐ด ๋ฃจํธ ์ธ๋ฑ์ค๊ฐ 0์ผ ๊ฒฝ์ฐ
- ์ผ์ชฝ ์์์ ์ธ๋ฑ์ค = ๋ถ๋ชจ ์ธ๋ฑ์ค * 2 + 1
- ์ค๋ฅธ์ชฝ ์์์ ์ธ๋ฑ์ค = ๋ถ๋ชจ ์ธ๋ฑ์ค * 2 + 2
- ๋ถ๋ชจ ์ธ๋ฑ์ค = (์์์ ์ธ๋ฑ์ค - 1) / 2
๐ด ๋ฃจํธ ์ธ๋ฑ์ค๊ฐ 1์ผ ๊ฒฝ์ฐ
- ์ผ์ชฝ ์์์ ์ธ๋ฑ์ค = ๋ถ๋ชจ ์ธ๋ฑ์ค * 2
- ์ค๋ฅธ์ชฝ ์์์ ์ธ๋ฑ์ค = ๋ถ๋ชจ ์ธ๋ฑ์ค * 2 + 1
- ๋ถ๋ชจ ์ธ๋ฑ์ค = ์์์ ์ธ๋ฑ์ค / 2
์ฝ์
: ๊ฐ์ฅ ๋์ ์ฝ์
ํ ๋ถ๋ชจ ๋
ธ๋์ ๋น๊ตํ ๊ต์ฒด
์ญ์ : ์ฒซ ๋ฒ์งธ ๋
ธ๋ ๊ฐ์ ๊บผ๋ธ ํ ๋ง์ง๋ง ๋
ธ๋์ ๊ฐ์ ์ฒซ ๋ฒ์งธ๋ก ์ด๋
--> ๋ง์ง๋ง ๋
ธ๋ ์ญ์
--> ์ฎ๊ธด ์ฒซ๋ฒ์งธ ๋
ธ๋์ ๊ฐ์ ์๋๋ก ๋ด๋ ค๊ฐ๋ฉฐ(child์) ๋น๊ตํ ๊ต์ฒด
โ ์๊ฐ ๋ณต์ก๋ ( Big-O )
์๋ฃ๊ตฌ์กฐ
์๊ฐ ๋ณต์ก๋
์ต๋๊ฐ ์ฐพ๊ธฐ (Find Max)
์ต๋๊ฐ ์ถ์ถ (Extract Max)
ํค ์ฆ๊ฐ (Increase Key)
์ฝ์ (Insert)
์ญ์ (Delete)
ํฉ๋ณ (Merge)
์ด์ง ํ (Binary Heap)
O(1)
O(logn)
O(logn)
O(logn)
O(logn)
O(m+n)
ํ์ด๋ง ํ (Pairing Heap)
O(1)
O(logn)
O(logn)
O(1)
O(logn)
O(1)
์ดํญ ํ (Binomial Heap)
O(1)
O(logn)
O(logn)
O(1)
O(logn)
O(logn)
ํผ๋ณด๋์น ํ (fibonacci Heap)
O(1)
O(logn)
O(1)
O(1)
O(logn)
O(1)
โ ์ฌ์ฉ ์
ํํ๋ง ์ฝ๋
์ฃผ์ด์ง ๋ฌธ์์ด์ ์ด์ฉํ์ฌ ๋ฌธ์์ ๋น๋์๋ฅผ ๊ณ ๋ คํ์ฌ 2์ง์๋ก ์์ถํ๋ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋.
์ต์ ํ์ ์ด์ฉํ๋ค.
โ ์ฐ์ ์์ ํ
์ฐ์ ์์์ ๊ฐ๋
์ ํ์ ๋์
ํ ์๋ฃ ๊ตฌ์กฐ.
์ผ๋ฐ์ ์ธ ํ๋ FIFO์ ๊ท์น์ผ๋ก ๋จผ์ ๋ค์ด์จ๊ฒ์ด ๋๊ฐ๊ฒ ๋๋ ์ฐ์ ์์ ํ๋ ์ฐ์ ์์๊ฐ ๋์ ์์๋๋ก ๋๊ฐ๊ฒ ๋๋ค.
Last updated