需要帮助了解如何减少Fibonacci堆中的键

时间:2014-06-06 04:46:47

标签: algorithm data-structures heap fibonacci fibonacci-heap

我试图了解如何实现Fibonacci堆操作。鉴于我们有以下堆:

enter image description here

例如,我们如何减少35到27?由于27不大于30,因此不保留顺序,因此我们必须重建堆。那么27去哪儿了? 5岁以下?

1 个答案:

答案 0 :(得分:2)

在Fibonacci堆中,reduce-key实际上会从树的密钥减少到父密钥之下的任何节点中删除。在您的情况下,节点将作为单个节点放入根列表中。

更一般地说,reduce-key的工作原理如下:

  1. 减少钥匙。
  2. 如果节点的新密钥大于其父密钥,请停止。
  3. 如果节点是root,请停止。
  4. 取消标记节点并将其从父节点中删除。
  5. 如果父母没有标记,请将其标记。
  6. 如果标记了父母,请转到(3)。
  7. 希望这有帮助!