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