NP问题以及一些相关知识

之前介绍过BFS,BFS可以用来找出所用段数最少的路径。但是,如果路径有权值,想要找出最快路径,据需要用到迪杰斯特拉算法,该算法找出的是总权重最小的路径。

即:如果要计算非加权图的最短路径,可以使用广度优先遍历;要计算加权图的最短路径,可以使用迪杰斯特拉算法

但是,有一点需要注意,迪杰斯特拉算法只适用于正权重的有向无环图。如果有负权边,可以使用贝尔曼-福德算法。

 

贪心算法:每步都选择局部最优解,最终得到的就是全局最优解的方法就是贪心算法。

NP问题:如旅行商问题和集合覆盖问题。NP问题的求解需要我们计算出所有的解,并且从中选出最小/最短的那个,这样的问题就属于NP问题。

但是因为时间复杂度,NP问题往往难以找到最优解,我们往往使用贪心算法来获取近似最优解。

NP问题的判断:

并没有一个准确的办法判断一个问题是不是NP问题,但是针对NP问题的一些特征,还是有迹可循的。

1、元素较少时算法的运行速度非常快,但是随着元素数量的增加,速度会变得非常慢。

2、涉及“所有组合”的问题通常是NP完全问题

3、不能将问题分解成小问题,必须考虑各种可能的情况。

4、如果涉及序列(如旅行商问题中的城市序列)且难以解决,它可能就是NP完全问题。

5、如果问题涉及集合(如广播台集合)且难以解决,它可能就是NP完全问题。

6、如果问题可以转化为集合覆盖问题或者旅行商问题,那它肯定就是NP完全问题。

 

另:对于NP完全问题,还没有找到快速解决方案。

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

贪心算法易于实现,运行速度快,是不错的近似算法。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值