• Non ci sono risultati.

Lezione n° 19

N/A
N/A
Protected

Academic year: 2021

Condividi "Lezione n° 19"

Copied!
13
0
0

Testo completo

(1)

Lezione n° 19

-  Algoritmo di Kruskal -  Algoritmo di Prim

Lezioni di Ricerca Operativa

Corso di Laurea in Informatica Università di Salerno

Prof. Cerulli – Dott.ssa GentiliDott. Carrabs

(2)

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

(3)

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 è connesso e |E|=|V|-1

(4)

Dato un albero T=(V,E), si definisce foglia di T un qualsiasi nodo v∈V tale che⎥δ(v)⎥=1.

Se ⎥V⎥ ≥2 allora esistono almeno due foglie.

foglie di un albero

(5)

Dato G=(V,E), si dice albero ricoprente (spanning tree) di G un albero T=(V’,E’) con V’=V ed E’⊆E (è un sottografo di G)

un albero ricoprente

(6)

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.

Esempio 7

14 4 10

17 9 8

3 1 2 11 12

6

16 5 15

(7)

Esempi di applicazioni:

  determinare la rete di comunicazione più affidabile

  determinare la connessione tra n centri a costo minimo (e.g., distribuzione del gas)

Due algoritmi:

  l’algoritmo di Kruskal (Greedy Algorithm)

  l’algoritmo di Prim

(8)

Algoritmo di Kruskal (Minimum Spanning Tree) (1) E’ dato il grafo G=(V,E) con n nodi ed m archi.

Si ordinano gli archi e1, e2,..., em in modo che i costi associati non siano decrescenti (c1≤c2≤... ≤cm ).

Si pone E0=∅, k=1 ed il grafo ST0=(V, ∅)

(2) Se (V, Ek-1∪{ek}) è un grafo aciclico allora STk=(V,Ek) con Ek=Ek-1∪{ek}, altrimenti Ek=Ek-1 e STk= STk-1

(3) Se ⎥Ek⎥=n-1 l’algoritmo si ferma ed STk è l’albero ricoprente cercato, altrimenti k=k+1 e continuare col passo (2).

(9)

Esempio: n=9 m=17

7

14

4 10

17 9 8

1 3

2

11 12

6

13

16

5 15

1

6

9 2

4

5

3

7

8

(10)

Esempio: n=9 m=17

7

14

4 10

17 9 8

1 3

2

11 12

6

13

16

5 15

1

6

9 2

4

5

3

7

8

(11)

Esempio: n=9 m=17

Ø  Sia 4+k il nuovo peso dell’arco (2,4) nel grafo.

Per quali valori di k l’albero di copertura minimo non cambia?

Ø  Sia 8+k il nuovo peso dell’arco (1,4) in G. Per quali valori di k l’arco (1,4) verrà inserito nella soluzione ottima?

(12)

Algoritmo di Prim (Minimum Spanning Tree) (1) E’ dato il grafo G=(V,E) con n nodi ed m archi.

Si sceglie un vertice arbitrario di G, V0={vs}, si pone E0=∅ e k=1

(2) Si connette un nodo vi∈Vk-1 con un nodo vh∈V- Vk-1 tale che il costo dell’arco (vi,vh) sia

e si pone Vk=Vk-1 {vh} e Ek=Ek-1 {(vi,vh)}

(3) Se ⎥Ek⎥=n-1 l’algoritmo si ferma e ST=(Vk,Ek) è l’albero ricoprente cercato, altrimenti k=k+1 e

[ ]

c v vi h c v v

vj Vk

ve V Vk vj ve E

( , ) min ( ,j e )

, ( , )

=

∈ −

1 1

(13)

Esempio: n=6 m=12

7

17 10

10.5 9

7.5

11 8

12

16

9.5

19

Riferimenti

Documenti correlati

[r]

[r]

[r]

Quindi tutti i minimum spanning tree di G avranno lista dei pesi uguale

”determinare una matrice P invertibile ed una matrice diagonale D (quadrate di ordine n, ad entrate reali) tali che A = P DP −1 ” diciamo in breve ”diagonalizzare la matrice

3) Scrivere un algoritmo di verifica per il problema di decidere se un grafo di n vertici, rappresentato con una matrice binaria M, contiene una clique di k

Sia k il numero di eccedenze strette di 0 (peraltro uguale al numero di eccedenze strette di ). Proseguendo, dopo esattamente k passaggi di mano tutti hanno il loro diploma.

Applicando il metodo di Fourier-Motzkin dire se il seguente sistema lineare ammette un’unica soluzione ovvero ammette infinite soluzioni ovvero non ammette