Semplifica il tuo flusso di lavoro: cerca miniwebtool.
Aggiungi
Strumenti correlati
Calcolatore di Matrice di AdiacenzaCalcolatore del Percorso più Breve di DijkstraCalcolatore di Colorazione di GrafiValidatore di Sequenza di Gradi di GrafoVerificatore di Cammino HamiltonianoCalcolatore dell'Albero Ricoprente MinimoCalcolatore di Flusso in Rete (Flusso Massimo)Verificatore di Grafo PlanareRisolutore del Problema del Matrimonio StabileCalcolatore di Numeri di Stirling
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.

Operazioni matematiche avanzate:

Strumenti in primo piano:

Calcolatore dei numeri degli angeli📅 Calcolatore di DataCalcolatrice di Compatibilità AmorosaCalcolatore Segno Solare, Lunare e Ascendente 🌞🌙✨Calcolatore di SommeCalcolatore di Compatibilità dei Segni LunariGeneratore di parole casuali in ingleseGeneratore di Carte da Gioco CasualeConvertitore di Piedi e Pollici in CentimetriRimuovi spaziEstrattore di Immagini da VideoQual è il mio numero fortunato?Convertitore di Tempo in DecimaliFormattatore di TestoConvertitore da esadecimale a decimaleRicerca ID Utente FacebookRicerca ID Utente InstagramCalcolatore EsadecimaleCalcolatore del Giorno dell'Anno - Che giorno dell'anno è oggi?Generatore di CrucipuzzleGeneratore di Citazioni CasualiCalcolatore del numero di percorso di vitaGeneratore di anagrammi⏱️ Calcolatore di OreCalcolatore per ridurre frazioniGeneratore di Orario CasualePalla Magica 8Selettore di Film CasualeVerificatore di Nome Utente sui Social MediaGeneratore di Obbligo o Verità AleatorioCalcolatore del Numero del NomeInverti TestoCalcolatore del Numero dell'AnimaGeneratore di Date CasualiGeneratore casuale di animaliGeneratore di oggetti casualiConvertitore Numero in FrazioneCalcolatore di ScalaConvertitore da cm a piedi e polliciGeneratore di stringhe casualiEstrattore Audioconvertitore da ppm a percentualeRimuovi linee vuote da un testoCalendario del Giorno dell'AnnoSegnapunti TennisConvertitore di Percentuale in PPMGeneratore di Personaggi RPG Casualericerca-indirizzo-MACDivisore AudioGeneratore di Colori CasualiCalcolatore del percentile di altezzaCalendario di luna nuova e luna pienaCompressore VideoUnisci VideoCalcolatore di calcestruzzoCalcolatore Posizione del SoleConvertitore da Decimale a TempoLista di Anni BisestiliMiglioratore di ImmaginiCalcolatore di Durata del TempoDivisore di ImmaginiGeneratore di Unisci i PuntiniOrdina NumeriConvertitore di Frequenza e Lunghezza d'OndaConvertitore di potenzaConvertitore FPSConvertitore da Esadecimale a BinarioCalcolatore del calcio correttoCalcolatore del Coefficiente di VariazioneCalcolatore EBITDACalcolatore del Test Chi-QuadratoCalcolatore dell'Aspettativa di VitaCalcolatore di notazioni scientificheCalcolatrice di NumerologiaConvertitore HTML in TestoGeneratore di Numero Decimale CasualeCalcolatrice della Deviazione Standard RelativaCalcolatore BinarioCalcolatore del Ritorno di SaturnoCalcolatore Dimensioni di Stampa e Risoluzione (DPI/PPI)Calcolatore di Log in Base 10🔊 Generatore di ToniCalcolatore della Circonferenza di un EllisseGeneratore di IMEI CasualeCalcolatore della TangenteCalcolatore Ritmo NuotoConvertitore da decimale a esadecimaleStatistiche del Canale YouTubeValidatore XMLCalcolatore di Differenza di ListeCalcolatore del Numero della PersonalitàCalcolatore tempo di raffreddamento birraContatore di lineaConvertitore di AngoliGeneratore di Persona Utente Casuale🔍 Verificatore di PlagioAggiungi o Sostituisci Audio nel VideoCalcolatore del Segno di VenereCreatore di CruciverbaDivisore videoGeneratore di Compleanni CasualiCalcolatore della Media GeometricaCalcolatore di ArrotondamentoConfronta due stringheRuota VideoCalcolatore dell'Arcocoseno (Coseno Inverso)Generatore di CrittogrammaGeneratore di Lettera Casualegeneratore-di-testo-capovoltoCalcolatore CAGRCalcolatore da frazione a decimaleCalcolatore di diminuzione di percentualeConvertitore di VelocitàCalcolatore del cerchioCalcolatore di Probabilità dei Dadi👙 Calcolatore Taglia ReggisenoConvertitore di Velocità di Trasferimento DatiGeneratore di Argomenti di Dibattito CasualiStrumento Cifrario di VigenèreStrumento online per rimuovere la punteggiaturaCalcolatore dell'ArcotangenteCalcolatore delle frazioni equivalentiCalcolatore di Comparazione di FrazioniAggiungi prefisso e suffisso al testoCalcolatore di Guadagni TwitchConvertitore Misura AnelloCalcolatore di alba e tramontoGeneratore di Superpotere CasualeRimozione Caratteri InvisibiliAnalizzatore di Frequenza delle ParoleCalcolatrice del Numero d'EspressioneCalcolatore di Decibel (dB)Calcolatrice del giorno della settimana di nascitaGeneratore di Coordinate Casuali🌡️ Calcolatore Indice di CaloreCalcolatore Lunghezza AntennaConvertitore in numeri romaniGeneratore di LabirintiCalcolatore dell'Area di un EllisseCalcolatore della Distanza di VoloCalendario di Mercurio RetrogradoGeneratore di Gruppi CasualiRandomizzatore di listaCalcolatore dello scarto interquartileCalcolatore di Conversione Scala ModelloCalcolatore di Velocità di Ciclismo🖱️ Contatore di ClicContatore di Token AICalcolatore del SonnoCalcolatore della Congettura di CollatzGeneratore di Carte di Credito CasualeGeneratore di Morse CodeCalcolatore di VelocitàConvertitore da binario a ottaleConvertitore di Unità di CucinaConvertitore Taglie di AbbigliamentoGeneratore di indirizzi MACCalcolatore del Giorno della SettimanaCalcolatore dell'Errore PercentualeCalcolatore di anni caniniCalcolatore di Area del Poligono IrregolareCalcolatore Handicap GolfCalcolatore Proporzioni RicetteCalcolatore Resistore per LEDConvertitore di dimensioni del fileEspansore di Frasi AIGeneratore di frequenza sonora casualeGeneratore di Nonogrammi (Picross)Generatore di Quadrato MagicoAggiungi Testo all'ImmagineCalcolatore del Numero MaestroCalcolatore di Filo per Punto CroceCalcolatore di radice quadrataConvertitore di piedi in metriGeneratore di Emoji CasualeRegola Velocità VideoCalcolatore del deficit caloricoCalcolatore di Inflazione USCalcolatore di pHCalcolatore Guadagni YouTubeCalcolatore Sottorete IPGeneratore di Schemi di ColoriGeneratore di Testo BarratoVerificatore di Robustezza della PasswordAggiungi Punteggiatura AIAnalizzatore Avanzato di Compatibilità ZodiacaleCalcolatore del Consumo di AcquaCalcolatore del Numero del DestinoCalcolatore del Rapporto BUN a CreatininaCalcolatore del segno di mercurioCalcolatore di Addizione e Sottrazione in ColonnaCalcolatore di Pendenza e GradoCalcolatore di piastrelleCalcolatore Formula di EroneRicerca Citazioni (Inglese)convertitore da parole a numero di telefonoConvertitore di Frazione in PercentualeGeneratore di Indirizzi IP CasualiInverti VideoSemplificatore di Algebra BooleanaCalcolatore Strike Rate CricketCalcolatore Net Run RateCalcolatore Rapporto K/DCalcolatore Rating EloCalcolatore del Recupero della Frequenza CardiacaCalcolatore del tempo di escursioneCalcolatore del Ritmo di CanottaggioCalcolatore Age-Grading CorsaCalcolatore FTP e zone di potenzaCalcolatore Beep TestCalcolatore punteggio ACFTCalcolatore Wilks & DOTSCalcolatore Offset RuotaRicerca Indice di Carico e Indice di Velocità PneumaticiCalcolatore del Costo per MiglioCalcolatore di Riscatto del LeasingCalcolatore Miscela OttaniCalcolatore Miscela Olio 2 TempiCalcolatore Cilindrata MotoreCalcolatore Ingombro Divano PortaCalcolatore di Cataste di LegnaCalcolatore CADR Purificatore AriaCalcolatore Dimensione DeumidificatoreCalcolatore Dimensione Ventilatore da SoffittoCalcolatore Dimensioni TendeCalcolatore Dimensione TappetoCalcolatore Altezza per Appendere QuadriCalcolatore Altezza di Montaggio TVCalcolatore Dimensioni TVCalcolatore Volume e Telo per LaghettoCalcolatore Sale PiscinaCalcolatore Volume PiscinaCalcolatore Dimensione ScaldabagnoCalcolatore di Resina EpossidicaCalcolatore Spaziatura BalaustriCalcolatore di Battiscopa e ModanatureCalcolatore di RivestimentoCalcolatore impregnante per deckCalcolatore Semi per PratoCalcolatore di Zolle ErboseCalcolatore AsfaltoCalcolatore di Iarde CubeCalcolatore Riempimento TuboCalcolatore di Condensatori in Serie e ParalleloCalcolatore di Reattanza InduttivaCalcolatore di Illuminazione della StanzaCalcolatore da Lux a LumenConvertitore da Lumen a WattCalcolatore Dimensione GeneratoreConvertitore da mAh a WhCalcolatore di Potenza TrifaseCalcolatore kVACalcolatore da Ampere a WattCalcolatore da Watt ad AmpereCalcolatore Resistenze in SerieCalcolatore di AttritoCalcolatore del Piano InclinatoCalcolatore del Vantaggio MeccanicoCalcolatore della Velocità del SuonoCalcolatore della Velocità dell'OndaCalcolatore di galleggiabilitàCalcolatore di Velocità TerminaleCalcolatore della Lunghezza d'Onda di de BroglieCalcolatore di Energia del FotoneCalcolatore E=mc²Calcolatore di Dilatazione del TempoCalcolatore della Terza Legge di KepleroCalcolatore della Velocità di FugaCalcolatore della Forza GravitazionaleCalcolatore della Legge di Beer-LambertCalcolatore dell'Equazione di NernstCalcolatore della Pressione OsmoticaCalcolatore di Innalzamento del Punto di EbollizioneCalcolatore di Abbassamento del Punto di CongelamentoCalcolatore di Composizione PercentualeCalcolatore di NormalitàCalcolatore di MolalitàConvertitore da pKa a KaCalcolatore di Henderson-HasselbalchCalcolatore della Resa TeoricaCalcolatore del Reagente LimitanteCalcolatore di Configurazione ElettronicaTavola Periodica InterattivaGeneratore di Piani di Lezione con IAGeneratore di Quiz IAGeneratore di Citazioni (APA/MLA/Chicago)Calcolatore Percentuale di PresenzeAP Score CalculatorCalcolatore Punteggio ACTCalcolatore Punteggio SATConvertitore da Percentuale a CGPAConvertitore da CGPA a PercentualeCorrettore Voti Facile (EZ Grader)Calcolatore del Costo di Crescere un FiglioCalcolatore di Assunzione di Latte per NeonatiCalcolatore Taglia PannoliniGeneratore di Nomi per BambiniPredittore del Colore degli Occhi del BambinoCalcolatore del Percentile BMI per BambiniCalcolatore Altezza Futura del BambinoCalcolatore del Tempo di Raddoppiamento dell'hCGCalcolatore della Data Prevista del Parto FIVETCalcolatore di ImpiantoPredittore Cinese del Sesso del BebèFormattatore di Date ISO 8601Convertitore Data GiulianaNap CalculatorCalcolatore delle Fasi LunariOrologio MondialeConvertitore da Data a Numeri RomaniConto alla Rovescia per la PensioneCalcolatore di SobrietàCalcolatore di Mezzo CompleannoCalcolatore AnniversarioCalcolatore Numero della SettimanaCalcolatore di Ripartizione delle ManceCalcolatore ROI Email MarketingCalcolatore del Costo Per LeadCalcolatore del Capitale Circolante