For extract-min to be O(logn) amortised, we need the consolidation array size (and thus the maximum degree D(n)) to be O(logn). This section proves:
Theorem: In a Fibonacci heap with n nodes, the maximum degree of any node satisfies D(n)≤⌊logϕn⌋ where ϕ=(1+5)/2≈1.618 is the golden ratio.
Fibonacci Numbers
Define Fibonacci numbers with F0=0, F1=1:
Fk=Fk−1+Fk−2for k≥2
Sequence: 0,1,1,2,3,5,8,13,21,34,55,…
These satisfy two useful identities:
Summation: Fk+2=1+∑i=0kFi
Golden ratio bound: Fk+2≥ϕk for all k≥0 (proved by induction: ϕ2=ϕ+1)
Lemma 1: The Grandchild Ordering
Let x be any node in a Fibonacci heap with degree k. Order its children c1,c2,…,ck by the time they were linked as children of x (earliest first). Then:
ci.degree≥i−2for i=1,…,k
Proof:
When ci was linked to x, both x and ci had degree at least i−1 (since x already had i−1 children).
After linking, ci could lose at most one child via decrease-key. If it lost a second child, the cascading cut rule would have cut ci from x, and ci would no longer be a child of x.
Therefore ci.degree≥(i−1)−1=i−2.
For i=1: when c1 was linked, x had degree 0, so c1 had degree 0. c1 could have lost at most one child, so c1.degree≥0, consistent with i−2=−1 (and degree is always ≥0).
Lemma 2: Subtree Size Lower Bound
Define sk as the minimum number of nodes in any subtree rooted at a node of degree k in a Fibonacci heap. Then:
sk≥Fk+2
Proof by induction:
Base cases:
k=0: s0≥1=F2 (a single root with 0 children)
k=1: s1≥2=F3 (root + one child, which is a degree-0 node)
Inductive step (k≥2): Consider a node z with degree k and minimal subtree size sk. Order its children by attachment time: c1,c2,…,ck.
By Lemma 1, ci.degree≥i−2. Since sk is monotonic (more children cannot give fewer descendants), the subtree rooted at ci has at least smax(0,i−2) nodes.
sk≥1 (for z itself)+∑i=1ksmax(0,i−2)
For i=1: c1 could be degree 0 (initially, or lost its sole child), so at least s0 nodes.
For i=2: c2.degree≥0, at least s0 nodes.
For i≥3: ci.degree≥i−2, at least si−2 nodes.
sk≥1+s0+s0+∑i=3ksi−2=2+∑i=0k−2si
By the induction hypothesis si≥Fi+2 for all i<k:
sk≥2+∑i=0k−2Fi+2=2+∑i=0k−2Fi+2
Re-index with j=i+2: ∑j=2kFj=∑j=0kFj−F0−F1=∑j=0kFj−1.
So sk≥2+(∑j=0kFj−1)=1+∑j=0kFj=Fk+2 (using the summation identity).
Proof of the Main Theorem
For any node x in a Fibonacci heap with k=x.degree:
n≥size(x)≥sk≥Fk+2≥ϕk
where n is the total number of nodes in the entire heap. Taking logarithms base ϕ:
k≤logϕn
Since k is an integer, k≤⌊logϕn⌋. This holds for every node, so
D(n)≤⌊logϕn⌋=O(logn)
Concrete Worked Example
For n=100 nodes: logϕ100≈ln1.618ln100≈0.4814.605≈9.57. So D(100)≤9.
For n=106: logϕ106≈28.7. So D(106)≤28.
The consolidation array for extract-min needs only ⌊logϕn⌋+1 entries — very small even for large heaps.
Consequences
Consolidation array size: D(n)+1=O(logn) — only O(logn) entries needed.
Children promoted during extract-min: at most D(n) children of the old minimum need to be moved to the root list.
Extract-min amortised cost: The cancellation O(r+D(n))+(D(n)+1−r)=O(D(n))=O(logn) depends critically on this degree bound.
The entire efficiency of Fibonacci heaps hinges on this structural guarantee provided by the marking and cascading cut regime.