算法学习(九)贪婪技术

贪婪法通过一系列步骤来构造问题的解,每一步对目前构造的部分解做一个扩展,直到获得问题的完整解为止。所作的每一步必须:

  • 可行
  • 局部最优
  • 不可取消
    贪婪法的困难之处在于如何证明某一贪婪算法能获得最优解。常用的证明是使用数学归纳法。
    第二个证明方法是证明在接近问题目标的过程中,贪婪法每一步的选择都不比其他任何算法差。
    第三个证明是基于算法的输出。
    贪婪技术背后复杂的理论是拟阵。

Prim算法

最小生成树
Prim算法通过一系列不断扩张来构造一棵最小生成树。从图中的任一顶点开始,每一次迭代时一贪婪的方式扩张当前子树,即把不在树中的最近顶点添加到树中。

Kruskal算法

Kruskal算法生成最小生成树,将边按照权重的非递减顺序排列,然后每次从中挑出最短的边加到当前的子树中,如果构成了回路则把这条边跳过。

Dijkstra算法

单起点最短路径问题,求出它到所有其他顶点的最短路径。
Dijkstra算法按照从给定顶点到图中顶点的距离,顺序求出最短的路径。

哈夫曼树和编码

最短变长前缀码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值