Creare un grafo con il linguaggio DOT

Creare un grafo con il linguaggio DOT e Graphviz è relativamente semplice.

Cosa serve? E' sufficiente aver installato Graphviz sul PC per riprodurre i grafi o, in alternativa, disporre di un software di visualizzazione dei file in formato dot. Volendo, potrei anche creare la descrizione del grafo e visualizzarla online con i vari dot visualizer che si trovano su internet, senza installare nulla sul computer.

Come creare un grafo

Per cominciare apro un editor di testo per creare il file di testo con la descrizione del grafo.

Posso usare un editor di testo qualsiasi, ad esempio Notepad su Windows, TextEdit su Mac, Gedit su Linux, ecc.

Nel file indico la classe graph se voglio creare un grafo oppure digraph se voglio creare un digrafo, ossia un grafo con gli archi orientati.

In questo caso opto per un grafo semplice con gli archi senza un verso di percorrenza.

graph

Poi scrivo il nome che voglio date al digrafo e apro e chiudo due parentesi graffe.

graph nome { }

All'interno delle parentesi graffe posso dichiarare i nodi e gli archi del grafo.

Ad esempio, per indicare degli archi scrivo i nomi dei nodi separati dal simbolo "--" per indicare l'arco oppure "->" per indicare l'arco orientato.

graph nome {
A -- B;
B -- C;
C -- A;
}

Dopo ogni istruzione aggiungo il simbolo del punto e virgola.

Nota. E' comunque facoltativo farlo. Generalmente gli interpreti dot riescono a visualizzare i grafi anche se mancano i punti virgola alla fine di ogni istruzione.

A questo punto salvo il file sul PC con estensione .dot.

Ad esempio, salvo il file con il nome "test.dot".

Per visualizzare il grafo apro il file con un software visualizer, ad esempio KGraphViewer su Linux, oppure utilizzo un tool dot visualizer online.

In alternativa, se ho installato il software Graphviz sul PC, vado sulla riga comandi e creo il file PNG del grafo tramite il comando dot.

dot -Tpng test.dot -o test.png

In questo comando

  • -Tpng specifica il formato di output (in questo caso, PNG)
  • test.dot è il nome del file di input
  • -o test.png è il nome del file di output.

In questo caso, il comando crea il file immagine "test.png".

Dopo aver eseguito il comando, dovrei avere un nuovo file .png nella stessa directory del file .dot.

Apro il file .png per visualizzare il grafo che ho appena creato. Ecco il risultato finale.

un esempio di grafo

In questo esempio, ci sono tre nodi (A, B, C) e tre archi (da A a B, da B a C e da C a A).

E per aggiungere un nodo isolato?

Per inserire nel grafo un nodo non connesso agli altri nodi, mi basta indicare il nome del nodo all'interno del file dot.

Ad esempio, aggiungo un nodo D isolato dagli altri.

graph nome {
A -- B;
B -- C;
C -- A;
D;
}

Il risultato finale è il seguente:

il nodo D è un nodo non connesso

Questa sintassi è molto utile anche per associare degli attributi ai nodi del grafo, sia connessi che isolati, per personalizzare il loro aspetto grafico.

Come creare un digrafo

Per creare un digrafo, ossia un grafo con gli archi orientati, utilizzo la parola chiave "digraph" e il simbolo -> per indicare il verso degli archi orientati.

Ad esempio, riscrivo il file test.dot in questo modo

digraph nome {
A --> B;
B --> C;
C --> A;
}

Ora il risultato finale è un digrafo.

un esempio di digrafo

Nei digrafi gli archi sono rappresentati da una freccia che indica il verso di percorrenza.

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Il linguaggio DOT