L'ultima struttura di dati che studeremo in questa lezione privata � i Graphs. I Graphs sono simili agli Trees salvo che, non hanno altretante limitazioni. Nella lezione privata precedente, abbiamo visto che ogni albero ha un nodo della radice e tutti i altri nodi nell'albero sono bambini di un nodo perticular. Inoltre abbiamo visto che i nodi possono avere molti bambini ma soltanto un genitore. Quando ci distendiamo queste limitazioni, otteniamo la struttura di dati del Graph. La rappresentazione logica di un Graph tipico ha potuto osservare qualcosa come la figura indicata qui sotto:
Notare che il nostro Graph non ha alcun nodo della radice come la struttura di dati dell'albero. Invece, tutto il nodo pu� essere collegato con qualunque altro nodo nel Graph. I nodi non hanno alcun rapporto libero del genitore-bambino come abbiamo visto nell'albero. Invece i nodi sono denominati come vicini se sono collegati da un bordo. Per esempio, il nodo A qui sopra ha tre vicini: B, C e D.
Non � duro immaginare come la struttura di dati del Graph potrebbe essere utile per rappresentare i dati. Forse ciascuno dei nodi qui sopra potrebbe rappresentare una citt� ed i bordi che collegano i nodi potrebbero rappresentare le strade. O potremmo usare un Graph per rappresentare una rete di calcolatore in cui i nodi sono stazioni di lavoro ed i bordi sono i collegamenti di rete. I Graphs hanno tante applicazioni nell'informatica e nella matematica che parecchie procedure sono state scritte per realizzare i funzionamenti standard del Graph come la ricerca del Graph ed individuazione dello Shortest-Path fra i nodi di un Graph.
Ora che avete un'idea di base della rappresentazione logica dei Graphs, diamo un'occhiata a one-way che i Graphs sono rappresentati comunemente in calcolatori. La rappresentazione � denominata una tabella di adiacenza ed usa l'allineamento bidimensionale per memorizzare le informazioni sui nodi del Graph. La tabella di adiacenza per il nostro Graph � data sotto.
|