[理工] 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