我想问一下使用prim算法使用堆结构的兴趣是什么? 如在赋值中:“由于您实现的堆结构将用于Prim的算法” 谢谢 !
答案 0 :(得分:0)
您需要某种形式的队列用于Prim的算法。您可以使用简单的集合并每次搜索下一个元素。另一种方法是拥有一个列表并在正确的位置插入所有新元素。
Prim的算法在队列中使用的操作非常快。
例如,您可以在固定时间内将新元素插入到Fibonacci堆(特殊类型的堆)中。
答案 1 :(得分:0)
Prim的算法类似于图遍历技术:BFS,(更确切地说它使用BFS)。 BFS中需要一个队列。
简单BFS所需的正常队列数据结构先进先出。对于Prim来说,需要修改队列的这种行为。
数据结构需要从它所拥有的元素中选择最小值元素,而不是先进先出。 Prim算法对底层数据结构所需的操作必须支持
新插入
对已放入数据结构的元素值的修改。
选择(并删除)数据结构中已包含的最少项目。
Min-Heap 可以高效地实施这些操作。为简单起见,使用了二进制堆,为了提高效率,可以使用Fibonacci堆。