Un grafico misto è un grafico che può avere bordi sia diretti che non diretti. Il suo grafico non orientato sottostante viene ottenuto dimenticando gli orientamenti dei bordi diretti e nell'altra direzione si ottiene un orientamento di un grafico misto assegnando una direzione a ciascun bordo non orientato. Un insieme di bordi forma un ciclo in un grafico misto se può essere orientato per formare un ciclo diretto. Un grafico misto è aciclico se e solo se non ha cicli.
Questo è tutto standard e ci sono molti articoli pubblicati che menzionano grafici misti aciclici. Pertanto, è necessario conoscere il seguente algoritmo per il test di aciclicità di grafici misti:
Ripeti i seguenti passi:
- Rimuovere qualsiasi vertice che non abbia bordi diretti in entrata e bordi non indirizzati incidenti, poiché non può far parte di alcun ciclo.
- Se un vertice non ha bordi diretti in entrata ma ha esattamente un bordo non diretto incidente, allora ogni ciclo che usa il bordo non diretto deve entrare in quel bordo. Sostituire il bordo non diretto con un bordo diretto in entrata.
Arrestare quando non è possibile eseguire più passaggi. Se il risultato è un grafico vuoto, il grafico originale deve essere necessariamente aciclico. Altrimenti, partendo da qualsiasi vertice che rimane, si può tornare indietro attraverso il grafico, ad ogni passo seguendo indietro attraverso un bordo in arrivo o seguendo un bordo non diretto che non è quello usato per raggiungere il vertice corrente, fino a vedere un vertice ripetuto. La sequenza dei bordi seguita tra la prima e la seconda ripetizione di questo vertice (in ordine inverso) forma un ciclo nel grafico misto.
L'articolo di Wikipedia sui grafici misti menziona i grafici misti aciclici ma non menziona come testarli, quindi vorrei aggiungere qualcosa su questo algoritmo, ma per questo ho bisogno di un riferimento pubblicato. Qualcuno può dirmi dove appare (o qualsiasi altro algoritmo per testare l'aciclicità) in letteratura?