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
...
2
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
...
3
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.
4
Un esempio: G=(V,E)
e2
v1
v2
e6
e1
v5
e3
e5
v3
e7
e4
v4
V v1, v 2 , v 3 , v 4 , v 5
E e1, e 2 , e 3 , e 4 , e 5 , e 6 , e7
e 1 v 1, v 5
e 2 v 1, v 2
5
Definizioni di base:
un arco (v,v) è detto loop
due nodi u,vV sono detti adiacenti (u,v)E
due archi e,fE 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)={zV: z adiacente a v} è detto
intorno di v in G
l’insieme di archi d(v)={eE: e incide su v} è detto
stella di v in G
d(v) è detto grado del nodo v
6
Grafi e Sottografi
H=(W,F) è detto sottografo di G=(V,E) WV e
FE
H=(W,F) è detto sottografo indotto da W in G=(V,E)
WV e (u,v)F implica che u,vW e (u,v)E
7
Esempio
v1
e1
v5
e2
e3
v2
e6
e5
v3
e7
e4
v4
G=(V,E)
v1
e1
e2
v2
v3
v5
sottografo di G
8
Esempio
e1
e3
e4
v5
v1
e1
v2
e2
v1
e2
e3
e6
e5
v3
e7
v4 G=(V,E)
v2
e6
v3
W v1, v2 , v3 , v5
v5
sottografo indotto di G
9
Grafi bipartiti e grafi completi
G è detto grafo bipartito se esiste una partizione di
V=V1V2 tale che:
V1V2=
"e=(u,v)E se uV1 allora vV2 oppure se uV2
allora vV1
Esempio
grafo bipartito
grafo non bipartito
10
G è detto completo contiene tutti i possibili archi,
ovvero d(v)=n-1 "vV
il massimo numero di archi di un grafo completo è
dato da
n n(n 1)
2
2
Esempio
grafo completo
11
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,ejE
vh
Coda
ei
vk
Testa
L’arco ei si dice uscente da vh ed entrante in vk
12
Esempio
e3
v1
e1
v4
e2
v2
e4
e6
e5
v3
grafo orientato
Fs(v)={uV: (v,u) E} è detto stella uscente di v
Bs(v)={uV: (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
13
Grafi connessi e componenti connesse
Dato G=(V,E) un nodo vV si dice connesso ad un
nodo zV se esiste un cammino (orientato o non) tra v
e z in G
vV è connesso a v (riflessività)
vV è connesso a zV zV è connesso a vV
(simmetria)
se vV è connesso a zV e zV è connesso a uV
vV è connesso a uV (transitività)
14
L’insieme V può essere partizionato in sottoinsiemi
Ci={vV:v è connesso a z, "zCi}
Il sottografo indotto da Ci in G è detto componente
connessa di G
Se G possiede una sola componente connessa si dice
connesso ("v,zV v è connesso a z)
Esempio
componenti
connesse
grafo connesso
15
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
8
3
6
1
7
circuito euleriano
2
5
4
16
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
17
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 eE=V-1
G è aciclico e connettendo due nodi non adiacenti
con un arco si ottiene un grafo con un unico ciclo
G è connesso eE=V-1
18
Dato un albero T=(V,E), si dice foglia vV tale
ched(v)=1
Se V2 allora esistono almeno due foglie
foglie di un albero
19
Dato G=(V,E), si dice albero ricoprente (spanning
tree) di G un albero T=(W,F) con W=V ed FE (è un
sottografo di G)
un albero ricoprente
20
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.
14
4 10
7
Esempio
8
11
9
17
3
2 1 16
12
6
13
5 15
21