Learning
토픽 26 / 66·트리 자료구조

피보나치 힙 (Fibonacci Heap)

피보나치 힙 (Fibonacci Heap)

느슨한 구조의 힙으로, 감소 키(Decrease-Key)와 병합을 O(1) 상각 시간에 수행하여 다익스트라·프림 알고리즘의 이론적 최적 복잡도 달성

목적: 감소 키 최적화, 병합 효율, 그래프 알고리즘 가속화

특징: 느슨한 구조, 지연 통합, Cascading Cut, 상각 분석

구조

  • 루트 리스트: 최소 힙 트리들의 이중 연결 리스트
  • min 포인터: 최소 루트 가리킴
  • 자식 연결: 이중 원형 연결 리스트
  • marked 플래그: Cascading Cut 판단

연산 복잡도

  • insert: O(1) 상각 (루트 리스트에 추가)
  • find-min: O(1) (min 포인터)
  • merge: O(1) 상각 (루트 리스트 연결)
  • extract-min: O(log n) 상각 (통합 Consolidate)
  • decrease-key: O(1) 상각 (Cut + Cascading Cut)
  • delete: O(log n) 상각 (decrease-key + extract-min)

Cascading Cut: 자식 잃은 노드(marked)가 다시 자식 잃으면 부모에서 분리, 연쇄 분리

통합(Consolidate): extract-min 시 동일 차수 트리 병합, 이항 트리와 유사

장점: decrease-key O(1), 병합 O(1), 이론적 최적

단점: 상수 인자 큼, 구현 복잡, 실용적으로 이진 힙에 뒤처질 수 있음

다익스트라 적용: O((V + E) log V) → O(E + V log V) 로 개선

적용사례: 다익스트라, 프림 알고리즘, 이론적 분석

비교: 피보나치(decrease-key O(1)) vs 이진힙(O(log n)) vs 이항힙(병합O(log n))

연관: 힙, 다익스트라, 프림, 이항 힙, 상각 분석