Semplifica il tuo flusso di lavoro: cerca miniwebtool.
Aggiungi
Pagina Iniziale > Matematica > Operazioni matematiche avanzate > Calcolatore di Ordinamento Topologico
 

Calcolatore di Ordinamento Topologico

Calcola un ordinamento topologico di un grafo aciclico diretto (DAG) utilizzando l'algoritmo di Kahn o la DFS. Rileva i cicli, riporta il percorso del ciclo, crea una vista a livelli per l'esecuzione parallela, supporta l'ordinamento lessicografico più piccolo e anima ogni passaggio su un grafo interattivo.

Calcolatore di Ordinamento Topologico
Formato archi: A -> B (accetta anche , =>, :). Max 80 vertici / 800 archi.
L'algoritmo di Kahn (lessicografico) fornisce un ordine unico e riproducibile. Il DFS post-order è il classico metodo di ricerca in profondità.

Embed Calcolatore di Ordinamento Topologico Widget

Calcolatore di Ordinamento Topologico

Il Calcolatore di Ordinamento Topologico calcola una disposizione lineare dei vertici di un grafo aciclico diretto (DAG) tale che per ogni arco diretto da u a v, u preceda v. Inserisci il tuo grafo come elenco di archi o lista di adiacenza e lo strumento restituirà l'ordine topologico utilizzando l'algoritmo di Kahn o il DFS post-order, rileverà cicli (con il relativo percorso), raggrupperà i compiti in strati di esecuzione parallela, conterà il numero di ordinamenti validi e animerà ogni passaggio su un grafo interattivo.

Cos'è un ordinamento topologico?

Dato un grafo diretto G = (V, E), un ordinamento topologico è una disposizione lineare v₁, v₂, …, vₙ dei suoi vertici tale che per ogni arco diretto (u → v), u appare prima di v nella disposizione. Un ordinamento topologico esiste se e solo se il grafo non ha cicli diretti — ovvero, il grafo è un DAG. L'ordinamento è raramente unico: un grafo può avere molti ordinamenti topologici validi quando più vertici hanno grado di entrata zero contemporaneamente.

Definizione di ordine topologico
Una permutazione (v₁, v₂, …, vn) di V è topologica sse
per ogni arco (u → v) in E: posizione(u) < posizione(v)

Algoritmi utilizzati da questo calcolatore

Algoritmo di Kahn (basato su BFS, 1962)

L'algoritmo di Kahn è l'ordinamento topologico più intuitivo. In ogni fase sceglie un vertice con grado di entrata zero (nessun arco in entrata), lo aggiunge all'output e lo "rimuove" dal grafo decrementando il grado di entrata di ciascuno dei suoi successori. Quando più vertici hanno grado di entrata zero, la scelta può usare un min-heap (fornendo l'ordinamento lessicograficamente più piccolo) o una coda FIFO (fornendo l'ordine di inserimento). L'algoritmo di Kahn gira in tempo O(|V| + |E|) e funge anche da rilevatore di cicli: se qualche vertice ha ancora un grado di entrata > 0 dopo che la coda si è svuotata, il grafo contiene un ciclo.

Algoritmo di Kahn (pseudocodice)
Kahn(G):
  Q ← { v ∈ V : indeg(v) = 0 }
  L ← [ ]
  mentre Q non è vuota:
    u ← Q.pop()
    L.append(u)
    per ogni arco u → v:
      indeg(v) -= 1
      se indeg(v) = 0: Q.push(v)
  se |L| < |V|: segnala ciclo
  altrimenti: restituisci L

DFS post-order (Tarjan, 1976)

L'algoritmo DFS esegue una ricerca in profondità e, ogni volta che un vertice finisce (cioè tutti i suoi successori sono stati esplorati), viene inserito in uno stack. Invertendo lo stack alla fine si ottiene un ordinamento topologico valido. Il rilevamento dei cicli è naturale: incontrare un vertice ancora in corso (contrassegnato come GRIGIO) significa che è stato trovato un arco all'indietro, quindi il grafo non è un DAG. Il DFS post-order gira anch'esso in tempo O(|V| + |E|).

DFS post-order (pseudocodice)
DFS-Topo(G):
  per ogni vertice u in V: colore[u] ← BIANCO
  L ← stack vuoto
  per ogni vertice u in V:
    se colore[u] = BIANCO: visita(u)
  restituisci reverse(L)

visita(u):
  colore[u] ← GRIGIO
  per ogni arco u → v:
    se colore[v] = GRIGIO: segnala ciclo
    se colore[v] = BIANCO: visita(v)
  colore[u] ← NERO; L.push(u)

Strati di esecuzione parallela

Una vista stratificata di un DAG divide i suoi vertici in livelli in modo che ogni arco vada da un livello con numero inferiore a uno con numero superiore. I vertici nello stesso strato sono indipendenti l'uno dall'altro, quindi possono essere eseguiti in parallelo. Il numero di strati è pari alla lunghezza del percorso più lungo più uno: questo è il percorso critico del DAG, il numero minimo di round sequenziali necessari per completare tutte le attività anche con parallelismo illimitato. Questo calcolatore produce automaticamente la vista a strati quando l'input è un DAG.

Rilevamento dei cicli

Se il grafo contiene un ciclo diretto, non è possibile alcun ordinamento topologico. Il nostro calcolatore riporta il percorso esatto del ciclo (es. A → B → C → A) ed evidenzia gli archi del ciclo in rosso sulla visualizzazione. La rimozione di un singolo arco del ciclo è sufficiente per ripristinare l'aciclicità.

Formati di input

Elenco di archi

Scrivi ogni arco diretto come sorgente -> destinazione, separato da virgole o a capo. Varianti di freccia accettate: ->, , =>, -->, :. Puoi anche concatenare gli archi: A -> B -> C è un'abbreviazione per A->B e B->C. Le etichette dei vertici possono essere lettere, cifre, underscore, trattini e punti.

A -> B, B -> C, A -> C
C -> D
Camicia -> Cravatta -> Giacca

Lista di adiacenza

Scrivi ogni vertice, due punti e i suoi successori diretti (i vertici a cui punta). Un vertice senza successori richiede comunque la sua riga, ad esempio D:.

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

Come usare questo calcolatore

  1. Scegli un formato: Passa da elenco archi a lista adiacenza con i pulsanti radio.
  2. Inserisci il grafo: Incolla i tuoi dati o clicca su uno degli esempi rapidi (ordine vestizione, prerequisiti corsi, target build, grafo con ciclo, ecc.).
  3. Scegli un algoritmo: Kahn lessicografico per un ordine unico e riproducibile; ordine di inserimento per preservare l'ordine di input; DFS post-order per il metodo classico; o Mostra tutti per vederli affiancati.
  4. Clicca su "Ordina Topologicamente": L'ordinamento, il rilevamento cicli, la vista a strati, la lunghezza del percorso critico, il numero totale di ordinamenti validi e un grafo interattivo appariranno sotto.
  5. Esplora: Premi Play per guardare ogni vertice venire emesso un passo alla volta. I badge del grado di entrata si aggiornano in tempo reale. Trascina i nodi per riorganizzare il layout.

Applicazioni nel mondo reale

Sistemi di build e compilatori

Strumenti come make, Bazel, Gradle e npm ordinano topologicamente i loro target di build in modo che ogni target venga compilato solo dopo tutte le sue dipendenze. Un ciclo nel grafo delle dipendenze viene solitamente segnalato come errore fatale.

Pianificazione delle attività

I project manager utilizzano i DAG per catturare le dipendenze dei compiti. L'ordinamento topologico fornisce un ordine di esecuzione valido, mentre la vista a strati indica il numero minimo di round con parallelismo illimitato. La catena più lunga è il percorso critico che determina la durata del progetto.

Pianificazione dei prerequisiti dei corsi

Un catalogo di corsi universitari è un DAG: gli archi rappresentano le relazioni di prerequisito. Un ordine topologico è un piano di studi valido, e gli strati dicono agli studenti quali insiemi di corsi possono frequentare in parallelo durante ogni semestre.

Ricalcolo del foglio di calcolo

Quando una cella cambia, un foglio di calcolo deve ricalcolare ogni cella a valle nell'ordine di dipendenza — un ordinamento topologico del DAG delle dipendenze delle celle. I riferimenti circolari (cicli) vengono rifiutati dall'applicazione.

Package manager e caricatori di plugin

Apt, pip, Homebrew, Maven e innumerevoli framework di plugin risolvono l'ordine di installazione o caricamento ordinando topologicamente i loro DAG di dipendenza.

Risoluzione dei simboli e scheduling delle istruzioni

I compilatori usano l'ordinamento topologico per ordinare le dichiarazioni, e le CPU usano i DAG delle dipendenze dei dati per pianificare le istruzioni nel buffer di riordino senza violare i rischi sui dati.

Contare gli ordinamenti topologici

Per un DAG con n vertici, il numero di ordinamenti topologici validi distinti può variare da 1 (per una catena totalmente ordinata) a n! (per un grafo senza archi). Calcolare il conteggio esatto è in generale un problema #P-completo, ma per grafi fino a 16 vertici questo calcolatore li enumera utilizzando una formulazione di programmazione dinamica con bitmask: f(S) = Σ f(S ∪ {v}) su tutti i v ∉ S i cui predecessori sono tutti in S.

Complessità e prestazioni

Domande frequenti

Cos'è un ordinamento topologico?

Un ordinamento topologico di un grafo aciclico diretto è un ordinamento lineare dei suoi vertici tale che ogni arco diretto da u a v pone u prima di v. Rappresenta un ordine valido per elaborare compiti rispettando le loro dipendenze.

Quale algoritmo utilizza questo calcolatore?

Il calcolatore esegue sia l'algoritmo di Kahn che il DFS post-order. L'algoritmo di Kahn rimuove ripetutamente un vertice con grado di entrata zero e decrementa i gradi dei suoi successori. Il DFS post-order esegue una ricerca in profondità e inverte l'ordine di completamento. Entrambi girano in tempo O(|V| + |E|).

Cosa succede se il mio grafo ha un ciclo?

Un grafo con un ciclo diretto non ha ordinamento topologico. Il calcolatore rileva il ciclo, lo evidenzia in rosso e riporta il percorso esatto in modo da poter identificare quali archi rimuovere.

Qual è l'ordinamento topologico lessicograficamente più piccolo?

Quando esistono più ordinamenti validi, quello lessicograficamente più piccolo si ottiene scegliendo sempre il vertice alfabeticamente più piccolo tra quelli con grado di entrata zero. La modalità predefinita di Kahn restituisce questo ordine unico.

Cos'è la vista a strati o a livelli?

La vista a strati raggruppa i vertici in base alla lunghezza del percorso più lungo da una sorgente. I vertici nello stesso strato possono essere eseguiti in parallelo. Il numero di strati indica il numero minimo di fasi sequenziali necessarie.

Un grafo può avere molti ordinamenti topologici validi?

Sì. Se in qualsiasi fase l'algoritmo di Kahn ha più vertici con grado di entrata zero, la scelta è libera. Questo calcolatore conta il numero esatto di ordinamenti distinti per grafi fino a 16 vertici.

Qual è la differenza tra l'algoritmo di Kahn e il DFS post-order?

Kahn lavora top-down: sceglie ripetutamente le sorgenti (grado 0). Il DFS post-order lavora bottom-up: finisce prima i pozzi e li prepone all'ordine. Entrambi sono O(|V| + |E|), ma producono spesso ordini diversi. Kahn è più facile da parallelizzare; DFS è utile per altre analisi come le componenti fortemente connesse.

Qual è la dimensione massima del grafo supportata?

Supporta fino a 80 vertici e 800 archi. Il conteggio degli ordinamenti è limitato a 16 vertici perché il problema è #P-completo e lo spazio degli stati cresce come 2ⁿ. L'animazione e la visualizzazione scalano fluidamente fino alla dimensione massima.

Ulteriori letture

Cita questo contenuto, pagina o strumento come:

"Calcolatore di Ordinamento Topologico" su https://MiniWebtool.com/it/calcolatore-di-ordinamento-topologico/ di MiniWebtool, https://MiniWebtool.com/

dal team di miniwebtool. Aggiornato: 20 apr 2026

Puoi anche provare il nostro Risolutore di Matematica AI GPT per risolvere i tuoi problemi matematici attraverso domande e risposte in linguaggio naturale.

Altri strumenti correlati:

Operazioni matematiche avanzate:

Strumenti in primo piano:

Calcolatore dei numeri degli angeli📅 Calcolatore di DataCalcolatrice di Compatibilità AmorosaCalcolatore Segno Solare, Lunare e Ascendente 🌞🌙✨Convertitore da esadecimale a decimaleCalcolatore BinarioRimuovi spaziConvertitore di Piedi e Pollici in CentimetriCalcolatore di SommeGeneratore di parole casuali in ingleseGeneratore di CrucipuzzleCalcolatore EsadecimaleConvertitore di Tempo in DecimaliFormattatore di TestoGeneratore di Haiku CasualeCalcolatore di Compatibilità dei Segni LunariConvertitore da Decimale a TempoConvertitore da decimale a esadecimaleconvertitore da ppm a percentualeQual è il mio numero fortunato?Convertitore da Esadecimale a BinarioDivisore di ImmaginiCalcolatrice di NumerologiaCalcolatore per ridurre frazioniEstrattore di Immagini da VideoGeneratore di Colori CasualiPalla Magica 8Generatore di Date CasualiDivisore AudioCreatore di CruciverbaRicerca ID Utente InstagramCalcolatore del calcio correttoCalcolatore di ScalaCalcolatore del Rapporto di ProbabilitàConvertitore di Percentuale in PPMGeneratore di Citazioni CasualiCalcolatore della Media GeometricaCalcolatore del Segno LunareGeneratore di stringhe casualiInverti Testoricerca-indirizzo-MACCalcolatore del SonnoConvertitore HTML in TestoVerificatore di Nome Utente sui Social MediaAggiungi prefisso e suffisso al testoConvertitore da cm a piedi e polliciCalcolatore di Durata del TempoConvertitore da binario a esadecimaleCalcolatore del Giorno dell'Anno - Che giorno dell'anno è oggi?Generatore casuale di animaliGeneratore di oggetti casualiCalcolatore del numero di percorso di vitaCalcolatore del Numero dell'AnimaCalcolatore dei VotiRicerca ID Utente FacebookGeneratore di Gruppi CasualiGeneratore di Unisci i PuntiniOrdina NumeriCalendario del Giorno dell'AnnoCalcolatore di calcestruzzoConvertitore da Decimale a BinarioCalcolatore del Numero del NomeCalcolatore di ArrotondamentoCalcolatore di Conversione Scala ModelloCalcolatore di Differenza di ListeCalcolatore Passi in DistanzaStrumento Cifrario di CesareCalcolatore di radice quadrataEstrattore AudioCalcolatore dell'Aspettativa di Vita⏱️ Calcolatore di Ore📅 Calcolatore Differenza tra DateLista di Anni BisestiliSelettore di Film CasualeGeneratore di Personaggi RPG CasualeConvertitore in numeri romaniCalcolatore di ModuloCalcolatore da frazione a decimaleGeneratore di Orario CasualeGeneratore di Superpotere CasualeCalcolatore del Test Chi-QuadratoValidatore XMLCalcolatore dell'ArcosenoCalcolatore della Circonferenza di un EllisseRisolutore di DisequazioniCalcolatore dell'ArcotangenteGeneratore di Obbligo o Verità AleatorioCalcolatrice della Deviazione Standard RelativaGeneratore di Carte da Gioco CasualeGeneratore di Crittogramma💧 Calcolatore del Punto di RugiadaGeneratore di Modello Cono SviluppatoCalcolatore del percentile di altezzaGeneratore di Compleanni CasualiCalcolatore Ritmo Nuotoconvertitore da parole a numero di telefonoCalcolatore di combinazionePrimi n Numeri di Pi GrecoRimuovi interruzioni di rigaCalcolatore Dimensioni di Stampa e Risoluzione (DPI/PPI)Verificatore di Cammino HamiltonianoRisolutore del Commesso Viaggiatore (TSP)Risolutore di Programmazione LineareCalcolatore Inclusione-EsclusioneRisolutore di Relazioni di RicorrenzaCalcolatore di Matrice di AdiacenzaCalcolatore di Ordinamento TopologicoCalcolatore di Colorazione di GrafiSimulatore di Porte LogicheRisolutore di Mappa di Karnaugh (K-Map)Semplificatore di Algebra BooleanaCalcolatore Funzione di PartizioneCalcolatore di Radice DigitaleVerificatore di Numero di FibonacciCalcolatore Frazioni EgizieCalcolatore Funzione di MöbiusVerificatore della Congettura di GoldbachVerificatore di Primo di MersenneTrova Numeri Primi GemelliVerificatore di Numeri AmicabiliVerificatore di Numeri PerfettiCalcolatore Esponenziazione ModulareCalcolatore Permutazioni con RipetizioneCalcolatore Dimensione dell'EffettoCalcolatore Rischio RelativoCalcolatore Tabella di ContingenzaCalcolatore del Test Esatto di FisherCalcolatore di Correlazione per Ranghi di SpearmanCalcolatore Distribuzione BetaCalcolatore di Distribuzione di WeibullCalcolatore Distribuzione EsponenzialeCalcolatore Distribuzione GeometricaCalcolatore Distribuzione Binomiale NegativaCalcolatore Distribuzione IpergeometricaCalcolatore Test F e Distribuzione FCalcolatore del Teorema di BayesCalcolatore Polinomio CaratteristicoCalcolatore di Potenza di MatriceCalcolatore di Decomposizione di CholeskyCalcolatore Decomposizione QRCalcolatore di Diagonalizzazione di MatriceCalcolatore Regola di CramerCalcolatore Spazio ColonnaCalcolatore Spazio NulloCalcolatore dell'Angolo tra VettoriCalcolatore Vettore UnitarioCalcolatore di Modulo del VettoreCalcolatore del Prodotto VettorialeCalcolatore del Prodotto ScalareCalcolatore di Moltiplicazione di MatriciCalcolatore Matrice InversaCalcolatore RREF (Forma a Scalini Ridotta)Calcolatore del Metodo di NewtonCalcolatore Matrice JacobianaCalcolatore Integrale di SuperficieCalcolatore Integrale di LineaCalcolatore del RotoreCalcolatore di DivergenzaCalcolatore di Gradiente MultivariabileCalcolatore di Ottimizzazione (Calcolo)Risolutore Tassi CorrelatiCalcolatore del Tasso di Variazione IstantaneaCalcolatore del Tasso Medio di VariazioneCalcolatore Somma Serie InfiniteCalcolatore Test di Convergenza delle SerieCalcolatore di Serie di PotenzeCalcolatore della Serie di MaclaurinCalcolatore Regola di de l'HôpitalCalcolatore di Integrale ImproprioCalcolatore della Regola di SimpsonCalcolatore della Regola del TrapezioCalcolatore Somma di RiemannGraficatore di Curve ParametricheCalcolatore della Superficie di RivoluzioneCalcolatore del Volume di RivoluzioneCalcolatore Distanza Geometria CoordinateCalcolatore Formula di EroneCalcolatore della Retta Tangente al CerchioCalcolatore della Bisettrice dell'AngoloCalcolatore del Cerchio Inscritto (Incerchio)Calcolatore del Cerchio CircoscrittoCalcolatore della Distanza del Cerchio MassimoCalcolatore Distanza 3DCalcolatore del ToroCalcolatore del Tronco di ConoCalcolatore di Area del Poligono IrregolareCalcolatore di Poligono RegolareIdentificatore di Sezione ConicaCalcolatore di IperboleCalcolatore di ParabolaCalcolatore di Espansione del Teorema BinomialeGeneratore del Triangolo di PascalCalcolatore Notazione Prodotto (Notazione Pi)Calcolatore Notazione Sigma (Sommatoria)Calcolatore del Teorema delle Radici RazionaliCalcolatore della Regola dei Segni di CartesioCalcolatore di Rette Parallele e PerpendicolariCalcolatore Equazione della RettaConvertitore da Forma Standard a Forma Pendenza-IntercettaCalcolatore Forma Punto-PendenzaRisolutore di Sistema di Equazioni Non LineariRisolutore di Equazioni RazionaliRisolutore di Equazioni LetteraliRisolutore di Equazioni TrigonometricheRisolutore di Equazioni EsponenzialiRisolutore di Equazioni LogaritmicheCalcolatore Equazione di Quarto GradoRisolutore di Equazione CubicaCalcolatore di StimaConvertitore Numero in FrazioneGeneratore di Conteggio a SaltiCalcolatore Prezzo UnitarioCalcolatore Funzione Soffitto e PavimentoCalcolatore del Valore AssolutoTrova Schemi NumericiGeneratore di Tabella del Valore PosizionaleCalcolatore Ordine delle Operazioni (PEMDAS)Calcolatore di Addizione e Sottrazione in ColonnaCalcolatore di Moltiplicazione LungaGeneratore di Tavole Pitagoriche🎮 Convertitore di Valuta di Gioco🎲 Calcolatore Probabilità Loot Drop🎰 Calcolatore Pity Gacha⚔️ Calcolatore DPS🎮 Convertitore di Sensibilità dei Giochi❄️ Calcolatore Giorno di Neve🚚 Stimatore Costi Trasloco🔍 Verificatore di Plagio📷 OCR / Immagine in Testo📈 Creatore di Grafici a Linee🥧 Creatore di Grafici a Torta📊 Creatore di Grafici a Barre🔊 Generatore di Toni🖱️ Contatore di ClicBlocco Note Online⬛ Calcolatore Rapporto di Aspetto🌍 Calcolatore Impronta di Carbonio👙 Calcolatore Taglia ReggisenoCalcolatore Misura PneumaticiCalcolatore Costo Carburante🌡️ Calcolatore Indice di Calore🌬️ Calcolatore del Fattore Wind Chill⏰ Sveglia Online⏰ Calcolatore Cartellino Presenze🕐 Convertitore Orario Militare⏱️ Cronometro Online⏱️ Timer Conto alla Rovescia🌐 Convertitore di Fuso OrarioCalcolatore di MoquetteCalcolatore Muro di ContenimentoCalcolatore Dimensionamento HVACCalcolatore IsolamentoCalcolatore PavimentazioneCalcolatore ArmaturaCalcolatore LegnameCalcolatore di MetraturaCalcolatore di Moltiplicazione IncrociataCalcolatore del Riepilogo a Cinque NumeriCalcolatore di PercentileCalcolatore Distribuzione NormaleCalcolatore del Valore pCalcolatore di RapportiCalcolatore del Completamento del QuadratoCalcolatore di Divisione LungaCalcolatrice ScientificaTimer Studio PomodoroCalcolatore di Cifre SignificativeCalcolatore Punteggio TestCalcolatore di Voti PonderatiCalcolatore di Voto FinaleCalcolatore Frequenza di RisonanzaCalcolatore di ImpedenzaCalcolatore di Decibel (dB)Calcolatore del Fattore di PotenzaCalcolatore Costante di Tempo RCCalcolatrice per TrasformatoriCalcolatore Sezione CavoCalcolatore Timer 555Calcolatore di CondensatoreCalcolatore Resistenze in ParalleloCalcolatore del Partitore di TensioneCalcolatore Resistore per LEDConvertitore Mole/Grammo/ParticellaCalcolatore di TitolazioneCalcolatore del Punto di EbollizioneCalcolatore di Formula EmpiricaCalcolatore della Resa PercentualeCalcolatore di StechiometriaBilanciatore di Equazioni ChimicheCalcolatore di DiluizioneCalcolatore Cavalli VaporeCalcolatore di CoppiaCalcolatore Caduta LiberaCalcolatore della Legge dei Gas IdealiCalcolatore di PressioneCalcolatore di DensitàCalcolatore di Lavoro e PotenzaCalcolatore di Energia PotenzialeCalcolatore di Energia CineticaCalcolatore del Moto del ProiettileCalcolatore di Quantità di MotoCalcolatore di VelocitàCalcolatore di AccelerazioneCalcolatore di ForzaCalcolatore ROI InfluencerCalcolatore ROASCalcolatore CTROttimizzatore Orari di Pubblicazione sui Social MediaCalcolatore ROI Social MediaCalcolatore Costi Pubblicità FacebookCalcolatore di Monetizzazione YouTube ShortsCalcolatore di Guadagni TwitchCalcolatore Tempo di Visualizzazione YouTubeConvertitore di Timestamp Twitter/XStatistiche del Canale YouTubeCalcolatore Guadagni TikTokGuida alle Dimensioni Immagini Social MediaGeneratore di Font per InstagramContatore Caratteri Twitter/XSelettore di Commenti YouTubeEstrattore di tag YouTubeScaricatore di Miniature YouTubeCalcolatore Guadagni YouTube