Heap
Last updated
Last updated
ν(heap)μ μ΅λκ° λ° μ΅μκ°μ μ°Ύμλ΄λ μ°μ°μ λΉ λ₯΄κ² νκΈ° μν΄ κ³ μλ μμ μ΄μ§νΈλ¦¬(Complete binary tree)λ₯Ό κΈ°λ³ΈμΌλ‘ ν μλ£κ΅¬μ‘°(tree-based structure)μ΄λ€. (μν€λ°±κ³Ό )
Graph Algorithm : Dijkstra, Prim's Minimum Spanning Tree(νλ¦Ό μ΅μ μ μ₯ νΈλ¦¬)
κ·Έλ¦¬κ³ λ€μν λ¬Έμ λ₯Ό νΈλλ°μμ μ¬μ©λλ€.
λΆλͺ¨λ
Έλμ ν€κ°μ΄ μμλ
Έλμ ν€κ°λ³΄λ€ νμ μκ±°λ κ°λ€. key(λΆλͺ¨λ
Έλ) < key(μμλ
Έλ)
λΆλͺ¨λ
Έλμ ν€κ°μ΄ μμλ
Έλμ ν€κ°λ³΄λ€ νμ ν¬κ±°λ κ°λ€. key(λΆλͺ¨λ
Έλ) > key(μμλ
Έλ)
λ°λΌμ 루νΈλ Έλμλ νμ κ°μ₯ ν° κ°μ΄λ κ°μ₯ μμ κ°μ΄ μ μ₯λμ΄ μκΈ°λλ¬Έμ μ΅λκ° λλ μ΅μκ°μ O(1)λ§μ μ°Ύμ μ μλ€. μ¬κΈ°μ ν€κ°μ μ€λ‘μ§ λΆλͺ¨ μμλ Έλκ°μλ§ μ±λ¦½νλ€.
nκ°μ λ Έλλ₯Ό κ°μ§κ³ μλ heapμ λμ΄λ O(logn)μ΄λ€. νμ μμ μ΄μ§νΈλ¦¬μ΄λ―λ‘ λ Έλμ κ°μλ‘ κΉμ΄μ λμ΄λ₯Ό κ³μ°ν μ μλ€.
λ§μ§λ§ levelμ μ μΈνκ³ λ κ° λ 벨 iμ 2^iκ°μ λ Έλκ° μ‘΄μ¬νλ€.
νμ μμ μ΄μ§νΈλ¦¬μ΄λ―λ‘ κ° λ Έλμ λ²νΈλ₯Ό λΆμΌ μ μλ€. λ°°μ΄μ μμ μ΄μ§νΈλ¦¬λ₯Ό νννκΈ°μ λ§€μ° ν¨μ¨μ μ΄λ€.
λ°°μ΄λ‘ ννν¨μΌλ‘μ¨ λΆλͺ¨λ Έλμ μμλ Έλλ₯Ό μ°ΎκΈ°κ° μ¬μμ§λ€.
μΌμͺ½ μμλ
Έλ μΈλ±μ€ : 2*(λΆλͺ¨λ
Έλ μΈλ±μ€)
μ€λ₯Έμͺ½ μμλ
Έλ 2*(λΆλͺ¨λ
Έλ μΈλ±μ€)+1
λ
Έλ xμ λΆλͺ¨ λ
Έλ μΈλ±μ€λ (μμλ
Έλ μΈλ±μ€)/2
λ‘ μ μ μλ€.
μ£Όμμ¬ν indexλ 1λΆν° μμ!νλ€λ μ μ μ£Όμν΄μΌνλ€.
κ°μ₯ λμ μ리μ λ Έλλ₯Ό μ½μ νλ€.
κ·Έ λ Έλμ λΆλͺ¨ λ Έλλ₯Ό μλ‘ λΉκ΅νλ€.
κ·μΉ(μ΅μν, μ΅λν)μ λ§μΌλ©΄ κ·Έλλ‘ λκ³ , κ·Έλ μ§ μμΌλ©΄ λΆλͺ¨μ κ΅ννλ€.
κ·μΉμ λ§μ λκΉμ§ 1~3λ² κ³Όμ μ λ°λ³΅νλ€.
O(logn)
μ΅λκ° νΉμ μ΅μκ°μ΄ μ μ₯λ λ£¨νΈ λ Έλλ§ μ κ±°ν μ μλ€.
λ£¨νΈ λ Έλλ₯Ό μ κ±°νλ€.
λ£¨νΈ μ리μ κ°μ₯ λ§μ§λ§ λ Έλλ₯Ό μ½μ νλ€.
μ¬λΌκ° λ Έλμ κ·Έμ μμ λ Έλ(λ€)μ λΉκ΅νλ€.
쑰건μ λ§μ‘±νλ©΄ κ·Έλλ‘ λκ³ , κ·Έλ μ§ μμΌλ©΄ μμκ³Ό κ΅ννλ€.
μ΅λ ν 1. λΆλͺ¨λ³΄λ€ λ ν° μμμ΄ μμΌλ©΄ κ΅ννμ§ μκ³ λλΈλ€. 2. λΆλͺ¨λ³΄λ€ λ ν° μμμ΄ νλλ§ μμΌλ©΄ κ·Έ μμνκ³ κ΅ννλ©΄ λλ€. 3. λΆλͺ¨λ³΄λ€ λ ν° μμμ΄ λ μμΌλ©΄ μμλ€ μ€ ν° κ°κ³Ό κ΅ννλ€.
μ΅μ ν 1. λΆλͺ¨λ³΄λ€ λ μμ μμμ΄ μμΌλ©΄ κ΅ννμ§ μκ³ λλΈλ€. 2. λΆλͺ¨λ³΄λ€ λ μμ μμμ΄ νλλ§ μμΌλ©΄ κ·Έ μμνκ³ κ΅ννλ©΄ λλ€. 3. λΆλͺ¨λ³΄λ€ λ μμ μμμ΄ λ μμΌλ©΄ μμλ€ μ€ μμ κ°κ³Ό κ΅ννλ€.
쑰건μ λ§μ‘±ν λκΉμ§ 4μ κ³Όμ μ λ°λ³΅νλ€.
O(logn)