Я изучаю f-heap от "введения к алгоритмам", и операция "уменьшение-ключ" действительно меня смущает - зачем это нужно "каскадно-разрезать"?
если эта операция удалена:
- стоимость make-heap(), insert(), minimum() и union() остается, очевидно, неизменной
- extract-min() все еще O (D (n)), потому что в операции O (n)) "консолидировать" стоимость большинства корневых деревьев может быть оплачена , когда они были добавлены в корневой список, а остальные затраты O (D (n))
- reduce-key(): очевидно, O (1)
Что касается D (n), хотя я не могу это точно объяснить, я думаю, что он все еще O (lgn), cuz без "каскадного разреза", node может быть просто перенесен в root немного позже, а любые node скрытые под своим отцом не влияют на эффективность. По крайней мере, это не ухудшит ситуацию.
извиниться за мой бедный английский: (
Кто-нибудь может помочь? спасибо