私は 'introduction to algorithms'からf-heapを学んでいますが、 'reduce-key'操作は本当に私を混乱させます - なぜこれにはカスケードカットが必要ですか?フィボナッチヒープにカスケードカットが必要なのはなぜですか?
この操作が削除された場合:
- メークヒープのコスト()、(挿入)、最小値()と組合()明らかまま不変
- 抽出分()はOまだO(n(H)) 'consolidate'操作では、ルートリストに追加されたときに最も多くのルート木のコストがに支払われ、残りのコストO(D(n) n))
- reduce-key():明らかにO(1)
D(n)は正確には説明できませんが、まだカスケードカットされていないO(lgn)、cuzだと思います。ノードはちょっと後でルートリストに移動します任意のノードはその父親の下に隠れるは効率に影響しません。少なくとも、これは状況を悪化させません。
することは、私の下手な英語をお詫び:(
誰でも助けることができる?カスケードカット用 感謝
大きな質問です。親の位置にあるすべての情報を放棄するのは非常に直感的ではないようです。 –