Algorithm 在Kruskal'中存储路径信息;s算法

Algorithm 在Kruskal'中存储路径信息;s算法,algorithm,graph-algorithm,depth-first-search,minimum-spanning-tree,kruskals-algorithm,Algorithm,Graph Algorithm,Depth First Search,Minimum Spanning Tree,Kruskals Algorithm,我使用Kruskal算法生成了一个最小生成树,我想知道如何存储路径 这是我的最小生成树 Loc1 | Loc2 | Distance 02 | 10 | 2.00 Km 05 | 07 | 5.39 Km 02 | 09 | 5.83 Km 04 | 05 | 5.83 Km 06 | 08 | 5.83 Km 03 | 09 | 7.07 Km 01 | 04 | 11.18 K

我使用Kruskal算法生成了一个最小生成树,我想知道如何存储路径

这是我的最小生成树

Loc1 |  Loc2 |  Distance
  02 |   10  |    2.00 Km
  05 |   07  |    5.39 Km
  02 |   09  |    5.83 Km
  04 |   05  |    5.83 Km
  06 |   08  |    5.83 Km
  03 |   09  |    7.07 Km
  01 |   04  |    11.18 Km
  07 |   09  |    11.18 Km
  07 |   08  |    15.81 Km
Total Weight = 70.12 Km
----------------------------------------------------

这取决于你有多少额外的空间。假设您需要节省空间:

  • 确定边的方向,使生成的结构至少具有 大多数情况下,每个节点都有一个父节点。怎么做?只需选择一个节点并使其成为根节点。它的子节点是一级节点等
  • 现在以child->parent格式存储生成的图形(在表中,您可以将Loc1列设为child,将Loc2列设为parent。按child对其进行索引)
  • 对于给定的两个节点a和y,需要计算其距离,找到它们的父节点集并查看它们的相交位置。如果x的父对象是A,则A的父对象是B。。。父路径是ABCDLMN(其中N是根)。类似地,如果y的父根是EFLMN。如您所见,它们的最小公共根都是L。距离x->L是5,y->L是3,=>x和y之间的距离是5+3=8

  • 复杂性:O(hlogn),其中h是树的高度,n是树中的元素数(我假设logn中每个节点的查找时间)。

    它已经存在于您的小表格中,没有?@ElKamina..我想通过编程将所有路径存储在列表或数组中,以便计算跳数。例如,根据上述MST,我如何计算Loc 1到Loc 3之间的跳数