Boruvka算法并行实现CUDA

时间:2012-12-08 21:08:20

标签: python algorithm graph cuda minimum-spanning-tree

我正在尝试为CUDA中的最小生成树实现Boruvka's algorithm。我理解基本逻辑,但是我在实现它时遇到了麻烦。算法是:

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

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

1 个答案:

答案 0 :(得分:1)

我认为您不必将不相交的子图缩减为新节点,您只需重新计算其新组件能够区分的每个节点(在计算最小传出边缘期间),如果该节点属于到不同的组件。 This数据结构将帮助您以有效的方式完成此任务。

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