问题标签 [prims-algorithm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5549 浏览

c++ - 在 STL 优先级队列 C++ 中实现 reduceKey

我正在尝试实现 Prim 算法,为此我需要为优先级队列提供 reductionKey 方法(以更新优先级队列中的键值)。我可以在 STL 优先级队列中实现这个吗?

如果有帮助,这就是我正在遵循的算法:

  • 对于图 G 中的每个顶点 u
    • 将 u 的键设置为 INFINITY
    • 将你的父级设置为 NIL
  • 将源顶点的键设置为 0
  • 排队到优先级队列 Q 图中所有顶点与上面的键
  • 而 Q 不为空
    • 弹出 Q 中键最低的顶点 u
    • 对于你的每个相邻顶点 v
      • 如果 (v 还在 Q) 并且 (key(u) + weight-function(u, v) < key(v)) 那么
        • 将 u 设置为 v 的父级
        • 将 v 的键更新为等于 key(u) + weight-function(u, v) // 这部分给我带来了问题,因为我不知道如何在优先级队列中实现 reduceKey
0 投票
1 回答
2343 浏览

c# - C# Maze Generation 我自己的 Prim 算法的实现 Bug

首先让我为尺寸道歉,我会尽量保持这个尺寸

在尝试完全按照维基百科上所说的方式构建 prim 算法之后,我发现它不会像我构建的迷宫那样工作。所以我试图做同样的想法来适应我的迷宫,但我看到了一个奇怪的错误,

当我的游戏开始时,它只是没有正确构建我的迷宫,我无法弄清楚为什么这是偶尔发生的事情

迷宫错误图片

其他时候它工作得很好,所以我有一个public Dictionary<int, Dictionary<int, MazeCellState>> maze这个迷宫,当它开始时,迷宫都是树篱,然后我继续像这样建造路径

我不知道为什么有时我会得到上面的图片,我的理论是它最终会恢复它的自我

一些快速说明,此时 MazeCellState 只能是 2 个选项之一,路径或对冲和 reorderList 将重新索引任何类型的列表,迷宫大小是从屏幕分辨率计算出来的,每个单元格是 64x64 PX,

0 投票
1 回答
161 浏览

c++ - C++,当从我填充数组的列表中获取值时,什么都不返回

好的,所以对于我的算法类中的一个项目,我想从 .txt 文件中读取迪士尼乐园地图中的所有点,然后使用 prims 算法来解决 MST 问题。

我的问题是我使用“”分隔符将文件中的值解析为临时数组,然后将它们推送到列表中。一切工作正常,花花公子,直到将数组推入列表,然后在程序稍后接收值时,它不返回任何值。我知道这很愚蠢,但希望你们都能提供帮助。

我的代码: http: //pastebin.com/rS6VJ6iJ

迪士尼乐园.txt:http: //pastebin.com/f78D0qrF

我知道这很愚蠢,但我现在无法弄清楚。

编辑:

现在我变得乱码,因为程序正在读取文件末尾的空白行,因为没有值乱码:id:84�������1222����422) ����明日世界露台�����ӿ����

更新了导致错误的部分代码:

0 投票
1 回答
2149 浏览

java - Prim 算法

我正在使用Prim 算法和 Java 中的 PriorityQueue来研究最小生成树。但是,我弄错了总重量(树的最小重量)。

我是否误解了总重量背后的概念,还是我的代码有问题?

0 投票
1 回答
54 浏览

algorithm - 包含一条边并生成具有边的生成树中权重最小的生成树

我希望找到图 G 的最小生成树,使其包含边 e,并且它的权重是所有具有边 e 的生成树中的最小值。如果我包含边 e,然后运行 ​​prime 或 kruskals,它会工作吗?

0 投票
3 回答
1821 浏览

algorithm - 如果边缘权重均匀分布在 0 和 1 个 prims 或 kruskals 之间

假设图 G 中的边权重均匀分布在 [0,1) 上。哪种算法 prims 或 Kruskals 会更快?我认为这将是 kruskals,因为我们可以利用特定的排序算法,因为排序是 kruskals 算法的瓶颈步骤。

0 投票
1 回答
501 浏览

algorithm - 非平面图中是否存在最小生成树?

非平面图中是否存在最小生成树?我已阅读有关 prim 算法和三角不等式的信息,但我的图表不满足三角不等式?

0 投票
2 回答
6767 浏览

algorithm - 如何为 Prim 算法更新堆中的元素优先级?

我正在研究 Prim 算法。代码中有一部分,穿过切割的下一个顶点将到达属于MST. 在这样做的同时,我们还必须“更新另一组中与离开顶点相邻的所有顶点”。这是来自的快照CLRS

在此处输入图像描述

有趣的部分在于第 1 行。11. 但是由于我们在这里使用的是堆,所以我们只能访问最小元素,对吧 ( heap[0])?那么我们如何从堆中搜索和更新顶点,即使它们不是最小的顶点,因此我们知道它们在哪里,除了线性搜索?

0 投票
1 回答
602 浏览

c++ - Prims 算法节点优先级

所以我得到了这个 Prims-Algorithm 的伪代码,

//TODO 中的内容

0 投票
0 回答
260 浏览

algorithm - 我可以降低这个算法的复杂性吗(我正在使用 NGenerics)

我正在使用 NGenerics 的 Prim 算法来找到连接一些顶点的最小生成树。这就像在每个顶点都连接到每个其他顶点的图上搜索 MST,这意味着边比顶点多,我应该使用 Prim 算法(而不是 Kruskal 算法)。Prim 的算法,如果实施得当,具有 O(|E| + |V| log |V|) 时间复杂度。由于 NGenerics 是一个众所周知的库,它可能具有 Prim 算法的最佳实现,或者至少比 O(|V|^2) 更好。

但是,有一个问题:
如果我想使用 NGenerics 库,我必须将我的图形的所有边添加到 NGenerics 图形数据结构中。像这样的东西(这是伪代码):

但是,这部分代码显然具有 O(|V|^2) 时间复杂度,这比使用具有更好算法实现的库的目的要好。好吧,不是真的,因为常量也有影响,但我的算法现在是 O(|V|^2) 仍然令人沮丧。

无论如何,我在这里错过了什么吗?我可以在 O(|E| + |V| log |V|) 中完成这项工作吗?