博客
关于我
NP问题以及一些相关知识
阅读量:365 次
发布时间:2019-03-05

本文共 668 字,大约阅读时间需要 2 分钟。

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

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

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

 

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

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

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

NP问题的判断:

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

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

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

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

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

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

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

 

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

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

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

 

转载地址:http://jdvg.baihongyu.com/

你可能感兴趣的文章
Mybatis的介绍和基本使用
查看>>
Idea使用tool window中的persistence功能一键生成数据库实体
查看>>
Redis简介(数据结构,哨兵、集群和SpringDataRedis)
查看>>
jar包破解Idea
查看>>
MySQL锁机制
查看>>
Java设置PPT幻灯片背景——纯色、渐变、图片背景
查看>>
Java 设置PDF文档浏览偏好
查看>>
Java 添加、替换、删除PDF中的图片
查看>>
C#中构造函数的作用
查看>>
Go 数组&切片
查看>>
Go 文件操作
查看>>
老Python总结的字典相关知识
查看>>
深入理解 ZK集群的Leader选举
查看>>
计算机的运算方法
查看>>
谈谈MySQL的基数统计
查看>>
大型面试现场:一条update sql执行都经历什么?
查看>>
自导自演的面试现场之--你竟然不了解MySQL的组提交?
查看>>
ajax 处理请求回来的数据
查看>>
简单单页面路由跳转demo
查看>>
vue 不常见操作
查看>>