python - Boruvka算法并行实现CUDA

标签 python algorithm graph cuda minimum-spanning-tree

我正在尝试实现 Boruvka's algorithm用于 CUDA 中的最小生成树。我了解基本逻辑,但在实现时遇到问题。算法是:

Initialize Graph G(V,E)
Initialize MST
while size(G) > 1:
  for all nodes in graph:
    min equals minimum outgoing edge
    ?

在计算出每个节点的最小出边后,我不明白如何将不相交的子图缩减为新节点。一旦我这样做了,我如何计算这些不相交的子图之间的最小边?

最佳答案

我认为你不必将不相交的子图减少到新节点,你只需要为每个节点重新计算它的新组件,以便能够区分(在计算最小出边的过程中)节点是否属于不同的节点成分。 This数据结构将帮助您有效地做到这一点。

为了计算不相交子图之间的最小边,reduction通常使用。我认为您必须为此启动另一个内核。

关于python - Boruvka算法并行实现CUDA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13781958/

相关文章:

python - 为什么链接器在未在任何地方指定时寻找 python36_d.lib?

python - 为什么 SQL 聚合函数比 Python 和 Java(或穷人的 OLAP)慢得多

java - TreeSet 迭代的时间复杂度是多少?

algorithm - 最坏情况为 O(n) 的基数排序算法

algorithm - 如何将二分匹配转换为独立集

haskell - 修改Haskell包fgl中的边缘标签

python - Django:设置项目时出错

python - 在字典列表中查找最大值

algorithm - 找到通过 2D 平面中的点的最短路径

algorithm - 归纳图中的顶点和 - 动态规划