带有 prim 的堆结构
heap structure with prim's
我想问一下prim算法使用堆结构有什么好处?
如作业所示:"Since the heap structure you implement will be used for a Prim’s algorithm"
谢谢 !
您需要某种形式的 Prim 算法队列。您可以使用一个简单的集合并每次搜索下一个元素。另一种方法是拥有一个列表并将所有新元素插入正确的位置。
对于 Prim 算法在队列上使用的操作,堆非常快。
例如,您可以在常数时间内将一个新元素插入斐波那契堆(一种特殊的堆)中。
Prim`s Algorithm 类似于图遍历技术:BFS,(更确切地说它使用 BFS 更好)。 BFS 中需要一个队列。
简单BFS需要的普通队列数据结构是先进先出。对于 Prim`s,需要修改队列的这种行为。
数据结构需要从其持有的元素中选择最小值元素,而不是先进先出。 Prim算法对底层数据结构所需要的操作必须支持
新插入
修改已放入数据结构的元素的值。
选取(并删除)数据结构中已包含的最少项。
这些操作可以高效 由Min-Heap 实现。为简单起见,使用二叉堆,为了提高效率,可以使用斐波那契堆。
我想问一下prim算法使用堆结构有什么好处? 如作业所示:"Since the heap structure you implement will be used for a Prim’s algorithm" 谢谢 !
您需要某种形式的 Prim 算法队列。您可以使用一个简单的集合并每次搜索下一个元素。另一种方法是拥有一个列表并将所有新元素插入正确的位置。
对于 Prim 算法在队列上使用的操作,堆非常快。
例如,您可以在常数时间内将一个新元素插入斐波那契堆(一种特殊的堆)中。
Prim`s Algorithm 类似于图遍历技术:BFS,(更确切地说它使用 BFS 更好)。 BFS 中需要一个队列。
简单BFS需要的普通队列数据结构是先进先出。对于 Prim`s,需要修改队列的这种行为。
数据结构需要从其持有的元素中选择最小值元素,而不是先进先出。 Prim算法对底层数据结构所需要的操作必须支持
新插入
修改已放入数据结构的元素的值。
选取(并删除)数据结构中已包含的最少项。
这些操作可以高效 由Min-Heap 实现。为简单起见,使用二叉堆,为了提高效率,可以使用斐波那契堆。