Tente o seguinte:
O peso de um elemento na pilha é sua profundidade na árvore binária correspondente. Portanto, o elemento na raiz tem peso zero, seus dois filhos têm peso 1 e assim por diante. Você define como função potencialwiiH
Φ(H)=∑i∈H2wi.
Vamos agora analisar as operações de heap. Para inserir, adicione um novo elemento e adicione profundidade no máximo . Isso aumenta o potencial em e pode ser feito no tempo . Em seguida, você "borbulha" o novo elemento de heap para garantir a propriedade de heap. Isso leva tempo e deixa inalterado. Assim, os custos de inserção são .dlog(n)2dO(1)O(logn)Φ(H)O(log(n)+Δ(Φ(H)))=O(logn)
Agora considere o extractMin . Você remove a raiz e a substitui pelo último elemento na pilha. Isso diminui o potencial em , portanto, você pode se dar ao luxo de reparar a propriedade heap e, portanto, os custos amortizados agora são .2log(n)O(1)
Se você tiver uma pergunta geral para a função em potencial, coloque isso como uma pergunta diferente.