[理工] Dijkstra algo

楼主: ekids1234 (∵:☆星痕╭☆)   2019-09-21 01:45:17
各位好
想请教一下关于 Dijkstra 的 Pseudo Code
https://i.imgur.com/3CO4NP4.png
其实我不知道 S 在这个 Code 的存在意义是什么
在实作上的确会有 int passed[n] 之类的来记录是否经过了没错
并且在 Relax 的 if 那边新增确定没走过
但 Pseduo Code 并没有对这部分多说明 (我是看林立宇讲义 + wiki)
G.adj[u] 理论上也不会去做更动
另外,如果多去记录有无走过,应该也无法让程式 复杂度降低
就是多少省一点这样 ?
作者: DLHZ ( )   2019-09-21 02:39:00
抱歉 S的确可以移掉 是我看错有点乱 你愿意的话把我多余的废话删掉吧
作者: FRAXIS (喔喔)   2019-09-21 11:08:00
是不是证明里面有用到啊?
作者: mathtsai (mathtsai)   2019-09-21 14:48:00
Q = V-S不然按照这个code 没办法排掉已经决定过的vertex
作者: DLHZ ( )   2019-09-21 16:20:00
第五行除了取出最小的点应该也有同时在Q里去掉?
作者: mathtsai (mathtsai)   2019-09-21 18:14:00
愈想愈怪 因为实作的时候 只有处理Q和relax而已确实没有处理S的部分
作者: mistel (Mistel)   2019-09-22 00:36:00
其实我觉得是操作的时候会用到提醒一下学生XD,不然你看后面的Prim's确实没有(虽然两个处理不同问题但概念很像) 我认为追踪的话应该是扫一遍所有点的状态,就像原po大大说的一样
作者: b10007034 (Warren)   2019-09-23 09:59:00
交大江蕙如 Lec12刚好有提到,在45:07之后

Links booklink

Contact Us: admin [ a t ] ucptt.com