双向DJ的可行性和理论论证

hbuzzd 2009-10-19 08:27:05
最近在搞一个最短路径的算法、因为数据设计的原因,使得我们必须吝啬的使用内存,同时时间要求也比较高。前辈的算法采用的是双向的DJ探索,但是并没有对这个算法做出一个理论上的论证,从结果来看,基本上还没发现什么问题。(发现的问题都是数据本身引起的。)我想问的问题是,双向的DJ算法在首次探索结束后即退出探索循环,可不可以确定这个解就是最有解。有没有可以证明的?谢谢!希望各位可以不吝赐教,万分感谢。
...全文
152 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
oooccc1 2009-10-26
  • 打赏
  • 举报
回复
Dijkstra算法, 本质上是一个优先搜索..
双向, 无非就是从两端同时搜索, 相当于两边分别做Dijkstra.
现在先只考虑一边的Dijkstra.
在Dijkstra中需要一个优先队列, 优先队列头上的元素永远是最优的(根据优先队列的性质决定).

所以: "每次从优先队列(堆)里出来的状态都是最优的状态"(它是当前队列中, 距离原点最短的点).


入优先队列时,这个状态不一定最优; 但是出队列时它必然最优.
hbuzzd 2009-10-26
  • 打赏
  • 举报
回复
你要注意每次拿出来的是递加代价后的最短的。
可否说得更加详细一点?谢谢!
oooccc1 2009-10-26
  • 打赏
  • 举报
回复
可以利用反证法, 分情况讨论.
若左边有更短.如何如何...
若右边有跟短.如何如何...
若两边都有跟短..则如何如何...

最后得出你得到的最短路径的确最短...
你要清楚一点, 每次从优先队列(堆)里出来的都是最短的...
hbuzzd 2009-10-24
  • 打赏
  • 举报
回复
有没有人发表个意见啊。等好几天了,只是说有人证明过,完全没有找到任何相关资料。
oooccc1 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 oooccc1 的回复:]
MARK 好奇双向DJ是何算法
[/Quote]
刚一看..终于明白过来..原来是双向优先搜索
DJ = Dijkstra
hbuzzd 2009-10-22
  • 打赏
  • 举报
回复
很简单,就是两个定点之后同时使用DJ算法探索。在满足适当相遇条件即认为相遇。探索结束。
oooccc1 2009-10-21
  • 打赏
  • 举报
回复
MARK 好奇双向DJ是何算法
zhengjiankang 2009-10-20
  • 打赏
  • 举报
回复
哈哈,不知道什么是双向DJ,来学习了。
算法的理论证明是数学上的问题,找个数学牛的问问去吧。
hbuzzd 2009-10-20
  • 打赏
  • 举报
回复
请各位指教一下啊。谢谢!

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧