在克鲁斯卡尔算法中存储路径信息

发布于 2025-01-07 22:27:52 字数 421 浏览 0 评论 0原文

我已经使用克鲁斯卡尔算法生成了最小生成树,我想知道如何存储路径

这是我的最小生成树

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
----------------------------------------------------

I have generated a minimum spanning tree using Kruskal's algorithm and I wanted to know how to store paths

This is my minimum spanning tree

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
----------------------------------------------------

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笔芯 2025-01-14 22:27:52

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

  1. 以最终结构的方式定位边缘
    每个节点最多有一个父节点。怎么做呢?只需选择一个节点并将其设为根即可。它的子节点是第一级节点等
  2. 现在以子节点->父节点的格式存储结果图(在表中,您可以将 Loc1 列设为子节点,将 Loc2 列设为父节点。按子节点对其进行索引)
  3. 对于给定的两个节点 a 和 y,其需要计算距离,找到它们的父集并查看它们相交的位置。前任。如果 x 的父级是 A,A 的父级是 B...父级路径是 ABCDLMN(其中 N 是根)。类似地,如果 y 的父根是 EFLMN。正如你所看到的,它们的最小公共根是L。x->L的距离是5,y->L是3,=>L。 x和y之间的距离是5+3=8。

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

It depends on how much extra space you have. Assume you need to be space-efficient:

  1. Orient the edges in such a way that the resulting structure has at
    most one parent node for each node. How to do it? Just pick a node and make it the root. It's children are first level nodes etc
  2. Now store the resulting graph in the format child->parent (In your table you can make Loc1 column child and Loc2 column parent. Index it by child)
  3. For given two nodes, a and y, whose distance needs to be calculated, find their parental sets and see where they intersect. Ex. If parent of x is A, A's parent is B... the parental path is ABCDLMN (where N is the root). Similarly if the parental root for y is EFLMN. As you can see, the lowest common root for both of them is L. Distance from x->L is 5, y->L is 3, => distance between x and y is 5+3=8.

Complexity: O(hlogn) where h is the height of the tree and n is the number of elements in the tree (I am assuming lookup time for each node in logn).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文