0

在這MIT video regarding Prims algorithm for minimum spanniing tree教授在時間71:16秒解釋π[v] ←u。但我不明白爲什麼我們需要這一步。 π[v] ←u是什麼意思?算法中最後一行的含義是什麼? 在源給出的整個算法如下:在最小生成樹的Prims算法中π[v]←u是什麼意思?

Q←V 
key[v] ←∞for all v∈V 
key[s] ←0for some arbitrary s∈V 
while Q≠∅ 
do u←EXTRACT-MIN(Q) 
    foreach v∈Adj[u] 
    do ifv∈Qand w(u, v) < key[v] 
     then key[v] ←w(u, v)⊳DECREASE-KEY 
      π[v] ←u 

At the end, {(v, π[v])}forms the MST 
+1

看起來像轉讓 –

回答

2

π是任何舊的數組變量。所以這行代碼與其他任務並沒有太大區別。

它是什麼確實但算法是保存前一個節點的當前節點。 π有時也被稱爲前任函數,因爲對於任何給定的節點nπ[n]給出了該節點的前身(算法完成後)。

所以π可以用來重建由Prim的算法找到的路徑(=生成樹的邊緣)。

+0

你說「π只是任何舊的數組變量」。他爲什麼不用π[someIndex]訪問數組呢? – Geek

+0

@Geek好吧,它是一個[*關聯數組*](http://en.wikipedia.org/wiki/Associative_array)。但是代碼中的'key'和'Adj'也是如此。索引數組只是索引器是從0到N的整數的關聯數組的特殊情況。大多數編程語言都使用「數組」來表示後者,即「由0到N的整數索引的關聯數組」,但此算法使用更一般的定義。 –

+0

你能解釋一下最後一行中的符號是什麼意思嗎? – Geek