Diferença Entre Kruskal e Prim: Kruskal vs Prim

Anonim
< Kruskal vs Prim

Na ciência da computação, os algoritmos de Prim e Kruskal são um algoritmo ganancioso que encontra uma árvore de abrangência mínima para um gráfico não direcionado ponderado conectado. Uma árvore de extensão é um subgrafo de um gráfico de tal forma que cada nó do gráfico está conectado por um caminho, que é uma árvore. Cada árvore de expansão tem um peso, e o mínimo possível de pesos / custos de todas as árvores abrangentes é a árvore de extensão mínima (MST).

Mais sobre o Algoritmo de Prim

O algoritmo foi desenvolvido pelo matemático checo Vojtěch Jarník em 1930 e, mais tarde, independentemente pelo cientista da computação Robert C. Prim em 1957. Foi redescoberto por Edsger Dijkstra em 1959. O O algoritmo pode ser indicado em três etapas principais;

Dado o gráfico conectado com n nós e o respectivo peso de cada borda, 1. Selecione um nó arbitrário do gráfico e adicione-o à árvore T (que será o primeiro nó)

2. Considere os pesos de cada borda conectada aos nós da árvore e selecione o mínimo. Adicione a borda e o nó na outra extremidade da árvore T e remova a borda do gráfico. (Selecione se houver dois ou mais mínimos)

3. Repita o passo 2, até que as bordas n-1 sejam adicionadas à árvore.

Neste método, a árvore começa com um único nó arbitrário e se expande desse nó em cada ciclo. Portanto, para que o algoritmo funcione corretamente, o gráfico precisa ser um gráfico conectado. A forma básica do algoritmo de Prim tem uma complexidade de tempo de O (V

2 ).

Mais sobre o Algoritmo de Kruskal

O algoritmo desenvolvido por Joseph Kruskal apareceu nos trabalhos da American Mathematical Society em 1956. O algoritmo de Kruskal também pode ser expresso em três etapas simples.

Dado o gráfico com n nós e o respectivo peso de cada borda, 1. Selecione o arco com o menor peso do gráfico inteiro e adicione à árvore e exclua do gráfico.

2. Do restante, selecione a borda menos ponderada, de forma a não formar um ciclo. Adicione a borda à árvore e exclua do gráfico. (Selecione se houver dois ou mais mínimos)

3. Repita o processo no passo 2.

Neste método, o algoritmo começa com a borda menos ponderada e continua selecionando cada borda em cada ciclo. Portanto, no algoritmo o gráfico não precisa estar conectado. O algoritmo de Kruskal tem uma complexidade de tempo de O (logV)

Qual a diferença entre Algoritmo de Kruskal e Prim?

• O algoritmo de Prim inicializa com um nó, enquanto o algoritmo de Kruskal inicia com uma vantagem.

• Os algoritmos de Prim abrange de um nó para outro, enquanto o algoritmo de Kruskal seleciona as bordas de forma que a posição da borda não se baseie no último passo.

• No algoritmo de prim, o gráfico deve ser um gráfico conectado, enquanto o Kruskal pode funcionar em gráficos desconectados também.

• O algoritmo de Prim tem uma complexidade de tempo de O (V

2 ), e a complexidade de tempo de Kruskal é O (logV).