pythonfloyd算法求最短路径_贪心算法,你不贪心谁信

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法。通过举例100kg背包问题和最短路径问题,说明了贪心算法可能无法找到全局最优解,但适用于一些特定问题如区间调度、最短路径等。在面对NP完全问题时,贪心算法常用于求解近似最优解,其优点在于实现简单且效率较高。
摘要由CSDN通过智能技术生成

@Author :By Runsen

贪心算法

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。

假设我们有一个100kg的背包,可以装飞中物品,如何将所装的物品总价值最大

5bc61aef13b640fce8730f7c4fa2e8de.png

答案 20kg 黑豆 ,30kg 绿豆 ,50kg 红豆

贪心算法的基本思路是从问题的某一个初始解出发一步一步地进行,根据某个优化测度,每一步都要确保能获得局部最优解。每一步只考虑一个数据,他的选取应该满足局部优化的条件。若下一个数据和部分最优解连在一起不再是可行解时,就不把该数据添加到部分解中,直到把所有数据枚举完,或者不能再添加算法停止

贪心算法的解题步骤

  • 建立数学模型来描述问题;
  • 把求解的问题分成若干个子问题;
  • 对每一子问题求解,得到子问题的局部最优解;
  • 把子问题的解局部最优解合成原来解问题的一个解。

在比如,有一个有权图,从顶点S开始,照样一条到顶点T的最短路径

贪心算法的解决思路

每次选择一条跟当前相连的权最小的边,直到找出顶点T。

求出的最短路径S ->A->E->T,路径长度1+4+4 =9

e9b207622a7f6c094eb640fc96ff74d0.png

但是贪心选择的方法,求的路径并不是最短路径 S- >B ->D->T 才是最短路径

因为前面的选择会影响后面的选择,导致每一步的选择都很糟糕,最终无法得到全局最优解

生活中常见的贪心算法就是钱币付钱

肯定先用最大的100来付钱,如果不够,就用50,最后剩下的用1元来补齐

1.贪婪算法可以寻找局部最优解,并尝试与这种方式获得全局最优解

2.得到的可能是近似最优解,但也可能便是最优解(区间调度问题,最短路径问题(广度优先、狄克斯特拉))

3.对于完全NP问题,目前并没有快速得到最优解的解决方案

4.面临NP完全问题,最佳的做法就是使用近似算法

5.贪婪算法(近似算法)在大部分情况下易于实现,并且效率不错

l

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值