算法设计与分析---贪心(期末)

1.设计思想

设计思想 :每一步做出局部最优选择,每一步都选择当前可用的最优选项,以期达到全局最优。

2. 基本要素

  • 最优子结构 --> 一个问题的解包含子问题的最优解
  • 贪心选择性质 --> 问题的最优解可以通过局部问题的最优解得到

最佳量度标准:贪心每一步用作决策依据的选择 

3.一般背包问题(题目中所说的背包问题)

说明:每个商品可以被分成无限小份放入背包中。

最佳量度标准:权重比 --> pi/wi

做法:每次选择权重比最大的放入背包中。

4.哈夫曼树 (最优归并模式)

哈夫曼树详解

说明:出现次数为权重 (节点的数值)

最佳量度标准:带权外路径长度最小,即为权重*路径长

做法

  • 把出现次数按小到到排序,每次取两个最小的值,作为新生成节点的左右节点,然后将新节点的值放入队列中,直到队列为空。
  • 将左边标为0,右边标为1,既可以得到哈夫曼编码。
  • 叶子节点的值*(根结点到叶子结点的距离) 相加后得到的就是wpl

5.最小生成树

1.prim算法

说明:s集合是已经加到树上的点,v-s集合是没有添加的

最佳量度标准:s集合到v-s点的最短路径

做法:找里s集合最近的点加入集合中

伪代码

2.Kruskal算法

最佳量度标准:边权最小

做法:将边权排序,然后将两点和边加入树中,注意:不要形成闭环

伪代码

6.单源多汇点Dijkstra算法

参考文章

说明:S集合包含已求出的最短路径的点(以及相应的最短长度),V-S集合包含未求出最短路径的点(以及A到该点的路径,注意A->C由于没有直接相连 初始时为∞)

dist[i] 数组是记录s到i的最短路径

L[i] 数组是记录s到i最短路径上,i点的上一个节点的标志

最佳量度标准:从u集合中找到路径最短的路径,加入s集合中

做法:通过新加入的节点不断更新u集合,直到u为空。

伪代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值