[理工] 101交大资演 mst &dijkstra

楼主: pipiLUANAIAI (狗猫咪)   2021-12-26 14:39:05
https://i.imgur.com/B1gWYNJ.jpg
https://i.imgur.com/oFuZGxZ.jpg
想请问这题code内while loop里面有个v=1
是否是让in[i]都等于true的时候可以跳到1开始?
但这样为什么要跳到1不跳到其他的vertex
谢谢
作者: chengweihsu (安安你好)   2021-12-26 15:34:00
v要选其他也可以啊,只是你loop就要from 1 ~ n,反正就是找当前dist最小的做为下次加入MST的点,我反而觉得是下面一行要改成dist = distance[v]啦
楼主: pipiLUANAIAI (狗猫咪)   2021-12-26 15:48:00
Distance[i]这个不是loop i 过去找最小的吗? 为什么要改成distance[v]呢?
作者: chengweihsu (安安你好)   2021-12-26 16:02:00
我是指v=1下面那行的dist要改,它的初始值不该是MAXINTloop里面没问题
楼主: pipiLUANAIAI (狗猫咪)   2021-12-26 16:47:00
如果他的初始值是MAXINT好像不会影响到找最小distance[i]? 就算没找到dist这个变量也不会再用到了 想请问为什么应该改成distance[v]呢?
作者: chengweihsu (安安你好)   2021-12-26 17:42:00
假设此时node 1跟另一个node k都还没被加入MST,且满足distance[1] < distance[k] < MAXINT所以如果dist一开始设为MAXINT而非distance[v](或distance[1]),那么最后v会被更新成k,但此时应当选node 1如果他loop硬要从2开始的话从1就没差啦,反正就是阵列中找最大最小值的算法

Links booklink

Contact Us: admin [ a t ] ucptt.com