Os algoritmos de Kruskal e Prim produzem a mesma árvore de abrangência mínima?

9

Supondo que as arestas não sejam direcionadas, tenham peso exclusivo e nenhum caminho negativo, esses algoritmos produzem as mesmas árvores de abrangência mínima?

Death_by_Ch0colate
fonte
3
Sim, e eles parecem produzir o mesmo MST. Mas isso não é definitivo.
precisa saber é o seguinte
2
Ok, isso é verdade, apenas verificando.
Evil
A resposta continua a ser positiva mesmo que remover a condição de "nenhum caminho negativo"
John L.

Respostas:

13

Constatou -se que afirma que, se todas as condições mencionadas acima forem atendidas, um gráfico terá necessariamente um MST único. Portanto, em termos de minha pergunta, os algoritmos de Kruskal e Prim necessariamente produzem o mesmo resultado.

Death_by_Ch0colate
fonte
7

Se o MST for único, todos os algoritmos o produzirão forçosamente.

Se o MST não for exclusivo, as saídas poderão diferir devido a ordens de processamento de nó diferentes (até duas implementações distintas do mesmo algoritmo podem), mas os pesos totais serão idênticos. Nesse caso, o MST é um nome impróprio.

Yves Daoust
fonte
Eles certamente podem, mas eles fazem ?
Raphael
4
@ Rafael: Eu respondi isso.
precisa
1
@ Yves Não, você não fez. Você disse que talvez " talvez " não seja uma garantia. Por exemplo, se você tem algoritmos de ordenação, e eles são estáveis, eles não produzem o mesmo resultado, independentemente do algoritmo usado. Se não forem estáveis, poderão produzir os mesmos resultados. Portanto, a questão é se esses algoritmos têm um senso de estabilidade no tópico e o exibem.
luk32
@ luk32: você leu "até duas implementações distintas do mesmo algoritmo podem"? A propósito, o algoritmo de classificação estável produz a mesma saída porque é definida de forma exclusiva, portanto, eles não têm escolha. Se a estabilidade não for necessária, a solução não é exclusiva e diferentes implementações podem se comportar de maneira diferente.
usar o seguinte
Justo, mas essa afirmação não é óbvia. O que torna possível a implementação não ser estável? Existe algum tipo de classificação envolvida e a estabilidade depende disso?
Luk32
2

Para adicionar a resposta de Yves Daoust , o seguinte gráfico

Triângulo

Neste gráfico, temos 3 nós e 3 arestas, cada um com o mesmo peso. Obviamente, quaisquer 2 arestas formarão um MST para este gráfico. No entanto, quais as duas arestas escolhidas dependerão não apenas do algoritmo, mas também da implementação do algoritmo. Por exemplo, se eu armazenar os nós em uma lista, posso visitá-los em uma ordem diferente do que se os nós forem armazenados em um conjunto, mesmo se eu usar o mesmo algoritmo MST a partir desse ponto.

De fato, se minha implementação depende da aritmética dos ponteiros (o que alguns contêineres em alguns idiomas fazem), posso até escolher um MST diferente cada vez que executo o algoritmo!

Cort Ammon
fonte
1
Observe que a postagem original indica que as arestas têm peso único; isso obviamente garante um MST único.
Whargin #
Esse último ponto também se aplica ao usar, por exemplo, setou dictno Python 3.3+: os hashes são salgados com um valor diferente a cada execução para dificultar os ataques de negação de serviço.
Jasmijn
@YvesDaoust Sinto muito por isso!
precisa
@ CortAmmon: não se preocupe, isso acontece.
Yves Daoust