Dijkstra算法为什么权值不能为负
2014-04-15 18:05
423 查看
Dijkstra算法当中将节点分为已求得最短路径的集合(记为S)和未确定最短路径的个集合(记为U),
归入S集合的节点的最短路径及其长度不再变更,如果边上的权值允许为负值,那么有可能出现当与S
内某点(记为a)以负边相连的点(记为b)确定其最短路径时,它的最短路径长度加上这条负边的权值
结果小于a原先确定的最短路径长度(意思是原先从a0---a已经确定一个最短路径,而此时的边权值为负,则
此步骤中的边权计算结果必定小于已经确定了的路径长度),但是a在Dijkstra算法下是无法更新的,由此便可能得
不到正确的结果。求带负权值边的单源最短路径可以用贝尔曼-福特算法。
归入S集合的节点的最短路径及其长度不再变更,如果边上的权值允许为负值,那么有可能出现当与S
内某点(记为a)以负边相连的点(记为b)确定其最短路径时,它的最短路径长度加上这条负边的权值
结果小于a原先确定的最短路径长度(意思是原先从a0---a已经确定一个最短路径,而此时的边权值为负,则
此步骤中的边权计算结果必定小于已经确定了的路径长度),但是a在Dijkstra算法下是无法更新的,由此便可能得
不到正确的结果。求带负权值边的单源最短路径可以用贝尔曼-福特算法。
相关文章推荐
- Dijkstra算法为什么权值不能是负值
- 为什么Dijkstra算法不能处理带负权边的图
- 为什么Dijkstra算法不能处理带负权边的图
- 为什么Dijkstra算法不能处理带负权边的图
- 为什么Dijkstra算法不能处理带负权边的图
- 为什么Dijkstra算法不能处理带负权边的图
- 为什么Dijkstra算法不能处理带负权边的图
- 为什么Dijkstra算法不能处理带负权边的图
- 为什么Dijkstra算法不能处理带负权边的图
- 为什么dijkstra算法处理不了带有负权值的边的图
- Win32程序中为什么不能响应WM_KEYDOWN消息
- 【Unity&UGUI】代码控制Toggle,为什么不能使用Toggle
- sqlserver,你的delete语句表名为什么不能别名?
- 为什么不能无损反编译?
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- 12、为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment?
- 为什么构造函数不能为虚函数
- 互联网人:为什么你工作3年依旧不能月薪过万
- java类中用类的数组作为函数参数传给类,为什么不能直接对类的数组进行操作?
- 为什么可能导致睡眠的函数都不能在中断上下文中使用呢?【转】