Ordinamento topologico

Leggiamo il grafo diretto e aciclico scritto nel file graph3.gml:

g3 = read.graph(file="graph3.gml", format="gml")

Visualizziamo il grafo:

coords3 = layout.fruchterman.reingold(g3)
plot(g3, layout=coords3, vertex.size=5, vertex.label.dist=0.5) 

Verifichiamo che il grafo è un DAG:

is.dag(g3)

Calcoliamo un ordinamento topologico dei nodi. visualizziamo l'ordinamento (anche con i nomi dei nodi):

s = topological.sort(g3)
s
V(g3)[s]$label

Visualizzate in modo interattivo il grafo e allineate i nodi da sinistra a destra secondo l'ordinamento topologico. Verificare quindi che tutti gli archi vanno effettivamente da sinistra a destra:

tkplot(g3, layout=coords3, vertex.size=10, vertex.label.dist=0.5)