Simplifique seu fluxo de trabalho: Pesquise miniwebtool.
Adicionar
Ferramentas relacionadas
Calculadora de Matriz de AdjacênciaCalculadora de Caminho Mais Curto de DijkstraCalculadora de Coloração de GrafosValidador de Sequência de Graus de GrafoVerificador de Caminho HamiltonianoCalculadora de Árvore Geradora MínimaCalculadora de Fluxo em Rede (Fluxo Máximo)Verificador de Grafo PlanarSolucionador do Problema do Casamento EstávelCalculadora de Números de Stirling
Página Inicial > Matemática > Operações matemáticas avançadas > 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/calculadora-de-ordenacao-topologica/ 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.

Operações matemáticas avançadas:

Ferramentas em destaque:

Pesquisa de ID de Usuário do InstagramRemover espaçosGerador de Cartão de Crédito AleatórioGerador de Cartelas de BingoCalculadora de Número de DestinoGerador de endereços MACGerador de Código MorseGerador de IMEI AleatórioCalculadora de Signo Solar, Lunar e Ascendente 🌞🌙✨Gerador de Letras AleatóriasCalculadora de Número de Expressão📅 Calculadora de DatasGerador de Cores AleatóriasCalculadora de ProporçãoCalculadora de 1RM (Repetição Máxima)Contador de linhasFormatador de TextoCalculadora de Compatibilidade Amorosapesquisa-de-endereço-MACGerador de Superpoder AleatórioCalculadora de número de anjoGerador de Cartas de Baralho AleatórioCalculadora de Combinação🖱️ Contador de CliquesRemover Linhas Vazias do TextoCalculadora de Dia do Ano - Que Dia do Ano é Hoje?Calculadora de Variação PercentualClassificar NúmerosCalculadora de NumerologiaFerramenta Online para Remover PontuaçãoDivisor de ÁudioGerador de Caça-PalavrasCalculadora de Desvio Padrão RelativoCalculadora de cálcio corrigidaEstatísticas do Canal do YouTubeCalculadora BináriaCalculadora de MedianaGerador de AnagramasCalculadora de Número MestreGerador de Números da LoteriaPesquisa de ID de Usuário do FacebookConversor de Hex para BinárioConversor de kPa para psiRemovedor de Caracteres InvisíveisCalculadora de Monetização do YouTube ShortsExtrator de Imagem de VídeoGerador de Palavras Aleatórias em InglêsGerador de Texto Pequeno ⁽ᶜᵒᵖʸ ⁿ ᵖᵃˢᵗᵉ⁾Randomizador de ListasRemover acentos do textoConversor de Tamanho de ArquivoLista de Anos BissextosGerador de Coordenadas AleatóriasAdicionar Quebras de LinhaConversor de FPSGerador de Endereço IP Aleatórioconversor de ppm para porcentagemGerador de Embaralhar Palavrascalculadora-hba1cCalculadora de Retorno de SaturnoCalculadora de Taxa de Crescimento PercentualConversor de Binário para HexCalculadora de reduzir fraçõesCalculadora de Tempo de FalaDecodificador de Código MorseConversor de cm para Pés e PolegadasGerador de País AleatórioCalculadora de Estratégia MartingaleGerador de Personagem RPG AleatórioReverter VídeoCalculadora de bônusConversor Octal para DecimalGerador de Hash SHA256Calculadora de Desvio Padrão - Alta PrecisãoCalculadora de Número do Caminho da VidaCalculadora de EscadaCalculadora de Ingestão de ProteínaCalculadora de Número de Desejo da AlmaGerador de Hora AleatóriaCalculadora de Ritmo de CorridaCalculadora de Tamanho de Impressão e Resolução (DPI/PPI)Gerador de CriptogramaCalculadora de Posição do SolRandomizador de Linhas de Texto de EntradaAnalisador de Endereço MACCalculadora de IdadeGerador de DegradêGerador de Endereço Falso AleatórioGerador de Nomes AleatóriosCalculadora de Dosagem de Medicamento👙 Calculadora de Tamanho de SutiãCalculadora de Número de PersonalidadeConversor de Fração para PercentualCalculadora de Distribuição de Poissonconversor de palavra para número de telefoneBaixador de Miniaturas do YouTubeCalculadora de Torque de ParafusoGerador de Aniversário AleatórioGerador de Chaves de Torneio AleatórioSimulador de Portas LógicasRemover Números de Linha do TextoSelecionador de Filmes AleatórioGerador de Grupos AleatóriosCalculadora de Coeficiente de Variação📅 Calculadora de Diferença entre DatasCalculadora de Média Geométrica⬛ Calculadora de Proporção de TelaValidador de XMLBola Mágica 8Extrator de Números de TelefoneCalculadora de Equação da RetaConversor de Porcentagem para PPM⏱️ Cronômetro OnlineGerador de Sequência AleatóriaCalculadora de Percentil de Crescimento do BebêCalculadora de ÁreaRandomizador de Nomes OnlineConversor de Hexadecimal para OctalExtrator de Tags do YouTube🔊 Gerador de TomCalculadora de Log (Logaritmo)Calculadora de raiz quadradaCompactador de HTML OnlineGerador de PIN AleatórioCalculadora de Área de Polígono IrregularCalculadora de Custo de ImpressãoCalculadora de Ganhos do TwitchCalculadora de Peso de AçoConversor Decimal para OctalSimplificador de FraçõesCalculadora de Média - Alta PrecisãoConversor de Octal para BinárioConversor de Códigos de Cor (Todos os Formatos)Gerador de Texto InvisívelCalculadora de Número de DígitosCalculadora de Aumento de Porcentagem🎲 Calculadora de Probabilidade de LootCalculadora WHtRConversor de psi para kPaQual é o meu Número da Sorte?🔍 Verificador de PlágioExtrator de URLQual é o meu Signo Chinês?Simulador de Soroban Ábaco JaponêsCalculadora ANOVACalculadora de ChurrascoCalculadora de Divisão LongaCalculadora de Área SuperficialCalculadora de Média, Mediana e ModaCompressor de VídeoRandomizador de NúmerosVerificador de Idade de DomínioVerificador de Nome de Usuário de Mídia SocialCalculadora de Frações ComparadasCalculadora de Tempo de LeituraCalculadora HexConversor de Binário para OctalConversor de Código Binário para GrayGerador de Data AleatóriaRelógio MundialCalculadora de NPS (Net Promoter Score)Calculadora de RetângulosCalculadora de tempo de dobraGirar VídeoSeletor de Comentários do YouTubeVerificador de Número Par ou ÍmparBloco de Notas OnlineCalculadora de ComissãoCalculadora de Erro PercentualCalculadora de FraçõesCalculadora do signo de mercúrioDivisor de ImagensEstimador de Ganhos do YouTubeGerador de Esboço de Artigo com IAGerador de Frases Aleatórias em InglêsGerador de Ligue os PontosGerador de Texto TachadoInverter TextoLançador de MoedaVerificador de Contraste de Cores⏰ Calculadora de Cartão de PontoCalculadora de Ponto de EbuliçãoCalculadora de redução de porcentagemCalculadora de Tempo de Exibição do YouTubeConversor de endereço IP para binárioConversor de Pés e Polegadas em CentímetrosConversor de Tamanhos de SapatoCriador de Palavras CruzadasGerador de LabirintosGerador de Persona de Usuário AleatórioGerador de SenhasCalculadora BSACalculadora de Cilindrada do MotorCalculadora de CoberturaCalculadora de kVACalculadora de Média HarmônicaCalculadora de Risco de RuínaCalculadora de Ritmo de NataçãoCalculadora de Signo LunarCalculadora de Tamanho de EfeitoCalculadora de Pontuação do ACFTCalculadora Wilks & DOTSCalculadora de Offset de RodaConsulta de Índice de Carga e Classificação de Velocidade do PneuCalculadora de Custo por MilhaCalculadora de Compra de LeasingCalculadora de Mistura de OctanagemCalculadora de Mistura de Óleo 2 TemposCalculadora de Sofá na PortaCalculadora de Cordas de LenhaCalculadora de CADR de Purificador de ArCalculadora de Tamanho de DesumidificadorCalculadora de Tamanho de Ventilador de TetoCalculadora de Tamanho de CortinaCalculadora de Tamanho de TapeteCalculadora de Altura para Pendurar QuadrosCalculadora de Altura de Instalação de TVCalculadora de Tamanho de TVCalculadora de Volume e Lona de LagoCalculadora de Sal para PiscinaCalculadora de Volume de PiscinaCalculadora de Tamanho de Aquecedor de ÁguaCalculadora de Resina EpóxiCalculadora de Espaçamento de BalaústresCalculadora de Rodapé e AcabamentoCalculadora de RevestimentoCalculadora de Verniz para DeckCalculadora de Sementes de GramaCalculadora de GramaCalculadora de AsfaltoCalculadora de Jardas CúbicasCalculadora de Comprimento de AntenaCalculadora de Preenchimento de ConduíteCalculadora de Capacitores em Série e ParaleloCalculadora de Reatância IndutivaCalculadora de Iluminação de AmbientesCalculadora de Lux para LumensConversor de Lumens para WattsCalculadora de Tamanho de GeradorConversor de mAh para WhCalculadora de Potência TrifásicaCalculadora de Amperes para WattsCalculadora de Watts para AmpèresCalculadora de Resistores em SérieCalculadora de AtritoCalculadora de Plano InclinadoCalculadora de Vantagem MecânicaCalculadora de Velocidade do SomCalculadora de Velocidade da OndaCalculadora de EmpuxoCalculadora de Velocidade TerminalCalculadora de Comprimento de Onda de de BroglieCalculadora de Energia do FótonCalculadora E=mc²Calculadora de Dilatação do TempoCalculadora da Terceira Lei de KeplerCalculadora de Velocidade de EscapeCalculadora de Força GravitacionalCalculadora da Lei de Beer-LambertCalculadora da Equação de NernstCalculadora de Pressão OsmóticaCalculadora de Elevação do Ponto de EbuliçãoCalculadora de Depressão do Ponto de CongelamentoCalculadora de Composição PercentualCalculadora de NormalidadeCalculadora de MolalidadeConversor de pKa para KaCalculadora de Henderson-HasselbalchCalculadora de Rendimento TeóricoCalculadora de Reagente LimitanteCalculadora de Configuração EletrônicaTabela Periódica InterativaGerador de Plano de Aula com IAGerador de Quiz com IAGerador de Citações (APA/MLA/Chicago)Calculadora de Porcentagem de PresençaCalculadora de Pontuação APCalculadora de Pontuação ACTCalculadora de Pontuação do SATConversor de Porcentagem para CGPAConversor de CGPA para PorcentagemCorretor de Provas Fácil (EZ Grader)Calculadora do Custo de Criar um FilhoCalculadora de Consumo de Leite do BebêCalculadora de Tamanho de FraldasGerador de Nomes de BebêPreditor de Cor dos Olhos do BebêCalculadora de Percentil de IMC InfantilPreditor de Altura InfantilCalculadora de Tempo de Duplicação do hCGCalculadora de Data de Parto FIVCalculadora de ImplantaçãoPreditor Chinês de Sexo do BebêFormatador de Data ISO 8601Conversor de Data JulianaCalculadora de CochiloMoon Phase CalculatorCalculadora de Nascer e Pôr do SolConversor de Data para Números RomanosContagem Regressiva para AposentadoriaCalculadora de SobriedadeCalculadora de Meio AniversárioCalculadora de AniversárioCalculadora de Número da SemanaCalculadora de Divisão de GorjetasCalculadora de ROI de Email MarketingCalculadora de Custo por LeadCalculadora de Capital de Giro