Simplifique seu fluxo de trabalho: Pesquise miniwebtool.
Adicionar
> Calculadora de Ordenação Topológica
 

Calculadora de Ordenação Topológica

Calcule uma ordenação topológica de um grafo acíclico dirigido (DAG) usando o algoritmo de Kahn ou DFS. Detecta ciclos, relata o caminho do ciclo, constrói uma visualização de camadas de execução paralela, suporta ordenação lexicográfica menor e anima cada etapa em um grafo interativo.

Calculadora de Ordenação Topológica
Formato de aresta: A -> B (também aceita , =>, :). Máx 80 vértices / 800 arestas.
O algoritmo de Kahn (lexicográfico) fornece uma ordem única e reproduzível. DFS pós-ordem é o método clássico de busca em profundidade.

Embed Calculadora de Ordenação Topológica Widget

Calculadora de Ordenação Topológica

A Calculadora de Ordenação Topológica computa uma ordenação linear dos vértices de um grafo acíclico direcionado (DAG) tal que cada aresta direcionada de u para v coloca u antes de v. Insira seu grafo como uma lista de arestas ou lista de adjacência e a ferramenta retornará a ordem topológica usando o algoritmo de Kahn ou DFS pós-ordem, detectará ciclos (com o caminho exato do ciclo), agrupará tarefas em camadas de execução paralela, contará o número de ordenações válidas e animará cada passo em um grafo interativo.

O que é uma ordenação topológica?

Dado um grafo direcionado G = (V, E), uma ordenação topológica (ou arranjo topológico) é um arranjo linear v₁, v₂, …, vₙ de seus vértices tal que para cada aresta direcionada (u → v), u aparece antes de v no arranjo. Uma ordenação topológica existe se e somente se o grafo não possui ciclos direcionados — ou seja, se o grafo for um DAG. A ordenação raramente é única: um grafo pode ter muitas ordenações topológicas válidas quando vários vértices têm grau de entrada zero ao mesmo tempo.

Definição de ordem topológica
Uma permutação (v₁, v₂, …, vn) de V é topológica se e somente se
para cada aresta (u → v) em E: posição(u) < posição(v)

Algoritmos usados por esta calculadora

Algoritmo de Kahn (baseado em BFS, 1962)

O algoritmo de Kahn é a ordenação topológica mais intuitiva. Em cada etapa, ele escolhe um vértice com grau de entrada zero (sem arestas de entrada), anexa-o à saída e o "remove" do grafo, decrementando o grau de entrada de cada um de seus sucessores. Quando vários vértices têm grau de entrada zero, o desempate pode usar uma min-heap (fornecendo a menor ordenação lexicográfica) ou uma fila FIFO (fornecendo a ordem de inserção). O algoritmo de Kahn roda em tempo O(|V| + |E|) e funciona também como um detector de ciclos: se algum vértice ainda tiver grau de entrada > 0 após a fila esvaziar, o grafo possui um ciclo.

Algoritmo de Kahn (pseudocódigo)
Kahn(G):
  Q ← { v ∈ V : grau_ent(v) = 0 }
  L ← [ ]
  enquanto Q não estiver vazio:
    u ← Q.pop()
    L.append(u)
    para cada aresta u → v:
      grau_ent(v) -= 1
      se grau_ent(v) = 0: Q.push(v)
  se |L| < |V|: relatar ciclo
  caso contrário: retornar L

DFS pós-ordem (Tarjan, 1976)

O algoritmo DFS executa uma busca em profundidade e, sempre que um vértice termina (ou seja, todos os seus sucessores foram totalmente explorados), ele é empilhado. Inverter a pilha ao final resulta em uma ordem topológica válida. A detecção de ciclo é natural: encontrar um vértice que ainda está em progresso (marcado como CINZA) significa que uma aresta de retorno foi encontrada, portanto o grafo não é um DAG. O DFS pós-ordem também roda em tempo O(|V| + |E|).

DFS pós-ordem (pseudocódigo)
DFS-Topo(G):
  para cada vértice u em V: cor[u] ← BRANCO
  L ← pilha vazia
  para cada vértice u em V:
    se cor[u] = BRANCO: visitar(u)
  retornar reverse(L)

visitar(u):
  cor[u] ← CINZA
  para cada aresta u → v:
    se cor[v] = CINZA: relatar ciclo
    se cor[v] = BRANCO: visitar(v)
  cor[u] ← PRETO; L.push(u)

Camadas de execução paralela

Uma visão em camadas de um DAG particiona seus vértices em níveis de modo que cada aresta vá de um nível de número menor para um de número maior. Vértices na mesma camada são independentes entre si, podendo ser executados em paralelo. O número de camadas é igual ao comprimento do caminho mais longo mais um — este é o caminho crítico do DAG, o número mínimo de rodadas sequenciais necessárias para terminar todas as tarefas, mesmo com paralelismo ilimitado. Esta calculadora produz a visualização em camadas automaticamente sempre que a entrada for um DAG.

Detecção de ciclo

Se o grafo contiver um ciclo direcionado, nenhuma ordenação topológica será possível. Nossa calculadora relata o caminho exato do ciclo (ex: A → B → C → A) e destaca as arestas do ciclo em vermelho na visualização. Remover qualquer aresta única no ciclo é suficiente para restaurar a aciclicidade.

Formatos de entrada

Lista de arestas

Escreva cada aresta direcionada como origem -> destino, separada por vírgulas ou quebras de linha. Variantes de seta aceitas: ->, , =>, -->, :. Você também pode encadear arestas: A -> B -> C é um atalho para A->B e B->C. Rótulos de vértices podem ser letras, dígitos, sublinhados, hifens e pontos.

A -> B, B -> C, A -> C
C -> D
Camisa -> Gravata -> Paletó

Lista de adjacência

Escreva cada vértice, dois pontos e seus sucessores diretos (vértices para os quais ele aponta). Um vértice sem sucessores ainda precisa de sua linha, como D:.

A: B, C
B: D
C: D
D:

Como usar esta calculadora

  1. Escolha um formato: Alterne entre lista de arestas e lista de adjacência com os botões de rádio.
  2. Insira o grafo: Cole seus dados ou clique em um dos exemplos rápidos (ordem de vestir, pré-requisitos de cursos, alvos de build, um grafo com ciclo e mais).
  3. Escolha um algoritmo: Kahn lexicográfico para uma ordem única e reproduzível; ordem de inserção para preservar a ordenação de entrada; DFS pós-ordem para o método clássico de busca em profundidade; ou Mostrar todos para ver cada ordenação lado a lado.
  4. Clique em "Ordenar Topologicamente": A ordenação, detecção de ciclo, visualização em camadas, comprimento do caminho crítico, número total de ordenações válidas e um grafo interativo aparecerão abaixo.
  5. Explore: Pressione Play para ver cada vértice ser emitido um passo por vez. Os emblemas de grau de entrada atualizam ao vivo. Arraste qualquer nó para reorganizar o layout.

Aplicações no mundo real

Sistemas de build e compiladores

Ferramentas como make, Bazel, Gradle e npm ordenam topologicamente seus alvos de build para que cada alvo seja compilado apenas após todas as suas dependências. Um ciclo no grafo de dependência é geralmente relatado como um erro fatal — o sistema de build não consegue decidir por onde começar.

Agendamento de tarefas

Gerentes de projeto usam DAGs para capturar dependências de tarefas. A ordenação topológica fornece uma ordem de execução válida, e a visão em camadas fornece o número mínimo de rodadas sob paralelismo ilimitado. A maior cadeia é o caminho crítico que determina a duração do projeto.

Planejamento de pré-requisitos de cursos

Um catálogo de cursos universitários é um DAG: as arestas são relações de pré-requisito. Uma ordem topológica é um plano de estudos válido, e as camadas dizem aos alunos quais conjuntos de cursos eles podem fazer em paralelo durante cada semestre.

Recalculo de planilhas

Quando uma célula muda, uma planilha deve recomputar cada célula a jusante na ordem de dependência — uma ordenação topológica do DAG de dependência de células. Referências circulares (ciclos) são rejeitadas pela aplicação.

Gerenciadores de pacotes e carregadores de plugins

Apt, pip, Homebrew, Maven e inúmeros frameworks de plugins resolvem a ordem de instalação ou carregamento ordenando topologicamente seus DAGs de dependência.

Resolução de símbolos e agendamento de instruções

Compiladores usam ordenação topológica para ordenar declarações, e CPUs usam DAGs de dependência de dados para agendar instruções no buffer de reordenação sem violar perigos de dados.

Contando ordenações topológicas

Para um DAG com n vértices, o número de ordenações topológicas válidas distintas pode variar de 1 (para uma cadeia totalmente ordenada) a n! (para um grafo sem arestas). Computar a contagem exata é um problema #P-completo em geral, mas para grafos de até 16 vértices esta calculadora os enumera usando uma formulação de programação dinâmica com bitmask: f(S) = Σ f(S ∪ {v}) para todos os v ∉ S cujos predecessores estão todos em S.

Complexidade e desempenho

Perguntas frequentes

O que é uma ordenação topológica?

Uma ordenação topológica de um grafo acíclico direcionado é uma ordenação linear de seus vértices tal que cada aresta direcionada de u para v coloca u antes de v. Representa uma ordem válida para processar tarefas que respeitam suas dependências.

Qual algoritmo esta calculadora utiliza?

A calculadora executa tanto o algoritmo de Kahn quanto o DFS pós-ordem. O algoritmo de Kahn remove repetidamente um vértice com grau de entrada zero e decrementa os graus de entrada de seus sucessores. O DFS pós-ordem executa uma busca em profundidade e inverte a ordem de finalização. Ambos rodam em tempo O(|V| + |E|).

E se o meu grafo tiver um ciclo?

Um grafo com um ciclo direcionado não possui ordenação topológica. A calculadora detecta o ciclo, destaca-o em vermelho na visualização e relata o caminho exato do ciclo para que você possa ver quais arestas remover para tornar o grafo um DAG.

O que é a menor ordem topológica lexicográfica?

Quando muitas ordenações topológicas são válidas, a menor lexicograficamente é obtida sempre escolhendo o vértice alfabeticamente menor cujo grau de entrada é zero em cada etapa. O modo padrão de Kahn desta calculadora retorna esta ordenação única, que é estável e fácil de reproduzir.

O que é a visualização por camada ou nível?

A visualização por camadas agrupa vértices pelo comprimento do caminho mais longo a partir de qualquer fonte. Vértices na mesma camada não têm dependência entre si, portanto podem ser executados em paralelo. O número de camadas é igual à maior cadeia de dependência mais um e fornece o número mínimo de rodadas paralelas necessárias para terminar todas as tarefas.

Um grafo pode ter muitas ordenações topológicas válidas?

Sim. Se em qualquer etapa o algoritmo de Kahn tiver múltiplos vértices com grau de entrada zero, qualquer um deles pode ser escolhido em seguida. Esta calculadora conta o número exato de ordenações topológicas distintas para grafos de até 16 vértices.

Qual a diferença entre o algoritmo de Kahn e o DFS pós-ordem?

O de Kahn funciona de cima para baixo: ele escolhe repetidamente fontes (grau de entrada 0) e as emite primeiro. O DFS pós-ordem funciona de baixo para cima: ele termina os sumidouros primeiro e os anexa à ordem. Ambos são O(|V| + |E|) e produzem ordenações topológicas válidas, mas tipicamente diferentes. O de Kahn é mais fácil de paralelizar e de adaptar para ordenação lexicográfica; o DFS é mais fácil de combinar com outras análises baseadas em DFS, como componentes fortemente conectados.

Qual o tamanho máximo de grafo que esta ferramenta suporta?

A calculadora suporta até 80 vértices e 800 arestas. A contagem do número total de ordenações topológicas válidas é limitada a 16 vértices porque o problema é #P-completo e o espaço de estados cresce como 2ⁿ. A visualização interativa e a animação do algoritmo escalam suavemente até o tamanho total.

Leitura Adicional

Cite este conteúdo, página ou ferramenta como:

"Calculadora de Ordenação Topológica" em https://MiniWebtool.com/br// de MiniWebtool, https://MiniWebtool.com/

pela equipe miniwebtool. Atualizado: 20 de abr de 2026

Você também pode experimentar nosso Solucionador de Matemática AI GPT para resolver seus problemas de matemática através de perguntas e respostas em linguagem natural.

Ferramentas em destaque:

Calculadora de Número de ExpressãoRemover espaçosCalculadora BináriaGerador de endereços MACGerador de Letras AleatóriasGerador de Código MorseCalculadora de Desvio Padrão RelativoCalculadora de Compatibilidade AmorosaGerador de Cartelas de BingoGerador de Cores Aleatóriaspesquisa-de-endereço-MACContador de linhasCalculadora de Proporção📅 Calculadora de DatasClassificar NúmerosCalculadora de Desvio Padrão - Alta PrecisãoCalculadora de CombinaçãoConversor de Hex para BinárioFormatador de TextoCalculadora de Número de DestinoGerador de Caça-PalavrasCalculadora de Signo Solar, Lunar e Ascendente 🌞🌙✨Gerador de IMEI AleatórioCalculadora de número de anjoCalculadora de Média HarmônicaDecodificador de Código MorseCalculadora de MedianaCalculadora de cálcio corrigidaCalculadora de Dia do Ano - Que Dia do Ano é Hoje?Conversor Octal para DecimalGerador de Palavras Aleatórias em InglêsConversor de Pés e Polegadas em Centímetros📅 Calculadora de Diferença entre DatasConversor de Binário para OctalCalculadora de Variação PercentualCalculadora de 1RM (Repetição Máxima)Pesquisa de ID de Usuário do InstagramRemover Linhas Vazias do TextoConversor de kPa para psiGerador de Superpoder AleatórioConversor de Binário para HexGerador de AnagramasConversor de Octal para BinárioRemover acentos do textoExtrator de Imagem de VídeoGerador de Números da Loteriaconversor de ppm para porcentagemCalculadora de NumerologiaGerador de Endereço Falso AleatórioCalculadora de Estratégia MartingaleLista de Anos BissextosGerador de LabirintosCalculadora OctalCalculadora de bônusCalculadora de Coeficiente de VariaçãoCalculadora de Número MestreGerador de Cartas de Baralho AleatórioConversor de Tamanho de ArquivoAdicionar Números de Linha ao TextoConversor de Hexadecimal para OctalCalculadora de Número de Desejo da AlmaConversor de cm para Pés e PolegadasCalculadora de Octal para HexadecimalCalculadora de Taxa de Crescimento PercentualFerramenta Online para Remover PontuaçãoCalculadora de Números ComplexosPesquisa de ID de Usuário do FacebookCalculadora de Retorno de SaturnoPrimeiros n Dígitos do PiCalculadora de Erro PercentualCriador de Box Plot (Gráfico de Caixa)Divisor de ÁudioCalculadora de raiz quadradaCalculadora HexDivisor de ImagensGerador de Criptogramacalculadora-hba1cCalculadora de Média, Mediana e ModaConversor de BaseGerador de Personagem RPG AleatórioAnalisador de Endereço MACCalculadora de Número do NomeCalculadora de Log Base 10Gerador de Embaralhar PalavrasBuscador de EmpregosGerador de Nomes AleatóriosCalculadora de quociente e restanteConversor de Decimal para BinárioCalculadora de IdadeRandomizador de Nomes OnlineGerador de Aniversário AleatórioSelecionador de Filmes AleatórioGerador de Hora AleatóriaConversor de Binário para DecimalCalculadora de Ritmo de NataçãoGerador de Coordenadas AleatóriasCalculadora de Log (Logaritmo)Conversor Decimal para OctalCalculadora de Média GeométricaCalculadora de EntropiaCalculadora de Matriz de AdjacênciaCalculadora de Ordenação TopológicaCalculadora de Coloração de GrafosSimulador de Portas LógicasSolucionador de Mapa de Karnaugh (K-Map)Simplificador de Álgebra BooleanaCalculadora de Função de PartiçãoCalculadora de Raiz DigitalVerificador de Número de FibonacciCalculadora de Frações EgípciasCalculadora de Função de MöbiusVerificador da Conjectura de GoldbachVerificador de Primo de MersenneLocalizador de Primos GêmeosVerificador de Números AmigáveisVerificador de Número PerfeitoCalculadora de Exponenciação ModularCalculadora de Permutações com RepetiçãoCalculadora de Tamanho de EfeitoCalculadora de Risco RelativoCalculadora de Razão de ChancesCalculadora de Tabela de ContingênciaCalculadora do Teste Exato de FisherCalculadora de Correlação de Postos de SpearmanCalculadora de Distribuição BetaCalculadora de Distribuição de WeibullCalculadora de Distribuição ExponencialCalculadora de Distribuição GeométricaCalculadora de Distribuição Binomial NegativaCalculadora de Distribuição HipergeométricaCalculadora de Teste F e Distribuição FCalculadora do Teorema de BayesCalculadora de Polinômio CaracterísticoCalculadora de Potência de MatrizCalculadora de Decomposição de CholeskyCalculadora de Decomposição QRCalculadora de Diagonalização de MatrizCalculadora Regra de CramerCalculadora de Espaço ColunaCalculadora de Espaço NuloCalculadora de Ângulo Entre VetoresCalculadora de Vetor UnitárioCalculadora de Magnitude de VetorCalculadora de Produto VetorialCalculadora de Produto EscalarCalculadora de Multiplicação de MatrizesCalculadora de Matriz InversaCalculadora RREF (Forma Escalonada Reduzida)Calculadora do Método de NewtonCalculadora de Matriz JacobianaCalculadora de Integral de SuperfícieCalculadora de Integral de LinhaCalculadora de RotacionalCalculadora de DivergênciaCalculadora de Gradiente MultivariávelCalculadora de Otimização (Cálculo)Solucionador de Taxas RelacionadasCalculadora de Taxa de Variação InstantâneaCalculadora de Taxa Média de VariaçãoCalculadora de Soma de Séries InfinitasCalculadora de Teste de Convergência de SériesCalculadora de Séries de PotênciaCalculadora de Série de MaclaurinCalculadora da Regra de L'HôpitalCalculadora de Integral ImprópriaCalculadora da Regra de SimpsonCalculadora da Regra TrapezoidalCalculadora de Soma de RiemannGraficador de Curvas ParamétricasCalculadora de Superfície de RevoluçãoCalculadora de Volume de RevoluçãoCalculadora de Distância em Geometria CoordenadaCalculadora Fórmula de HeronCalculadora de Linha Tangente ao CírculoCalculadora de Bissetriz do ÂnguloCalculadora de Círculo Inscrito (Incírculo)Calculadora de Circunscrição (Circuncírculo)Calculadora de Distância do Grande CírculoCalculadora de Distância 3DCalculadora de TorusCalculadora de Tronco de ConeCalculadora de Área de Polígono IrregularCalculadora de Polígono RegularIdentificador de Seção CônicaCalculadora de HipérboleCalculadora de ParábolaCalculadora de Expansão do Teorema BinomialGerador do Triângulo de PascalCalculadora de Notação de Produto (Notação Pi)Calculadora de Notação Sigma (Somatório)Calculadora do Teorema da Raiz RacionalCalculadora da Regra dos Sinais de DescartesCalculadora de Linhas Paralelas e PerpendicularesCalculadora de Equação da RetaConversor de Forma Padrão para Forma ReduzidaCalculadora de Forma Ponto-InclinaçãoResolvedor de Sistema de Equações Não LinearesSolucionador de Equações RacionaisResolvedor de Equações LiteraisSolucionador de Equações TrigonométricasResolvedor de Equações ExponenciaisResolvedor de Equações LogarítmicasCalculadora de Equação QuárticaSolucionador de Equação CúbicaCalculadora de EstimativaConversor de Número para FraçãoGerador de Contagem SalteadaCalculadora de Taxa UnitáriaCalculadora de Teto e PisoCalculadora de Valor AbsolutoEncontrador de Padrões NuméricosGerador de Gráfico de Valor PosicionalCalculadora de Ordem das Operações (PEMDAS)Calculadora de Adição e Subtração LongaCalculadora de Multiplicação LongaGerador de Tabuada🎮 Conversor de Moeda de Jogo🎲 Calculadora de Probabilidade de Loot🎰 Calculadora de Pity Gacha⚔️ Calculadora de DPS🎮 Conversor de Sensibilidade de Jogos❄️ Calculadora de Dia de Neve🚚 Estimador de Custo de Mudança🔍 Verificador de Plágio📷 OCR / Imagem para Texto📈 Criador de Gráfico de Linha🥧 Criador de Gráfico de Pizza📊 Criador de Gráfico de Barras🔊 Gerador de Tom🖱️ Contador de CliquesBloco de Notas Online⬛ Calculadora de Proporção de Tela🌍 Calculadora de Pegada de Carbono👙 Calculadora de Tamanho de SutiãCalculadora de Tamanho de PneuCalculadora de Custo de Combustível💧 Calculadora de Ponto de Orvalho🌡️ Calculadora de Índice de Calor🌬️ Calculadora de Sensação Térmica do Vento⏰ Despertador Online⏰ Calculadora de Cartão de Ponto🕐 Conversor de Hora Militar⏱️ Calculadora de Horas⏱️ Cronômetro Online⏱️ Temporizador de Contagem Regressiva🌐 Conversor de Fuso HorárioCalculadora de CarpeteCalculadora de Muro de ContençãoCalculadora de Dimensionamento HVACCalculadora de IsolamentoCalculadora de PavimentaçãoCalculadora de VergalhãoCalculadora de MadeiraCalculadora de Metragem QuadradaCalculadora de Multiplicação CruzadaCalculadora de Resumo de Cinco NúmerosCalculadora de PercentilCalculadora de Distribuição NormalCalculadora de Valor PCalculadora de ProporçãoCalculadora de Completar o QuadradoCalculadora de ArredondamentoCalculadora de Divisão LongaCalculadora CientíficaTemporizador de Estudo PomodoroCalculadora de Algarismos SignificativosCalculadora de Nota de ProvaCalculadora de Média PonderadaCalculadora de Nota FinalCalculadora de NotasCalculadora de Frequência de RessonânciaCalculadora de ImpedânciaCalculadora de Decibéis (dB)Calculadora de Fator de PotênciaCalculadora de Constante de Tempo RCCalculadora de TransformadorCalculadora de Bitola de FioCalculadora de Timer 555Calculadora de CapacitorCalculadora de Resistores em ParaleloCalculadora de Divisor de TensãoCalculadora de Resistor para LEDConversor de Mol/Grama/PartículaCalculadora de TitulaçãoCalculadora de Ponto de EbuliçãoCalculadora de Fórmula EmpíricaCalculadora de Rendimento PercentualCalculadora de EstequiometriaBalanceador de Equações QuímicasCalculadora de DiluiçãoCalculadora de Cavalos de PotênciaCalculadora de TorqueCalculadora de Queda LivreCalculadora da Lei dos Gases IdeaisCalculadora de PressãoCalculadora de DensidadeCalculadora de Trabalho e PotênciaCalculadora de Energia PotencialCalculadora de Energia CinéticaCalculadora de Movimento de ProjétilCalculadora de MomentoCalculadora de VelocidadeCalculadora de AceleraçãoCalculadora de ForçaCalculadora de ROI de InfluenciadorCalculadora de ROASCalculadora de CTRVerificador de Nome de Usuário de Mídia SocialOtimizador de Horário de Postagem em Mídias SociaisCalculadora de ROI de Mídias SociaisCalculadora de Custos de Anúncios do FacebookCalculadora de Monetização do YouTube ShortsCalculadora de Ganhos do TwitchCalculadora de Tempo de Exibição do YouTubeConversor de Timestamp do Twitter/XEstatísticas do Canal do YouTubeCalculadora de Dinheiro do TikTokGuia de Tamanho de Imagem para Redes SociaisGerador de Fontes para InstagramContador de Caracteres Twitter/XSeletor de Comentários do YouTubeExtrator de Tags do YouTubeBaixador de Miniaturas do YouTubeEstimador de Ganhos do YouTube