由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Dijkstra 算法为什么优先populate当前最小dist的那个节点?
相关主题
A家电面被拒贡献个题攒人品吧问一道面试题目
L家onsite面经graph如何找最短路径?
any idea?a question on finding longest path between two vertices
这题如何做,最近看面经碰到两次都不太会做请教一个算法
尘埃落定里的两道题检查graph里面是否有circle,是用BFS,还是DFS?
一个算法题问一个题目
这道题就是用Dijkstra 吗?问一个链表的问题
g家的坐地铁那道题目,过不了small testcopy link with random additional pointers
相关话题的讨论汇总
话题: dist话题: graph话题: infinity话题: alt话题: vertex
进入JobHunting版参与讨论
1 (共1页)
w****x
发帖数: 2483
1
1 function Dijkstra(Graph, source):
2 for each vertex v in Graph:
3 dist[v] := infinity ;
4
5 previous[v] := undefined ;
6
7
8 dist[source] := 0 ;
9 Q := the set of all nodes in Graph ;
10
11 while Q is not empty:
12 u := vertex in Q with smallest distance in dist[] ;
13 remove u from Q ;
14 if dist[u] = infinity:
15 break ;
16
17
18 for each neighbor v of u:
19
removed from Q.
20 alt := dist[u] + dist_between(u, v) ;
21 if alt < dist[v]:
22 dist[v] := alt ;
23 previous[v] := u ;
24 decrease-key v in Q;
25 return dist;
==================================
第12行为什么要去最小的? 随便取一个不为infinity的不就得了?
t*********7
发帖数: 255
2
只有你的出发点这个时候才是0,其他全部是INFINITY
i******e
发帖数: 273
3
如果节点A到节点B的最短路径经过节点C,那么这条最短路径上从A至C之间的子路径一定
是从节点A到节点C的最短路径。也就是说,从A到B的最短路径是建立在从A到C的最短路
径基础上的,这是为什么每次总是从unfinished节点集合中找当前距离源点最近的节点
的原因。
节点集合应该放到一个按节点和源点距离排序的min priority_queue中。但是由于每个
节点对源点距离是动态变化的,STL和Java的Priority_queue似乎不能处理这种情况,
那位大牛说说应该怎么解决?
1 (共1页)
进入JobHunting版参与讨论
相关主题
copy link with random additional pointers尘埃落定里的两道题
问个老题一个算法题
问个g的面试题这道题就是用Dijkstra 吗?
Graph DFS Iterativeg家的坐地铁那道题目,过不了small test
A家电面被拒贡献个题攒人品吧问一道面试题目
L家onsite面经graph如何找最短路径?
any idea?a question on finding longest path between two vertices
这题如何做,最近看面经碰到两次都不太会做请教一个算法
相关话题的讨论汇总
话题: dist话题: graph话题: infinity话题: alt话题: vertex