도구스개발

피보나치 힙 연산 계산기

두 힙을 합치고(union) 최솟값을 꺼내는(extractMin) 과정에서 트리 개수가 어떻게 바뀌는지 직접 계산해 보여줍니다. 삽입·union O(1), extractMin 상각 O(log n)의 근거입니다.

쉼표로 구분

쉼표로 구분

union 직후 트리(루트) 개수

10그루

힙 A 5그루 + 힙 B 5그루를 이어 붙이기만 했습니다(O(1)). 최솟값은 3.

union 전 힙 A 트리 개수5그루 (전부 차수 0)
union 전 힙 B 트리 개수5그루 (전부 차수 0)
union 직후 차수 분포차수0×10

extractMin 한 번 실행

꺼낸 최솟값3
꺼낸 뒤 트리 개수2그루
꺼낸 뒤 차수 분포차수0×1, 차수3×1
union 직후에는 모든 트리가 차수 0(독립된 노드)이라 정리할 게 없습니다. extractMin이 호출되고 나서야 최솟값의 자식들이 루트로 올라오고, 같은 차수의 트리끼리 합쳐지면서(consolidate) 트리 개수가 10그루에서 2그루로 정리됩니다.

전체를 다 꺼낸 결과(힙 성질 검증)

꺼낸 순서3, 7, 8, 17, 18, 21, 23, 24, 38, 52
오름차순인가예 — 힙 성질이 올바릅니다

연산별 시간복잡도(상각)

insertO(1)
unionO(1)
decreaseKeyO(1) 상각
extractMinO(log n) 상각
삽입·union이 O(1)인 이유는 «정리를 미루기」 때문입니다. 그 미뤄 둔 비용을 extractMin이 호출될 때 한꺼번에(consolidate) 치르는데, 여러 번의 연산에 걸쳐 평균을 내면 O(log n)이 됩니다.

사용 방법

  1. 1힙 A와 힙 B에 넣을 숫자를 쉼표로 구분해 입력합니다.
  2. 2두 힙을 합친(union) 직후의 트리(루트) 개수를 확인합니다 — 그냥 이어 붙이기만 해서 O(1)입니다.
  3. 3합친 힙에서 extractMin을 한 번 실행했을 때 트리 개수가 어떻게 줄어드는지(consolidate) 확인합니다.
  4. 4전체를 다 꺼낸 정렬 결과로 힙 성질이 올바른지 확인합니다.

자주 묻는 질문

배열 기반 이진 힙과 달리 삽입과 두 힙의 병합(union)을 O(1)에 처리합니다. 새 원소는 독립된 트리 하나로 루트 리스트에 얹기만 하고, union은 두 루트 리스트를 이어 붙이기만 하기 때문입니다. 대신 이렇게 미뤄 둔 정리 비용을 extractMin이 호출될 때 한꺼번에 치릅니다.

최솟값을 떼어내고 그 자식들을 루트로 올린 �며, 차수(자식 수)가 같은 트리끼리 계속 합쳐(consolidate) 트리 개수를 O(log n)개로 줄입니다. 이 합치는 작업은 당장은 시간이 걸리지만, 그만큼 이전의 O(1) 삽입들이 미뤄 둔 비용을 갚는 것이라 여러 번의 연산에 걸쳐 평균을 내면(상각) O(log n)이 됩니다.

값을 줄여서 부모보다 작아지면 그 노드를 부모에서 잘라(cut) 루트 리스트로 바로 올립니다. 이미 자식을 한 번 잃은 부모(mark 표시됨)에서 또 자식이 잘리면 그 부모도 연쇄적으로 잘라 올리는데(cascading cut), 이 연쇄 자르기 덕분에 트리 모양이 너무 망가지지 않으면서도 각 cut 자체는 O(1)에 끝납니다.

CLRS(Cormen 등) 교과서의 표준 알고리즘을 그대로 구현해, 입력한 숫자들로 실제 피보나치 힙을 만들고 union·extractMin·전체 정렬까지 실행한 결과를 보여줍니다. 겉으로 보이는 트리 개수·차수 변화가 알고리즘이 실제로 만들어 내는 값입니다.

전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • CLRS 「Introduction to Algorithms」의 표준 알고리즘(insert·union·extractMin·decreaseKey·cut·cascading cut)을 그대로 구현했습니다.
  • 임의의 수열을 삽입한 뒤 extractMin을 반복하면 항상 오름차순으로 나오는 것(힙 성질), decreaseKey로 새치기시킨 값이 다음 extractMin에서 바로 나오는 것, 연쇄 자르기 이후에도 힙 성질이 유지되는 것을 왕복 검증 테스트로 확인했습니다(2026-09-05).
  • 이 계산기는 최대 원소 개수를 UI 표시에 적합한 범위로 제한합니다. 실제 알고리즘 자체는 원소 개수에 상한이 없습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 5일 · 결과는 참고용 추정치입니다.