Prof. Cerulli – Dott.ssa Gentili Lezioni di Ricerca Operativa Corso di Laurea in Informatica ed Informatica Applicata Università di Salerno Lezione n° 16: 5-6 Maggio 2009 Teoria dei grafi: definizioni di base Problema dell’albero ricoprente a costo minimo Anno accademico 2008/2009 Prof. Cerulli – Dott.ssa Gentili
Teoria dei Grafi Concetti fondamentali I grafi sono un mezzo per rappresentare relazioni binarie Ad esempio: due città connesse da una strada due calcolatori connessi in una rete telematica due persone legate da una relazione di parentela (come, padre-figlio) due persone che condividono una stanza il collegamento tra due componenti elettronici un’operazione che deve essere eseguita da una certa macchina ...
I grafi possono essere usati come strumento per modellare in maniera schematica un vastissimo numero di problemi decisionali. Ad esempio: determinare il percorso più breve che connette due città determinare come connettere nella maniera più economica (più efficiente) un insieme di calcolatori in una rete telematica assegnare un insieme di operazioni ad un insieme di macchine determinare il percorso più conveniente da far percorrere ad una flotta di veicoli commerciali per effettuare delle consegne e quindi rientrare al deposito ...
Definizioni fondamentali Grafo non orientato Un grafo non orientato G=(V,E) è dato da una coppia di insiemi finiti: V={v1,...,vn} l’insieme degli n Nodi di G E={e1,..,em}ÍVxV l’insieme degli m Archi non orientati di G Ogni arco non orientato di G corrisponde ad una coppia non ordinata di nodi di G ek=(vi,vj). La presenza di un arco tra una coppia di nodi indica una relazione tra i nodi stessi.
Un esempio: G=(V,E)
Definizioni di base: un arco (v,v) è detto loop due nodi u,vÎV sono detti adiacenti Û (u,v)ÎE due archi e,fÎE sono detti adiacenti Û e=(v,w) ed f=(v,u) un arco f=(u,v)ÎE si dice incidente su u e su v l’insieme di nodi N(v)={zÎV: z adiacente a v} è detto intorno di v in G l’insieme di archi d(v)={eÎE: e incide su v} è detto stella di v in G úd(v)ú è detto grado del nodo v
Grafi e Sottografi H=(W,F) è detto sottografo di G=(V,E) Û WÍV e FÍE H=(W,F) è detto sottografo indotto da W in G=(V,E) Û WÍV e (u,v)ÎF implica che u,vÎW e (u,v)ÎE
Esempio G=(V,E) sottografo di G
Esempio G=(V,E) sottografo indotto di G
Grafi bipartiti e grafi completi G è detto grafo bipartito se esiste una partizione di V=V1ÈV2 tale che: V1ÇV2=Æ "e=(u,v)ÎE se uÎV1 allora vÎV2 oppure se uÎV2 allora vÎV1 Esempio grafo bipartito grafo non bipartito
G è detto completo Û contiene tutti i possibili archi, ovvero ú d(v)ú=n-1 "vÎV il massimo numero di archi di un grafo completo è dato da Esempio grafo completo
Grafi orientati G=(V,E) è detto orientato se, dato V={v1,...,vn}, l’insieme degli archi E={e1,..,em} è formato da coppie ordinate di nodi. Per un grafo orientato si ha che ei=(vk,vh)¹ej=(vh,vk) ei,ejÎE Coda Testa L’arco ei si dice uscente da vh ed entrante in vk
Esempio grafo orientato Fs(v)={uÎV: (v,u) ÎE} è detto stella uscente di v Bs(v)={uÎV: (u,v) ÎE} è detto stella entrante di v S(v)= Fs(v)ÈBs(v) è detto stella di v le definizioni di sottografo e sottografo indotto di un grafo orientato sono analoghe a quelle date per i grafi non orientati
Grafi connessi e componenti connesse Dato G=(V,E) un nodo vÎV si dice connesso ad un nodo zÎV se esiste un cammino (orientato o non) tra v e z in G vÎV è connesso a v (riflessività) vÎV è connesso a zÎV Þ zÎV è connesso a vÎV (simmetria) se vÎV è connesso a zÎV e zÎV è connesso a uÎV Þ vÎV è connesso a uÎV (transitività)
Ci={vÎV:v è connesso a z, "zÎCi} L’insieme V può essere partizionato in sottoinsiemi Ci={vÎV:v è connesso a z, "zÎCi} Il sottografo indotto da Ci in G è detto componente connessa di G Se G possiede una sola componente connessa si dice connesso ("v,zÎV v è connesso a z) Esempio componenti connesse grafo connesso
Cammini e circuiti euleriani Un cammino euleriano è un percorso che passa per ogni arco una sola volta Un circuito euleriano è un cammino euleriano chiuso Esempio circuito euleriano 1 2 3 4 5 6 7 8
Alberi Un grafo è aciclico se non contiene cicli (orientati o non) Un albero è un grafo connesso ed aciclico Ogni grafo aciclico è in generale l’unione di alberi e viene detto foresta Esempio grafo aciclico (foresta) grafo non aciclico albero
Dato G=(V,E), le seguenti affermazioni sono equivalenti: G è un albero ogni coppia di nodi di G è connessa da un unico cammino G è aciclico eúEú=úVú-1 G è aciclico e connettendo due nodi non adiacenti con un arco si ottiene un grafo con un unico ciclo G è connesso eúEú=úVú-1
Dato un albero T=(V,E), si dice foglia vÎV tale cheúd(v)ú=1 Se úVú³2 allora esistono almeno due foglie foglie di un albero
Dato G=(V,E), si dice albero ricoprente (spanning tree) di G un albero T=(W,F) con W=V ed FÍE (è un sottografo di G) un albero ricoprente
Si considera un grafo G=(V,E) Il Problema del Minimo Albero Ricoprente (Minimum Spanning Tree Problem) Si considera un grafo G=(V,E) Ad ogni arco ei, i=1,...,n di G è associato un costo ci, i=1,...,m Il problema: determinare l’albero ricoprente di G con il minimo costo associato. 7 14 4 10 9 17 8 1 3 2 11 12 6 13 16 15 5 Esempio