我正在尝试了解如何实现斐波那契堆操作。鉴于我们有以下堆:
例如,我们如何将 35 减少到 27?由于 27 不大于 30,因此顺序未保留,因此我们必须重建堆。那么27去哪儿了呢? 5 岁以下?
最佳答案
在 Fibonacci 堆中,减少键实际上从树中删除其键减少到父键以下的任何节点。在您的情况下,该节点将作为单个节点放入根列表中。
更一般地,decrease-key 的工作原理如下:
- 降低键值。
- 如果节点的新键大于其父节点的,则停止。
- 如果该节点是根节点,则停止。
- 取消标记节点并将其从其父节点中删除。
- 如果父级未标记,则标记它。
- 如果 parent 被标记,转到(3)。
希望这对您有所帮助!
关于algorithm - 需要帮助了解如何减少斐波那契堆中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24074348/