关于迪杰特斯拉算法基于最小堆的改进

迪杰特斯拉算法每一步需要选取离X最近的边添加入X集合中。而求解这个最小值如果能够很高效,那么可以进一步提高算法的效率。

由于我们每一步选取最小的,因此我们可以计算出剩余节点离X中点的距离,然后用最小堆的数据结构来直接弹出最小值。最小堆求解最小值的算法复杂度为\mathcal{O}(n\log n)

最小堆就是一种完全二叉树,但是要保证根节点小于左右节点。最大堆则反之。这里我们介绍最小堆的创建,插入与删除过程。

创建- 先将所有元素按照二叉树结构随意插入。然后进行“自底向上调整”。假设元素为[9 3 7 6 5 1 10 2]

 

 

 插入操作:先将元素插入二叉树最后,然后进行“调整”---把0调整上去

 

 

 

 删除:将根节点删除,然后从末尾元素放在根节点位置,然后自顶向下调整

 

 

 注意:最大堆基本操作相似,但是与只是比的时候是看谁大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值