Algoritmi e Programmazione Avanzata -...

93
1/185 Algoritmi e Programmazione Avanzata - teoria 2/185 Che cosa c’è nella lezione Questa lezione si occupa di teoria dei grafi: la rappresentazione dei grafi le visite dei grafi gli alberi ricoprenti minimi i cammini minimi.

Transcript of Algoritmi e Programmazione Avanzata -...

Page 1: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

1

1/185

Algoritmi e Programmazione Avanzata - teoria

2/185

Che cosa c’è nella lezione

Questa lezione si occupa di teoria dei grafi:

la rappresentazione dei grafi

le visite dei grafi

gli alberi ricoprenti minimi

i cammini minimi.

ovcin
© 2003 Politecnico di Torino 1
ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
Page 2: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

2

3/185

Algoritmi e Programmazione Avanzata - teoria

4/185

Rappresentazione

Tramite:

lista di adiacenza;

matrice di adiacenza.

ovcin
© 2003 Politecnico di Torino 2
ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
Page 3: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

3

5/185

Lista di adiacenza

Dato G = (V, E), lista di adiacenza:

vettore A di |V| elementi;

A[i] contiene il puntatore alla lista dei vertici adiacenti a i.

6/185

Esempio: grafo non orientato

5

1

4

2

3

1

2

3

4

5

2

5

1

A1

2

5

5

4

2

3

3

4

4

2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 3
Page 4: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

4

7/185

Esempio: grafo orientato

1

2

3

4

5

2

3 4

3

5

1 2

5

1

4

2

3

8/185

Esempio: grafo orientato pesato

1

2

3

4

5

2/3

3/5 4/4

3/7

5/1

1/5 2/6

5

1

4

2

3

3

56

1

4

5

7

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 4
Page 5: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

5

9/185

Vantaggi/svantaggi 1/2

Grafi orientati:elementi complessivi nelle liste = 2|E|

Grafi non orientati:elementi complessivi nelle liste = |E|

Complessità spazialeS(n) = O(max(|V|, |E|)) = O(|V+E|)

⇒ vantaggioso per grafi sparsi.

10/185

Vantaggi/svantaggi 2/2

Svantaggi:

verifica dell’esistenza di arco (u,v) mediantescansione della lista di adiacenza di u;

uso di memoria per i pesi dei grafi pesati.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 5
Page 6: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

6

11/185

Matrice di adiacenza

Dato G = (V, E), matrice di adiacenza:

matrice A di |V| x |V| elementi

1 se (i, j) ∈ EA[i,j] =

0 se (i, j) ∉E

grafi non orientati: A simmetrica.

12/185

Esempio: grafo non orientato

5

1

4

2

3

1 2 3 4 51

2

345

01 10 1 1

11 0 0

0 01 0 10 11 1 01 01 0 1

A

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 6
Page 7: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

7

13/185

Esempio: grafo orientato

1 2 3 4 51

2

345

00 00 1 1

01 0 0

0 00 1 00 10 0 01 01 0 0

A

5

1

4

2

3

14/185

Esempio: grafo orientato pesato

1 2 3 4 51

2

345

00 00 5 4

03 0 0

0 00 7 00 10 0 05 06 0 0

A

5

1

4

2

3

3

56

1

4

5

7

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 7
Page 8: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

8

15/185

Esempio: grafo orientato pesato

Complessità spaziale

S(n) = Θ(|V|2)⇒ vantaggioso per grafi densi

No costi aggiuntivi per i pesi

Accesso efficiente alla topologia del grafo.

16/185

Algoritmi e Programmazione Avanzata - teoria

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 8
Page 9: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

9

17/185

Algoritmi di visita

Visita di un grafo G=(V, E):

a partire da un vertice dato s, seguendo gliarchi con una certa strategia, elencare i verticiincontrati.

Algoritmi:

in ampiezza (breadth-first search, BFS);

in profondità (depth-first search, DFS).

18/185

Visita in ampiezza: principi base 1/2

Scoperta di un vertice: prima volta che si incontra nella visita.

Ampiezza: espande tutta la frontiera travertici già scoperti/non ancora scoperti(usa coda Q).

Vertici:

bianchi: non ancora scoperti;grigi: scoperti, ma non completati;neri: scoperti e completati.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 9
Page 10: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

10

19/185

Dato vertice u:

d[u] = distanza di u da s;

π(u): padre di u nell’albero della visita.

Visita in ampiezza: principi base 2/2

20/185

Algoritmo 1/2

Inizializzazione

d[s]=0, π[s] = NIL, colore[s] = grigio

altri vertici u: d[u]=∞, π[u] = NIL, colore[u] = bianco

Q ={s}.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 10
Page 11: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

11

21/185

Algoritmo 2/2

Fintanto che Q non diventa vuoto:

estrai da Q l’elemento in testa u

∀ vertice v bianco e adiacente ad u

- d[v] = d[u] +1, colore[v] = grigio, π[v] = u- inserisci v in Q

colore[u] = nero.

22/185

Esempio

r s t u

w x y

π

v

Q

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 11
Page 12: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

12

23/185

Esempio

∞∞

∞∞ ∞

0

sπQ

r s t u

w x yv

s

24/185

Esempio

1

∞∞

1∞ ∞

0

sπQ

r s t u

w x yv

r w

r w

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 12
Page 13: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

13

25/185

Esempio

1

∞∞

12 ∞

0

sπQ

r s t u

w x yv

w v

r w

v

26/185

Esempio

1

2

∞2

12 ∞

0

sπQ

r s t u

w x yv

v t

r w

x

xv t

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 13
Page 14: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

14

27/185

Esempio

1

2

∞2

12 ∞

0

sπQ

r s t u

w x y

t x

r w

xv t

v

28/185

Esempio

1

2

32

12 ∞

0

sπQ

r s t u

w x y

x u

r w

xv t

u

v

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 14
Page 15: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

15

29/185

Esempio

1

2

32

12 3

0

sπQ

r s t u

w x y

u y

r w

xv t

u y

v

30/185

Esempio

1

2

32

12 3

0

sπQ

r s t u

w x y

y

r w

xv t

u y

v

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 15
Page 16: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

16

31/185

Esempio

1

2

32

12 3

0

sπQ

r s t u

w x y

r w

xv t

u y

v

32/185

Complessità

Operazioni sulla coda

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 16
Page 17: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

17

33/185

Complessità

O(|V|)

Operazioni sulla coda

34/185

Complessità

Operazioni sulla coda

Scansione delle liste di adiacenza

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 17
Page 18: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

18

35/185

Complessità

O(|E|)

Operazioni sulla coda

Scansione delle liste di adiacenza

36/185

Complessità

Operazioni sulla coda

Scansione delle liste di adiacenza

T(n) = O(|V|+|E|).

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 18
Page 19: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

19

37/185

Proprietà 1/2

RaggiungibilitàA partire da un vertice s:

determina tutti i vertici raggiungibili da s

38/185

Proprietà 2/2

Cammini minimi: la visita in ampiezza determina la minima distanza tra s e ogni vertice raggiungibile da esso.

s

r w

v t x

u y

π

Cammino minimo da s a u:s, w, t, ulunghezza = 3

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 19
Page 20: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

20

39/185

Visita in profondità

A partire da un vertice s:

visita tutti i vertici del grafo (raggiungibili da s e non)

etichetta ogni vertice v con tempo di scoperta/tempodi fine elaborazione d[v]/f[v]

etichetta ogni arco:- grafi orientati: T(ree), B(ackward), F(orward), C(ross)- grafi non orientati: T(ree), B(ackward)

genera una foresta di alberi della visita in profondità.

40/185

Principi base

Profondità: espande l’ultimo vertice scopertoche ha ancora vertici non ancora scoperti adiacenti

Scoperta di un vertice: prima volta che si incontra nella visita

Vertici:

bianchi: non ancora scopertigrigi: scoperti, ma non completati

neri: scoperti e completati.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 20
Page 21: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

21

41/185

Strutture dati 1/2

Grafo come lista delle adiacenze

Tempo discreto time

Vettore d dei tempi di scoperta

Vettore f dei tempi di fine elaborazione

Vettore colore.

42/185

Strutture dati 2/2

Vettore π dei predecessori (per costruire gli alberi di visita in profondità)

Etichette degli archi T, B, F, C.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 21
Page 22: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

22

43/185

Algoritmo 1/2

Inizializzazione

π[u] = NIL, colore[u] = bianco

time = 0

∀ vertice u bianco, visita ricorsiva

44/185

Algoritmo 2/2

Visita ricorsiva da u:

colore[u] = grigio, d[u] = time++

∀ vertice v bianco e adiacente a u - π[v] = u, visita ricorsiva a partire da v

colore[u] = nero

f[u] = time++

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 22
Page 23: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

23

45/185

Esempio

time = 0 π

r s t

v w x

46/185

Esempio

time = 1 π

r s t

v w x

1/

r

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 23
Page 24: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

24

47/185

Esempio

time = 2 π

r s t

v w x

1/

r

2/

s

48/185

Esempio

time = 3 π

r s t

v w x

1/

r

2/

s

3/

w

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 24
Page 25: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

25

49/185

Esempio

time = 4 π

r s t

v w x

1/

r

2/

s

3/4

w

50/185

Esempio

time = 5 π

r s t

v w x

1/

r

2/5

s

3/4

w

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 25
Page 26: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

26

51/185

Esempio

time = 6 π

r s t

v w x

1/

r

2/5

s

3/4

w

6/

v

52/185

Esempio

time = 7 π

r s t

v w x

1/

r

2/5

s

3/4

w

6/7

v

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 26
Page 27: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

27

53/185

Esempio

time = 8 π

r s t

v w x

1/8

r

2/5

s

3/4

w

6/7

v

54/185

Esempio

time = 9 π

r s t

v w x

1/8

r

2/5

s

3/4

w

6/7

v

t

9/

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 27
Page 28: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

28

55/185

Esempio

time = 10 π

r s t

v w x

1/8

r

2/5

s

3/4

w

6/7

v

t

9/

10/

x

56/185

Esempio

time = 11 π

r s t

v w x

1/8

r

2/5

s

3/4

w

6/7

v

t

9/

10/11

x

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 28
Page 29: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

29

57/185

Esempio

time = 12 π

r s t

v w x

1/8

r

2/5

s

3/4

w

6/7

v

t

9/12

10/11

x

58/185

Complessità

Inizializzazione

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 29
Page 30: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

30

59/185

Complessità

Inizializzazione

Θ(|V|)

60/185

Complessità

Inizializzazione

Visita ricorsiva da u

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 30
Page 31: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

31

61/185

Complessità

Inizializzazione

Visita ricorsiva da uΘ(|E|)

62/185

Complessità

Inizializzazione

Visita ricorsiva da u

T(n) = Θ(|V|+|E|)

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 31
Page 32: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

32

63/185

Classificazione degli archi

Grafo orientato:

T: archi dell'albero della visita in profondità

B: connettono un vertice ad un suo antenato nell’albero

F: connettono un vertice ad un suo discendente nell’albero

C: archi rimanenti.

Grafo non orientato: solo archi T e B.

64/185

Estensione della visita

Quando si incontra un arco (u,v) si considera il colore del vertice v in quel momento:

se colore[v]=bianco, (u,v) è T

se colore[v]=grigio, (u,v) è B

se colore[v]=nero:- se d[u]<d[v]) (u,v) è F- se d[u]>d[v]) (u,v) è C.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 32
Page 33: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

33

65/185

Esempio

b a s e

c d f g

b a

d

7/8 12/13

11/16T

T

14/15

BB

3/6 2/9

TC

s e

c f g

4/5

1/10

C

T

T

C C

TF

66/185

Esempio

s

a

b

c

d

e

f g

T

T

T

T

T T

B

B

C

C

C

C

F

Sovente si “ridisegna” il grafo a partire dagli alberi della visita in profondità.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 33
Page 34: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

34

67/185

Algoritmi e Programmazione Avanzata - teoria

68/185

Alberi ricoprenti minimi

G=(V,E) grafo non orientato, pesato w: E→R e connesso

Albero ricoprente minimo (non unico)

grafo G'=(V, T) dove T⊆E

aciclico

minimizza w(T)=Σ w(u,v).

Aciciclità e copertura di tutti i vertici ⇒ G’ è un albero

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 34
Page 35: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

35

69/185

Approccio greedy

Approccio greedy:

a ogni passo, scelta della soluzione localmente ottima;

non garantisce soluzione globalmente ottima.

70/185

Algoritmo generico

A= sottoinsieme di albero ricoprente minimo, inizialmente vuoto

Fintanto che A non è un albero ricoprente minimo, aggiungi ad A un arco (u,v) “sicuro”

Invarianza: (u,v) sicuroaggiunto a un sottoinsieme di un albero ricoprente minimo produce ancora un sottoinsieme di un albero ricoprente minimo.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 35
Page 36: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

36

71/185

Tagli e archi 1/2

G=(V,E) grafo non orientato, pesato, connesso.

Taglio = partizione di V in S e V-SV = S∪ V-S e S ∩ V-S = ∅

(u,v) ∈ E attraversa il taglio ⇔ u∈S e v∈V-S (o viceversa).

72/185

Tagli e archi 2/2

Un taglio rispetta un insieme A di archi se nessun arco di A attraversa il taglio.

Un arco si dice leggero se ha peso minimo tra gli archi che attraversano il taglio.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 36
Page 37: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

37

73/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

S

V-S

74/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

S

V-S

(b,c) attraversa il taglio

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 37
Page 38: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

38

75/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

S

V-S

il taglio rispetta A A={(a,b), (c,f), (f,g), (g,h)}

76/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

S

V-S

(c,d) è un arco leggero

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 38
Page 39: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

39

77/185

Archi sicuri: teorema

G=(V,E) grafo non orientato, pesato, connesso.

A = sottoinsieme di un qualche albero ricoprente minimo di G;

(S,V-S) taglio qualunque che rispetta A;(u,v) un arco leggero che attraversa (S,V-S).

⇒ (u,v) è sicuro per A.

78/185

Archi sicuri: corollario

G=(V,E) grafo non orientato, pesato, connesso.

A = sottoinsieme di un qualche albero ricoprente minimo di G;C albero nella foresta GA= (V,A);(u,v) un arco leggero che connette C ad un'altra componente in GA .

⇒ (u,v) è sicuro per A.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 39
Page 40: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

40

79/185

Algoritmo di Kruskal

Basato su algoritmo generico

Corollario per determinare l’arco sicuro:

foresta di alberi, inizialmente vertici singoli;

ordinamento degli archi per pesi crescenti;

iterazioneselezione di un arco sicuro: arco di peso minimo che connette 2 alberi generando un albero;

terminazione: considerati tutti i vertici.

80/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 40
Page 41: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

41

81/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

82/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 41
Page 42: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

42

83/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

84/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 42
Page 43: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

43

85/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

86/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 43
Page 44: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

44

87/185

Complessità

Dipende dalle strutture dati utilizzate.

Con strutture efficienti T(n) = O(|E|lg|E|).

88/185

Algoritmo di Prim

Basato sull’algoritmo generico

Uso del teorema per determinare l’arco sicuro:

inizialmente A = {r} (r = radice dell’albero)

iterazione: arco di peso minimo che connette un vertice di A con un vertice di V-A;

terminazione: considerati tutti i vertici.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 44
Page 45: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

45

89/185

Struttura dati

Coda a priorità: contiene tutti i vertici v non appartenenti ad A.

key[v] = minimo tra i pesi degli archi che collegano v a un qualunque vertice in A.

Se v non è collegato a nessun vertice in A, allora key[v]=∞.

90/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9A

V-A

r

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 45
Page 46: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

46

91/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9A

V-A

92/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9A

V-A

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 46
Page 47: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

47

93/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9A

V-A

94/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9A

V-A

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 47
Page 48: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

48

95/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9A

V-A

96/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9A

V-A

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 48
Page 49: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

49

97/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9A

V-A

98/185

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9A

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 49
Page 50: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

50

99/185

Complessità

T(n) = O(|V|lg|V| + |E|lg|V|) = O(|E|lg|V|)

Con strutture dati particolari (heap di Fibonacci) T(n) = O(|E| + |V|lg|V|).

100/185

Algoritmi e Programmazione Avanzata - teoria

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 50
Page 51: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

51

101/185

Cammini minimi

G=(V,E) grafo orientato, pesato (w: E→R)

Definizioni:peso w(p) di un cammino p:

w(p) = Σi=1kw(vi-1, vi)

peso δ(u,v) di un cammino minimo da u a v:

min{w(p): se ∃ u →p v }δ(u,v) =

∞ altrimenti

Cammino minimo da u a v:qualsiasi cammino p con w(p) = δ(u,v)

102/185

Problemi classici

Cammini minimi:

da sorgente singola: cammino minimo e suo peso da s a ogni altro vertice v

- algoritmo di Dijkstra

- algoritmo di Bellman-Ford

con destinazione singola

tra una coppia di vertici

tra tutte le coppie di vertici.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 51
Page 52: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

52

103/185

Archi con pesi negativi

∃ (u,v) ∈ E per cui w(u,v) < 0 ma ∃ ciclo a peso < 0:

algoritmo di Djikstra: soluzione ottima non garantita;algoritmo di Bellman-Ford: soluzione ottima garantita.

∃ ciclo a peso < 0: problema non definito, ∃ soluzione:

algoritmo di Djikstra: risultato senza significato;algoritmo di Bellman-Ford: rileva ciclo <0.

104/185

Esempio

a b

s c d g

e f

3

5

2

-4

4

8

7

6

-3

3

-6

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 52
Page 53: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

53

105/185

Esempio

a b

s c d g

e f

3

5

2

-4

4

8

7

6

-3

3

-6

0

3 -1

-∞

-∞-∞

5 11

106/185

Rappresentazione 1/2

Vettore dei predecessori:

parent(v) se ∃∀v∈V p[v] =

NIL altrimenti

Sottografo dei predecessori:

Gp=(Vp,Ep), dove

- Vp = {v ∈V: p[v] ≠ NIL} ∪ {s}- Ep = {(p[v], v) ∈ E : v ∈ Vp - {s}}

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 53
Page 54: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

54

107/185

Rappresentazione 2/2

Albero dei cammini minimi:

G’ = (V’, E’) dove V’ ⊆ V e E’ ⊆ E

V’: insieme dei vertici raggiungibili da ss radice dell’albero∀v∈V’ l’unico cammino semplice da s a v in G’ è un cammino minimo da s a v in G

Nei grafi non pesati: algoritmo di visita in ampiezza.

108/185

Esempio

u v

s

x y

3

5

6

4

3

21 7 2

6

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 54
Page 55: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

55

109/185

Esempio

u v

s

x y

3

5

6

4

3

21 7 2

6

0

3 9

115

110/185

Esempio

u v

s

x y

3

5

6

4

3

21 7 2

6

0

3 9

115

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 55
Page 56: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

56

111/185

Fondamenti teorici 1/3

Lemma: un sottocammino di un cammino minimo è un cammino minimo.

G=(V,E): grafo orientato, pesato w: E→R. p=<v1, v2, …, vk>: un cammino minimo da v1 a vk. ∀i, j 1≤i≤j≤k, pij=<vi,vi+1,…,vj>: sottocammino di p da vi a vj.

pij è un cammino minimo da vi a vj.

112/185

Fondamenti teorici 2/3

Corollario:

G=(V,E): grafo orientato, pesato w: E→R.

Cammino minimo p da s a v decomposto in

un sottocammino da s a uun arco (u,v).

Allorad(s,v)=d(s,u)+w(u,v)

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 56
Page 57: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

57

113/185

Fondamenti teorici 3/3

Lemma:

G=(V,E): grafo orientato, pesato w: E→R.

∀(u,v)∈E

d(s,v) ≤ d(s,u) + w(u,v)

114/185

Rilassamento

d[v]: stima (limite superiore) del peso del cammino minimo da s a vinizialmente:

∀ v ∈ V d[v]=∞, π[v] = NIL; d[s] = 0

Rilassare: (= aggiornare) d[v] e π [v] verificando se conviene il cammino da s a u e l’ arco (u,v):

if (d[v]>d[u]+w(u,v)) {d[v] = d[u]+w(u,v);

π [v]←u;}

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 57
Page 58: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

58

115/185

Esempio

u v

5 9

2

u v

5 7

2

Rilassamento

d[v] =9d[u] = 5w(u,v) = 2d[v]>d[u] + w(u,v)

d[v] = 7π[v] = ucammino minimo da s a v =cammino minimo da s a u + arco (u,v)

116/185

Esempio

u v

5 6

2

u v

5 7

2

Rilassamento

d[v] =6d[u] = 5w(u,v) = 2d[v]<d[u] + w(u,v)

Il rilassamento non ha avuto effetto

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 58
Page 59: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

59

117/185

Proprietà 1/3

Lemma:

G=(V,E): grafo orientato, pesato w: E→R.

(u,v)∈E

Dopo il rilassamento di (u,v) si ha che:

d[v] ≤ d[u] + w(u,v)

118/185

Proprietà 2/3

Lemma:

G=(V,E): grafo orientato, pesato w: E→R.

sorgente s ∈ V

inizializzazione di d e π

∀ v ∈ V d[v] ≥ δ(s,v)

per tutti i passi di rilassamento sugli archi

quando d[v] = δ(s,v), allora d[v] non cambia più.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 59
Page 60: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

60

119/185

Proprietà 3/3

Lemma:

G=(V,E): grafo orientato, pesato w: E→R.sorgente s ∈ Vcammino minimo da s a v composto da

cammino da s a uarco (u,v)

inizializzazione di d e πapplicazione del rilassamento su (u,v)

se prima del rilassamento d[u] = δ(s,u)dopo il rilassamento d[v] = δ(s,v).

120/185

Applicazione

Rilassamento:

applicato 1 volta ad ogni arco (Dijkstra) o più volte (Bellman-Ford);

ordine con cui si rilassano gli archi.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 60
Page 61: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

61

121/185

Algoritmo di Dijkstra

Ipotesi: ∃ archi a peso < 0

Strategia: greedy

S: insieme dei vertici il cui peso di cammino minimo da s è già stato determinato

V-S: coda a priorità Q dei vertici ancora da stimare. Termina per Q vuoto:

estrae u da V-S (d[u] minimo)inserisce u in Srilassa tutti gli archi uscenti da u.

122/185

Esempio

u v

s

x y

10

5

1

9

7

23 6 4

2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 61
Page 62: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

62

123/185

Esempio

u v

s

x y

10

5

1

9

7

23 6 4

2

S={}Q={s/0, u/∞,v/∞, x/∞, y/∞}

0

∞ ∞

∞ ∞

124/185

Esempio

u v

s

x y

10

5

1

9

7

23 6 4

2

0

10

5

S={s} relax (s,u), (s,x)Q={x/5, u/10,v/∞, y/∞}

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 62
Page 63: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

63

125/185

Esempio

u v

s

x y

10

5

1

9

7

23 6 4

2

0

8

5

14

7

S={s, x} relax (x,u), (x,v), (x,y)Q={y/7, u/8,v/14,}

126/185

Esempio

u v

s

x y

10

5

1

9

7

23 6 4

2

0

8

5

13

7

S={s, x, y} relax (y,s), (y,v)Q={u/8,v/13}

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 63
Page 64: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

64

127/185

Esempio

u v

s

x y

10

5

1

9

7

23 6 4

2

0

8

5

9

7

S={s, x, y, u} relax (u,v), (u,x)Q={v/9}

128/185

Esempio

u v

s

x y

10

5

1

9

7

23 6 4

2

0

8

5

9

7

S={s, x, y, u, v} relax (v,y)Q={}

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 64
Page 65: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

65

129/185

Complessità

V-S: coda a priorità Q dei vertici ancora da stimare.

130/185

Complessità

V-S: coda a priorità Q dei vertici ancora da stimare.

Θ(|V|)

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 65
Page 66: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

66

131/185

Complessità

V-S: coda a priorità Q dei vertici ancora da stimare. Termina per Q vuoto

estrae u da V-S (d[u] minimo)

132/185

Complessità

V-S: coda a priorità Q dei vertici ancora da stimare. Termina per Q vuoto

estrae u da V-S (d[u] minimo) O(lg|V|)

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 66
Page 67: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

67

133/185

Complessità

V-S: coda a priorità Q dei vertici ancora da stimare. Termina per Q vuoto

estrae u da V-S (d[u] minimo)inserisce u in Srilassa tutti gli archi uscenti da u

134/185

Complessità

V-S: coda a priorità Q dei vertici ancora da stimare. Termina per Q vuoto

estrae u da V-S (d[u] minimo)inserisce u in Srilassa tutti gli archi uscenti da u

O(lg|V|) O(|E|)

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 67
Page 68: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

68

135/185

Complessità

V-S: coda a priorità Q dei vertici ancora da stimare. Termina per Q vuoto

estrae u da V-S (d[u] minimo)inserisce u in Srilassa tutti gli archi uscenti da u

T(n) = O((|V|+|E|) lg |V|)

136/185

Algoritmo di Bellman-Ford

Ipotesi: possono ∃ archi a peso < 0

Rileva cicli < 0

Strategia: greedy

Inizializzazione di d

|V|-1 passi di rilassamento sugli archi

|V|esimo rilassamento:

diminuisce almeno una stima: ∃ciclo <0altrimenti soluzione ottima.

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 68
Page 69: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

69

137/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-4

Archi in ordine lessicografico:(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

138/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

∞ ∞

∞∞(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 1

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 69
Page 70: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

70

139/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

∞ ∞

∞∞(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 1

140/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

∞ ∞

∞∞(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 1

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 70
Page 71: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

71

141/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

∞ ∞

∞∞(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 1

142/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

∞ ∞

∞∞(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 1

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 71
Page 72: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

72

143/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

∞ ∞

∞∞(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 1

144/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

∞ ∞

∞∞(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 1

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 72
Page 73: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

73

145/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

∞ ∞

∞∞(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 1

146/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

∞ ∞

∞(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 16

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 73
Page 74: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

74

147/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

∞(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 16

7

148/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 26

7

11

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 74
Page 75: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

75

149/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 26

7

11

150/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 26

7

11

2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 75
Page 76: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

76

151/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 26

7

11

2

152/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 26

7

4

2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 76
Page 77: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

77

153/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 26

7

4

2

154/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 26

7

4

2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 77
Page 78: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

78

155/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 26

7

4

2

156/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 26

7

4

2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 78
Page 79: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

79

157/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 26

7

4

2

158/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 36

7

4

2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 79
Page 80: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

80

159/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 36

7

4

2

160/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 36

7

4

2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 80
Page 81: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

81

161/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 32

7

4

2

162/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 32

7

4

2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 81
Page 82: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

82

163/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 32

7

4

2

164/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 32

7

4

2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 82
Page 83: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

83

165/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 32

7

4

2

166/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 32

7

4

2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 83
Page 84: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

84

167/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 32

7

4

2

168/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 42

7

4

2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 84
Page 85: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

85

169/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 42

7

4

2

170/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 42

7

4

-2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 85
Page 86: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

86

171/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 42

7

4

-2

172/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 42

7

4

-2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 86
Page 87: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

87

173/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 42

7

4

-2

174/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 42

7

4

-2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 87
Page 88: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

88

175/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 42

7

4

-2

176/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 42

7

4

-2

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 88
Page 89: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

89

177/185

Esempio

u v

z

x y

6

7

5

-3

2

8 7

9

-2

-40

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Passo 42

7

4

-2

178/185

Esempio

Al |V|-esimo passo di rilassamento non diminuisce alcuna stima:

terminazione con soluzione ottima

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 89
Page 90: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

90

179/185

Complessità

Inizializzazione

180/185

Complessità

Inizializzazione O(|V|)

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 90
Page 91: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

91

181/185

Complessità

Inizializzazione

|V| - 1 passi di rilassamento sugli archi

182/185

Complessità

Inizializzazione

|V| - 1 passi di rilassamento sugli archi

O(|V||E|)

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 91
Page 92: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

92

183/185

Complessità

Inizializzazione

|V| - 1 passi di rilassamento sugli archi

|V| - esimo rilassamento

184/185

Complessità

Inizializzazione

|V| - 1 passi di rilassamento sugli archi

|V| - esimo rilassamento

O(|E|)

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 92
Page 93: Algoritmi e Programmazione Avanzata - teoriacorsiadistanza.polito.it/on-line/Algoritmi_program... · Grafo come lista delle adiacenze Tempo discreto time Vettore d dei tempi di scoperta

93

185/185

Complessità

Inizializzazione

|V| - 1 passi di rilassamento sugli archi

|V| - esimo rilassamento

T(n) = O(|V||E|)

ovcin
Algoritmi e Programmazione Avanzata Teoria dei grafi
ovcin
© 2003 Politecnico di Torino 93