繁体   English   中英

最小堆优先级队列的减少密钥功能的实现

[英]Implementation of decrease key function for a min heap priority queue

我正在尝试运行Dijkstra的算法,并且需要实现一个decreaseKey函数。 我在做这件事时遇到麻烦。 在这里阅读了一种解决方案但是通过将哈希映射存储在堆中,它占用了大量内存。 是否有实施方式decreaseKey没有一个哈希表,并仍然保持O(log n)的时间?

到目前为止,我decreaseKey函数有两个参数:顶点和newDistance。 当我调用decreaseKey(vertex * v, int newDistance) ,算法必须找到存储顶点“ v”的索引,然后更改其距离。 我无法弄清楚如何“找到”顶点以获取其索引并将其保持在O(log n)时间。

您不需要哈希映射即可存储信息; 您只需要从顶点到优先级队列位置的映射。 如果您的顶点由连续的整数标识,则映射由| V |的数组组成 整数(其中| V |是顶点数)。

虽然这不是一个小数目的空间,但每个图形顶点只有一个单词,大大少于边列表所占据的空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM