良好的C ++数据结构实现,最小填充了哈希表

时间:2018-11-20 02:45:05

标签: c++ data-structures

我正在寻找通过哈希表增强的 min-heap 的高效C ++数据结构实现。

python中有一个称为pqdict的对应部分。 优先级队列字典— pqdict 1.0.0文档 https://pqdict.readthedocs.io/

更具体地说,我想将此数据结构用作有效的a *搜索实现的开放列表。

我希望已经存在一个,所以我不需要重新实现。

1 个答案:

答案 0 :(得分:1)

我假设您希望这种数据结构支持reduce_key操作...

当我实现A *或Dijkstra的算法时,我只是没有那样做。

在C ++中,我会:

  • 将(节点*,priority)记录放入std :: priority_queue中,并将优先级存储在节点中。
  • 降低节点的优先级时,只需将另一个记录插入优先级队列,然后将旧的记录保留在原处。
  • 从优先级队列中弹出记录时,请检查优先级是否正确。如果不是,则将其丢弃并再次弹出。
  • 跟踪优先级队列中无效记录的数量。当/如果无效记录的数量增加到优先级队列大小的一半,则清除并重建仅包含有效记录的优先级队列。

这种系统易于实现,不会影响Dijkstra算法或A *的复杂性,并且比您要求的大多数数据结构使用更少的内存。