SplMinHeap和decreaseKey

时间:2011-06-08 07:37:58

标签: php data-structures path-finding

简短的问题:

  

有没有办法实现一个   高效   decreaseKey   的方法   SplMinHeap   (或任何spl堆)没有   失去绩效奖金?

背景:

对于私有项目,我正在使用实现A*类,并希望通过使用其中一个spl堆结构来提高性能。但我无法理解如何使用它们,因为它们都缺少decreaseKeycontains方法。也许我完全错过了什么?

非常感谢!

1 个答案:

答案 0 :(得分:0)

要实施decreaseKey方法,我们需要:

  1. 在堆中查找条目并将其键减1。
  2. 执行上堆冒泡,直到堆顺序属性完全恢复。
  3. 除非我们需要具有最小密钥的条目,否则我们根本不知道条目的存储位置。此外,即使我们在可接受的时间内找到所请求的条目,我们也无法更新其密钥,关于SplMinHeap的方法。

    因此,我没有看到使用SplMinHeap数据结构实现decreaseKey方法的有效方法。也许您应该通过YourArrayList实现YourHmpleteBreeTree实现YourHeap,例如。