Grafi diretti - Server users.dimi.uniud.it

annuncio pubblicitario
Algoritmi e Strutture di Dati II
2
Grafi diretti
Un grafo diretto (o grafo orientato) G è una coppia (V, E) dove
• V è un insieme di nodi (o vertici);
• E µ V £ V è un insieme di archi.
Denotiamo con n = |V | il numero di nodi di G, e con m = |E| il
numero di archi di G.
Algoritmi e Strutture di Dati II
3
Un grafo diretto
a
b
c
d
e
f
g
h
Algoritmi e Strutture di Dati II
Successori e predecessori
Dato un nodo u, i successori di u sono i vertici v tali che
(u, v) 2 E. Il grado uscente di un nodo u è il numero di
successori di u.
I predecessori di u sono i vertici v tali che (v, u) 2 E. ll grado
entrante di u è il numero di predecessori di u.
Il grado di un nodo è la somma tra grado uscente e grado entrante
del nodo.
4
Algoritmi e Strutture di Dati II
5
Cammini e cicli
Un cammino è una sequenza di nodi collegati a due a due da
archi. La lunghezza del cammino è il numero di archi del cammino.
Un cammino semplice è un cammino senza nodi ripetuti. Esiste
sempre un cammino di lunghezza zero da un nodo a se stesso.
Un ciclo è un cammino da un nodo a se stesso che contiene almeno
un arco.
Un ciclo è semplice se il cammino ottenuto togliendo dal ciclo
l’ultimo nodo è semplice. Un cappio è un ciclo di lunghezza uno.
Algoritmi e Strutture di Dati II
6
Grafi indiretti
Un grafo diretto (o grafo non orientato) G è una coppia (V, E)
dove
• V è un insieme di nodi (o vertici);
• E µ V £ V è un insieme di archi non orientati.
Un arco non orientato è un insieme {u, v}, con u 6= v.
Algoritmi e Strutture di Dati II
7
Grafo indiretto
a
b
c
d
e
f
g
h
Algoritmi e Strutture di Dati II
8
Quesiti
1. Qual è il numero massimo di archi di un grafo diretto di n nodi?
2. Qual è il numero massimo di archi di un grafo indiretto di n
nodi?
Algoritmi e Strutture di Dati II
9
Visite di grafi
Gli algoritmi di visita di un grafo hanno come obiettivo
l’esplorazione di tutti i nodi e gli archi del grafo. Vi sono due modi
principali per esplorare un grafo:
• Visita in ampiezza: di fratello in fratello.
• Visita in profondità: di padre in figlio.
Algoritmi e Strutture di Dati II
10
Le due visite a confronto
1
1
2
5
3
7
6
8
2
4
3
9
5
9
6
4
7
8
Algoritmi e Strutture di Dati II
Ordinamento topologico
Un DAG è un grafo diretto aciclico.
Un ordinamento topologico di un DAG G = (V, E) è un
ordinamento totale ¡ dei suoi vertici tale che:
se (u, v) 2 E allora u ¡ v.
11
Algoritmi e Strutture di Dati II
12
watch
11/16
12/15
undershorts
socks
17/18
shoes
13/14
pants
shirt 1/8
6/7
9/10
belt
tie
jacket
2/5
3/4
Algoritmi e Strutture di Dati II
13
Ordinamento topologico
socks
undershorts
pants
shoes
watch
shirt
belt
tie
jacket
17/18
11/16
12/15
13/14
9/10
1/8
6/7
2/5
3/4
Algoritmi e Strutture di Dati II
14
Raggiungibilità
Un nodo v è raggiungibile da un nodo u (oppure u raggiunge v)
se esiste un cammino da u a v. Definiamo due relazioni sull’insieme
dei nodi:
(a) la relazione di raggiungibilità R! tale che uR! v se v è
raggiungibile da u;
(b) la relazione di mutua raggiungibilità R
uR! v e vR! u.
tale che uR v se
La relazione di mutua raggiungibilità è una relazione di
equivalenza.
Algoritmi e Strutture di Dati II
Componenti fortemente connesse
Dato un grafo diretto G = (V, E), le classi di equivalenza della
relazione di mutua raggiungibilità sono dette componenti
fortemente connesse (CFC) del grafo.
In modo equivalente, una CFC di G = (V, E) è un insieme
massimale di vertici U µ V tale che ogni coppia di vertici in U è
mutuamente raggiungibile.
Se C1 , . . . , Ck sono le CFC di G, allora:
• Ci 6= ; per ogni i;
• Ci \ Cj = ; per ogni i =
6 j;
Sk
• i=1 Ci = V .
15
Algoritmi e Strutture di Dati II
16
a
b
c
d
e
f
g
h
Algoritmi e Strutture di Dati II
17
Componenti connesse
Nei grafi indiretti, la relazione di raggiungibilità R! coincide con la
relazione di mutua raggiungibilità R .
Le classi di equivalenza della relazione di raggiungibilità su grafi
indiretti sono dette componenti connesse.
a
b
c
d
e
f
g
h
Algoritmi e Strutture di Dati II
18
Foreste
Un grafo si dice:
• aciclico se non contiene cicli;
• (fortemente) connesso se ammette una unica componente
(fortemente) connessa.
Una foresta è un grafo indiretto aciclico.
a
b
c
d
e
f
g
h
Algoritmi e Strutture di Dati II
19
Alberi
Un albero è un grafo indiretto aciclico e connesso.
a
b
c
d
e
f
g
h
Algoritmi e Strutture di Dati II
Proprietà degli alberi
Sia T = (V, E) un albero. Allora:
1. Ogni due nodi di T sono connessi da un unico cammino
semplice.
2. Rimuovendo un arco qualsiasi da T otteniamo un grafo
sconnesso.
3. Aggiungendo un arco qualsiasi a T otteniamo un grafo ciclico.
4. |E| = |V | ° 1.
20
Algoritmi e Strutture di Dati II
21
Quesiti
1. Qual è il numero di archi di un albero di n nodi?
2. Qual è il numero di archi di una foresta di n nodi e k
componenti connesse?
Algoritmi e Strutture di Dati II
22
Grafi pesati
Un grafo pesato è un grafo G = (V, E, w), dove w : E ! R è una
funzione di peso che associa un numero reale chiamato peso (o
costo) ad ogni arco.
b
c
8
4
9
2
i
4
11
a
h
14
6
7
8
d
7
1
e
10
g
2
f
Algoritmi e Strutture di Dati II
23
Albero di supporto
Sia G = (V, E, w) un grafo pesato indiretto e connesso.
Un albero di supporto T = (V, F ) di G è un albero che ha come
insieme dei nodi l’insieme V dei nodi del grafo e come insieme degli
archi un insieme F µ E.
Il peso di un albero di supporto T = (V, F ) è
X
w(T ) =
w(u, v)
(u,v)2F
Algoritmi e Strutture di Dati II
24
Albero di supporto di peso minimo
Il problema dell’albero di supporto di costo minimo consiste nel
trovare un albero di supporto di G di peso minimo. Tale albero
non è necessariamente unico.
b
c
8
4
9
2
i
4
11
a
h
14
6
7
8
d
7
1
e
10
g
2
f
Algoritmi e Strutture di Dati II
25
Problema del cammino (di peso) minimo
Dato un grafo diretto pesato G = (V, E, w), il peso di un cammino
p = hv0 , v1 , . . . , vk i è la somma dei pesi dei propri archi,
w(p) =
k°1
X
w(vi , vi+1 )
i=0
Dati due nodi u e v, un cammino minimo tra due nodi è, se
esiste, un cammino di peso minimo che li collega.
Algoritmi e Strutture di Dati II
Due varianti del problema
1. Cammino minimo con una sorgente: dato un nodo
sorgente s, trovare, per ogni nodo del grafo v, un cammino
minimo da s a v;
2. Cammino minimo per tutte le coppie di nodi: per ogni
coppia di nodi u, v del grafo trovare un cammino minimo da u
a v.
26
Algoritmi e Strutture di Dati II
27
4
3
3
0
5
4
7
2
6
11
5
3
3
2
4
6
11
7
5
2
8
Algoritmi e Strutture di Dati II
28
−4
3
−1
4
3
6
0
5
11
5
−3
3
2
−°°
−°°
−6
8
−°°
7
°°
Algoritmi e Strutture di Dati II
29
Grafo completo
Un grafo completo è un grafo indiretto in cui ogni coppia di
vertici distinti è connessa da un arco.
a
b
f
c
e
d
Algoritmi e Strutture di Dati II
Problema del commesso viaggiatore
Dato un grafo indiretto G, un tour in G è un ciclo che passa
esattamente una volta per ogni nodo di G.
Sia G un grafo indiretto, completo e pesato con pesi non negativi.
Il problema del commesso viaggiatore consiste nel trovare il
tour in G di peso minimo.
30
Algoritmi e Strutture di Dati II
31
d
a
e
f
b
c
h
g
Algoritmi e Strutture di Dati II
a
32
a
d
d
e
e
b
f
b
g
f
c
c
h
h
C = a, b, c, h, d, e, f, g, a
C* = a, b, c, h, f, g, e, d, a
w(C) = 19,074
w(C*) = 14,715
g
Scarica