Creare un grafo di scomposizione ad albero è un procedimento relativamente semplice, ma richiede qualche passo preliminare.
Il primo passo consiste nell’individuare un “ordine di eliminazione” dei nodi del grafo. Un ordine di eliminazione è una sequenza di nodi del grafo tale che, per ogni nodo, tutti i suoi discendenti nell’ordine vengono eliminati prima di lui. Un esempio di ordine di eliminazione è l’ordine topologico in un grafo aciclico, ma in generale l’ordine di eliminazione non è univoco e può essere scelto a piacere.
Una volta scelto l’ordine di eliminazione, si può procedere alla costruzione del grafo di scomposizione ad albero. Inizialmente, il grafo di scomposizione ad albero ha un solo nodo, che corrisponde all’insieme vuoto di nodi del grafo originale. Ad ogni passo dell’ordine di eliminazione, si può aggiungere un nuovo nodo all’albero e un arco che lo collega ad uno dei nodi già presenti, indicando l’inclusione degli insiemi di nodi rappresentati dai due nodi.
Per individuare il nodo già presente al quale collegare il nuovo nodo, si può utilizzare una tecnica chiamata “decomposizione minimale”. In pratica, si cerca di trovare il più piccolo sottoinsieme di nodi del grafo originale che contiene il nodo da aggiungere e gli eventuali nodi già aggiunti all’albero. Questo sottoinsieme diventa il nuovo nodo dell’albero, mentre il nodo già presente a cui si connette diventa il “padre” del nuovo nodo.
Ad esempio, consideriamo il seguente grafo:
A
/ \
B C
/ \ \
D E F
Un possibile ordine di eliminazione è B,D,E,C,F,A. Il grafo di scomposizione ad albero corrispondente potrebbe essere il seguente:
{}
|
{B,D,E}
|
{B,D,E,C}
|
{B,D,E,C,F}
|
{A,B,D,E,C,F}
In questo caso, la decomposizione minimale viene ottenuta nel seguente modo:
– per B, si prende direttamente {B}
– per D, si prende {B,D}
– per E, si prende {B,D,E}
– per C, si prende {C,F}, poiché questo è il più piccolo insieme che contiene C e F
– per F, si prende {C,F}
– per A, si prende {A,B,D,E,C,F}
Il grafo di scomposizione ad albero è un utile strumento per risolvere problemi su grafi. Ad esempio, se si vuole trovare un insieme di nodi che indipendentemente copra tutti gli archi del grafo, si può utilizzare il grafo di scomposizione ad albero per individuare un sottoinsieme minimale di nodi dell’albero corrispondente a un insieme indipendente del grafo originale. In generale, la struttura dell’albero può fornire informazioni utili anche per risolvere altri problemi, come la colorazione dei nodi, la ricerca del cammino più breve, la ricerca di cicli, ecc.
In conclusione, creare un grafo di scomposizione ad albero richiede solo poche semplici operazioni ma aiuta a comprendere meglio la struttura del grafo originale e a risolvere i problemi ad esso associati. È un’abilità essenziale per chiunque lavori con grafi, dall’informatica alla matematica applicata.