Pergunta

Estou implementando o algoritmo de Kruskal e eu gostaria de utilizar threads. No entanto, eu não estou certo que eu sei o suficiente sobre o algoritmo para fazer isso.

O que imagino é que eu tinha diferentes partes do gráfico seria resolvido para e ligado no final. Alguém pode me apontar na direção certa? Obrigado.

Foi útil?

Solução

A partir Wikipedia

A investigação centrou-se em resolver o mínimo abrangendo problema árvore em um altamente parallelized maneira. Com um número de processadores linear é possível para resolver o problema em O (log n) de tempo. Um artigo 2003 "Rápido Shared-Memory Algorithms for Computing Mata geradora mima de Dispersa Gráficos" por David A. Bader e Guojing Cong demonstra uma pragmática algoritmo que pode calcular MSTs 5 mais rápidos tempos de 8 processadores do que um optimizado algoritmo sequencial. [9] Tipicamente, os algoritmos são paralelas baseado em algoritmo-Prim do Boruvka e, especialmente, o algoritmo de Kruskal fazer não escala bem a adicional processadores.

Assim, você pode olhar para o algoritmo mencionado nesse papel, mas Kruskal provavelmente não irá beneficiar de vários segmentos.

Outras dicas

O algoritmo de Kruskal para MST é difícil de paralelizar porque considera bordas em uma ordem estritamente especificado. Você deve dar uma olhada algoritmo de Boruvka que é mais fácil de paralelização da ele pode trabalhar em cada sub-árvore de um MST parcial de forma independente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top