我正在尝试实现 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/