Prim的算法"最接近的阵列"

时间:2015-11-26 17:16:56

标签: arrays prims-algorithm

我一直在尝试了解最小跨度树及与之相关的算法,即Prim's,Kruskal和Dijkstra算法。

我理解这些算法是如何工作的并且已经看到了它们的实际应用但是我对于Prim的算法只有一点我不了解,这是一个我不明白它的数组。这是它的意图以及它是如何运作的。

情况就是这样:

我必须做一个练习,其中我有一个邻接表,我必须运行Prim的算法来创建一个最小跨度树。

表格如下:

   0 |1|2| 3| 4| 5|
0| 0 73 4 64 40 74 
1| 73 0 46 26 30 70 
2| 4 46 0 77 86 14 
3| 64 26 77 0 20 85 
4| 40 30 86 20 0 22 
5| 74 70 14 85 22 0 

由" |"分隔的数字是顶点,表中的数字是边。很简单,我运行算法(在这个网站中,例如:http://www.jakebakermaths.org.uk/maths/primsalgorithmsolverv10.html)或者只是在纸上记下来并绘制最小的跨度树,我得到的树的最小成本为86,边缘已经是使用的是4,26,20,22和14。

现在问题来了,显然只是解决它并不够。我需要找到一个名为nearest [0,...,5]的数组的值。我知道它已用于算法中,但我不知道它的目的,我应该怎么做以及如何获得它的价值。

我在互联网上搜索了它,发现了这个关于Prim算法的链接: http://lcm.csa.iisc.ernet.in/dsa/node183.html

定义数组"最接近" as"对于V in中的i,最近的[i]给出U中最接近i&#34的顶点。

我仍然不明白它是什么,它用于什么以及它们内部的价值是什么。

我所知道的所有答案都是

closest[1] = 3
closest[2] = 0
closest[3] = 4
closest[4] = 5
closest[5] = 2

提前谢谢。

1 个答案:

答案 0 :(得分:2)

当使用Prim算法进行MST时,重要的是要跟踪四个方面:顶点,访问过的顶点,到顶点的最小距离,以及此顶点之前的内容(这就是您要查找的内容)。

从顶点0开始,您会看到最接近0的顶点是2.同时,您可以访问所有其他节点,但距离更远。然而,最接近0的节点是2,因此2被访问并且其父节点被设置为顶点0.所有其他节点尚未被访问,但其父现在被设置为0 ,各自的距离。您现在需要设置要访问的最小距离顶点,现在将此节点视为要考虑的节点。

Vertex | Visited | Distance | Parent
0      | T       | -        | -
1      | F       | 73       | 0
2      | T       | 4        | 0
3      | F       | 64       | 0
4      | F       | 40       | 0
5      | F       | 74       | 0
然后我们检查节点的所有距离2.我们将从2到其他节点的新距离与其他节点距离先前距离的距离进行比较,如果需要更新,则会更新。我们现在看到2到5的距离小于0到5,现在变为访问顶点5,其父级现在等于顶点2.

Vertex | Visited | Distance | Parent
0      | T       | -        | -
1      | F       | 46       | 2
2      | T       | 4        | 0
3      | F       | 64       | 0
4      | F       | 40       | 0
5      | T       | 14       | 2

现在我们访问5.需要注意的一点是,如果访问了一个节点,我们在距离计算中不会考虑它。我已经模拟了其余部分,希望你能看到你如何得到你正在寻找的答案。

Vertex | Visited | Distance | Parent
0      | T       | -        | -
1      | F       | 46       | 2
2      | T       | 4        | 0
3      | F       | 64       | 0
4      | T       | 22       | 5
5      | T       | 14       | 2

现在访问4

Vertex | Visited | Distance | Parent
0      | T       | -        | -
1      | F       | 46       | 2
2      | T       | 4        | 0
3      | T       | 20       | 4
4      | T       | 22       | 5
5      | T       | 14       | 2

现在访问3

Vertex | Visited | Distance | Parent
0      | T       | -        | -
1      | T       | 26       | 3
2      | T       | 4        | 0
3      | T       | 20       | 4
4      | T       | 22       | 5
5      | T       | 14       | 2