Árvore de abrangência mínima
Um gráfico que não tem instruções é chamado de gráfico não direcionado. Cada gráfico deve ter um caminho de um nó para outro nó. Uma árvore de extensão também é um gráfico conectado não direcionado, onde todos os nós do gráfico estão presentes com bordas mínimas. Se uma árvore de extensão não tem todos os nós do gráfico, não podemos dizer que é uma árvore de extensão. O total de pesos totais da árvore será menor que o peso original do gráfico enquanto o conectamos através das bordas mínimas de peso. A árvore de extensão também não tem um ciclo. Qualquer gráfico tem mais de uma árvore de extensão, mas apenas um deles será único. Chamamos isso de uma árvore de abrangência mínima, pois estamos tentando criar um gráfico completo com todos os nós, mantendo o peso baixo.
Vamos entender a árvore de abrangência mínima com um exemplo. Então, como sabemos, a árvore de abrangência mínima faz parte do gráfico, mas com menos custo. Portanto, esse cenário pode ser ilustrado com um exemplo. Vamos supor que temos um gráfico como este.
O gráfico acima pode ser organizado de maneiras diferentes para que o ciclo do gráfico seja removido, caso contrário não será um MST (árvore mínima de abrangência). Portanto, removeremos o ciclo do gráfico e contaremos o custo total do gráfico. Temos quatro nós, ou vértices (A, B, C e D).
Caso 1:
Depois de remover o ciclo do gráfico, o custo do gráfico acima do MST (árvore mínima de abrangência) é 56.
Caso -2:
Depois de remover o ciclo do gráfico, o custo do gráfico acima do MST (árvore mínima de abrangência) é 53.
Caso - 3:
Depois de remover o ciclo do gráfico, o custo do gráfico acima do MST (árvore de abrangência mínima) é 41.
Podemos ver que o último gráfico do custo total do Case-3 é muito menor em comparação com os outros dois gráficos. Portanto, este gráfico é o nosso MST final (árvore de abrangência mínima) para o gráfico original. Os algoritmos do prim ou Kruskal são o motivo de encontrar o custo do gráfico o mais baixo possível. Então esse é o nosso motivo neste artigo para explicar este MST.
Podemos desenhar uma árvore de extensão com a ajuda dos dois métodos a seguir:
Neste artigo, vamos discutir o algoritmo de Kruskal. O algoritmo de Prim será discutido no próximo artigo.
Algoritmo de Kruskal
O algoritmo de Kruskal é muito fácil de implementar em comparação com o algoritmo de Prim, porque não precisamos nos preocupar com os vértices de adjacência neste algoritmo. Neste algoritmo, o algoritmo de Kruskal começa em todos os vértices do gráfico. Escolhemos a vérticice mínima da borda de peso e começamos a criar a árvore de extensão mínima. Escolhemos outra vantagem com o peso mínimo e adicionamos à árvore de abrangência mínima. Este processo continua até que não adicionemos todos os nós do gráfico original. Uma vez que todos os nós no gráfico sejam adicionados à árvore mínima de abrangência, o algoritmo vai parar. Durante a criação da árvore de abrangência mínima de um gráfico, também precisamos cuidar desse gráfico, não criando ciclos porque os ciclos não devem estar na árvore mínima de abrangência.
Portanto, se algum nó criar o ciclo na árvore mínima, escolhemos o outro nó, mesmo que o peso desse nó seja maior que o nó anterior que cria o ciclo.
O algoritmo de Kruskal é diferente do algoritmo de Prim. O algoritmo de Prim, enquanto cria uma árvore de abrangência mínima, começa em qualquer nó ou vertice e depois adiciona outro nó ou vértice apenas dos nós de adjacência. Mas o algoritmo de Kruskal não se importa com o nó de adjacência e sempre seleciona esse nó que tem menos peso, mas esse nó não deve criar um ciclo na árvore mínima.
Algoritmo de Kruskal Passos:
As medidas seguintes são tomadas ao escrever o código C ++ para o algoritmo de Kruskal.
Agora, implementaremos as etapas do algoritmo acima usando um exemplo. Temos o gráfico abaixo e descobriremos a árvore de abrangência mínima para este gráfico.
Então, de acordo com o algoritmo, primeiro escolhemos a menor borda de peso, que é AB. Então, escolhemos essa vantagem e a mantemos na matriz de árvores. O peso da borda AB é 9.
Agora, escolhemos a próxima menor borda de peso, CD e mantemos essa borda na matriz de árvore de abrangência mínima. O peso da borda do CD é 12.
A próxima menor vantagem que recebemos foi BC, que mantivemos na matriz. A borda BC ponderada é 17.
Nosso algoritmo vai parar por aqui porque temos todos os vértices de um gráfico, e temos nossa árvore mínima. O peso total deste MST é 9 + 12 + 17 = 38.
Programa: O abaixo é um código C ++ para o algoritmo de Kruskal.
#incluirSaída:
Agegrafos de MST: [0-2] (1) [3-4] (1) [1-3] (2) [2-3] (2) [1-5] (3)Conclusão:
Estudamos a árvore mínima de Kruskal, que é a primeira preferência da maioria das pessoas quando elas precisam encontrar o gráfico MST de um gráfico. O algoritmo de Kruskal é simples de entender e implementar em um aplicativo do mundo real. Como o algoritmo de Prim, o algoritmo de Kruskal também é muito útil em aplicações da vida real. Então, devemos entender este algoritmo.