Cada gráfico tem mais de uma sequência de classificação topológica, porque depende do grau dentro das bordas dos nós. O primeiro nó inicial que escolhemos com um número de nós em grau é 0.
Vamos entender o algoritmo de classificação topológico com um exemplo.
Etapa 1: Inserimos os nós cuja contagem de borda de entrada é igual a 0. Então, esses nós são o nó 1 e o nó 4.
Passo 2:
a. Começamos com o nó 1. Podemos escolher qualquer nó entre o nó 1 e o nó 4.
b. Diminuímos cada borda do nó em 1, que está conectado ao nó 1. Estamos diminuindo a borda dos nós (0, 2 e 3).
c. Movemos o nó 1 da lista para a lista topologicamente classificada, como mostrado abaixo.
Etapa 3:
a. Agora prosseguimos da lista, que é o nó 4.
b. Dimigimos todas as bordas de saída dos nós conectados ao nó 4, que são nós (0 e 3).
c. Agora, o nó 3 não tem bordas de entrada, então o empurramos para a lista e o nó 4 turnos para a lista topologicamente classificada.
Passo 4:
a. Agora prosseguimos da lista, que é o nó 3.
b. Dimigimos todas as bordas de saída dos nós conectados ao nó 3, que são nós (0 e 2).
c. Agora, os nós 0 e o nó 2 não têm bordas de entrada, por isso o empurramos para a lista, e o nó 3 muda para a lista topologicamente classificada.
Etapa 5:
a. Agora prosseguimos da lista, que é o nó 0.
b. Como sem bordas de saída do nó 0, então simplesmente as adicionamos à lista de classificação topológica.
Etapa 6:
a. Agora prosseguimos da lista, que é o nó 2.
b. Como sem bordas de saída do nó 2, então simplesmente as adicionamos à lista de classificação topológica.
Etapa 7:
Finalmente, classificamos a lista aqui.
Algoritmo de classificação topológico
Abaixo são as etapas para o algoritmo de classificação topológico que temos que seguir.
Etapa 0: Calcule o grau dentro de cada nó do gráfico.
Etapa 1: Primeiro temos que encontrar um nó que tenha bordas de zero.
Etapa 2: removemos esse nó do gráfico e o adicionamos à lista de ordens de classificação topológicas.
Etapa 3: Remova os nós que têm bordas de saída.
Etapa 4: reduza o grau no número de bordas relacionadas que foram removidas.
Etapa 5: Repita as etapas 1-4 até que não haja nós com 0 em grau.
Etapa 6: verifique se todos os itens estão na sequência correta.
Etapa 7: agora, resolvemos o pedido da etapa 6.
Etapa 8: Coloque um fim no algoritmo.
Código Python: O abaixo é uma implementação do Python do exemplo acima.
FromCollectionImportDefaultDictSaída:
Ordem de classificação topológica: [0, 1, 3, 5, 6, 2, 4] |
Complexidade do tempo do algoritmo de classificação topológica:
O tempo total para processar o algoritmo é O (e + n), onde e representa o número de arestas e n representa o número de nós no gráfico. Então, na etapa seguinte, devemos calcular o nível interno de cada nó, que geralmente leva o (e) tempos, e depois colocar todos esses nós em uma lista classificada em que o seu grau é zero, o que leva o (n) vezes. Portanto, a complexidade total do tempo do algoritmo de classificação topológica é O (E+N).
Mas a complexidade do espaço do algoritmo de classificação topológica é O (n), que é o número total de nós no gráfico.
Aplicativo :
1. O tipo topológico é muito útil para encontrar o ciclo do gráfico.
2. O algoritmo de classificação topológico é usado para determinar as condições de impasse em um sistema operacional.
3. O algoritmo de classificação topológico é usado para encontrar o caminho mais curto em um gráfico acíclico ponderado.
Conclusão:
Este artigo aprendeu sobre mais um algoritmo importante, classificação topológica. Vimos que esse algoritmo só funciona com gráficos aciclicos. O algoritmo de classificação topológico também ajuda a determinar a ordem de compilação de tarefas. O algoritmo de classificação topológico tem muitas vantagens em tempo real, como encontrar o caminho mais curto. Como o tipo topológico é extremamente útil, todo programador e aluno devem entender completamente esse algoritmo.