《算法导论》笔记(15) 最小生成树 部分习题

习题23.1-11 给定图G和一棵最小生成树T,假设减少了位于T之外的某条边的权重。因为T内的边,是连接所有结点的权重最小的,那么首先将T外的减少权重的边(u, v)加入T,然后在u, v中寻找所有的路径,去掉路径中权重最大的边。习题23.2-3 使用斐波那契堆实现的Prim算法与使用二叉堆比较。因为斐波那契堆实现优先队列,使Prim算法的运行时间为O(E+VlgV),而二叉堆实现优先队列的P
摘要由CSDN通过智能技术生成

习题23.1-11 给定图G和一棵最小生成树T,假设减少了位于T之外的某条边的权重。因为T内的边,是连接所有结点的权重最小的,那么首先将T外的减少权重的边(u, v)加入T,然后在u, v中寻找所有的路径,去掉路径中权重最大的边。

习题23.2-3 使用斐波那契堆实现的Prim算法与使用二叉堆比较。因为斐波那契堆实现优先队列,使Prim算法的运行时间为O(E+VlgV),而二叉堆实现优先队列的Prim算法运行时间为O(VlgV+ElgV),前者更小。同时,稠密图使用斐波那契堆实现Prim算法更有优势。因为E越大,需要更新堆中元素次数越多。

习题23.2-4 边权重为1~|V|整数的图的Kruskal算法。边排序用计数排序,时间为O(E),有O(V)次make_set与O(E)次find_set和union,总时间为O(E+α(V)*(E+V))。如果边权重为1~W,则取决于W与|V|中最大值。

习题23.2-5 边权重为1~|V|整数的图的Prim算法。若最小优先队列用斐波那契堆,总运行时间为O(E+VlgV)。前一项代表执行更新堆中元素值的时间,后一项代表出堆时间。但若W<lgV,最小优先队列用一个1~W的计数桶来实现。每次出列操作的时间为O(W),则总时间为O(E+V*W)。

习题23.2-6 图中所有边权重均匀分布在[0,1)内的Prim算法与Kruskal算法比较。边的排序用桶排序,时间为O(E),对于kruskal算法,有O(E)次find_set和union,O(V)次make_set。运行时间为O(E+α(V)*(E+V)),而用了斐波那契堆作最小优先队列的Prim算法,总时间为O(E+VlgV)。可见,Kruskal算法更快。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值