• Non ci sono risultati.

Lezione n°23

N/A
N/A
Protected

Academic year: 2021

Condividi "Lezione n°23"

Copied!
17
0
0

Testo completo

(1)

Lezione n

°

23

- Algoritmo di Kruskal - Algoritmo di Prim

Lezioni di Ricerca Operativa

Corso di Laurea in Informatica

Università di Salerno

(2)

Alberi

Sia G=(V,E) un grafo non orientato e connesso. • G è aciclico se i suoi archi non formano cicli; • Un albero è un grafo connesso ed aciclico;

• Ogni grafo aciclico è in generale l’unione di uno o più alberi e viene detto foresta;

Esempio

grafo aciclico

(foresta)

grafo non aciclico

albero

(3)

Dato un grafo 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)

Sia G=(V,E) un grafo non orientato e connesso.

Un albero ricoprente (spanning tree) di G è un sottografo T di G tale che: T è un albero e contiene tutti i nodi di G.

G=(V,E) un albero ricoprente

Un grafo può avere più alberi ricoprenti.

Alberi Ricoprenti

(5)

Il Problema del Minimo Albero Ricoprente

(Minimum Spanning Tree Problem)

Sia G=(V,E) un grafo non orientato e connesso dove ad ogni arco ei∈E è associato un costo ci.

Il costo di un albero ricoprente T di G è dato dalla somma dei costi degli archi

che lo compongono.

Il problema: determinare l’albero ricoprente di G di costo minimo

Esempio

7 14 4 10 9 17 8 1 3 2 11 12 6 13 16 15 5 1 6 9 2 4 5 3 7 8

(6)

6

● determinare la rete di comunicazione più affidabile;

● determinare la connessione tra n centri a costo minimo (e.g.,

distribuzione del gas);

● progettare i circuiti elettronici per collegare fra loro le diverse

componenti minimizzando la quantità di filo da utilizzare;

Applicazioni

(7)

7

Modello Matematico 1: Subtour Elimination

min

c

ij

x

ij (i, j )∈E

x

ij

= n −1

(i, j )∈E

x

ij

≤ S −1

(i, j )∈E i∈S, j∈S

∀S ⊂ V, S ≥ 3

x

ij

∈ 0,1

{ }

∀ (i,j) ∈ E

(8)

8

Modello Matematico 1: Cut Formulation

{ }

0,1

(i,

j)

E

1

V,

S

1

1

-n

min

\ ,) , ( ) , ( ) , (

Î

"

Î

³

Ì

"

³

=

å

å

å

Î Î Î Î Î ij S V j S ii j E ij E j i ij E j i ij ij

x

S

x

x

x

c

(9)

9 ●

algoritmo di Kruskal (Greedy Algorithm)

algoritmo di Prim

(10)

10

Algoritmo di Kruskal (Minimum Spanning Tree)

Sia G=(V,E) un grafo non orientato con n nodi ed m archi.

1. Ordinare gli archi e1,e2,..., em in modo non decrescente (c1£c2£... £cm ). Siano E0=Æ, ST0=(V, Æ) e k=1.

2. Se (V, Ek-1È{e

k}) è un grafo aciclico allora STk=(V,Ek) con

Ek=Ek-1È{e

k}, altrimenti ek viene scartato, Ek=Ek-1 e STk= STk-1.

3. Se úEkú=n-1 l’algoritmo si arresta ed STk è l’albero ricoprente

(11)

Esempio: n=9 m=17

7

14

4

10

9

17

8

1

3

2

11

12

6

13

16

15

5

1 6 9 2 4 5 3 7 8 (5,8) (7,8) (5,7) (2,4) (7,9) (6,7) (1,2) (1,4) (3,5) (3,4) (1,6) (4,6) (6,9) (2,3) (8,9) (3,9) (4,5) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

(12)

Esempio: n=9 m=17

7

14

4

10

9

17

8

1

3

2

11

12

6

13

16

15

5

1 6 9 2 4 5 3 7 8 (5,8) (7,8) (5,7) (2,4) (7,9) (6,7) (1,2) (1,4) (3,5) (3,4) (1,6) (4,6) (6,9) (2,3) (8,9) (3,9) (4,5) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

(13)

Esempio: n=9 m=17

(5,8) (7,8) (5,7) (2,4) (7,9) (6,7) (1,2) (1,4) (3,5) (3,4) (1,6) (4,6) (6,9) (2,3) (8,9) (3,9) (4,5) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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?

(14)

14

Algoritmo di Prim (Minimum Spanning Tree)

Sia G=(V,E) un grafo non orientato con n nodi ed m archi.

1. Selezionare un qualsiasi vertice vs∈V e porre V0={v

s}, E0=Æ,

k=1.

2. Dato il taglio [Vk-1,V\Vk-1], selezionare l’arco del taglio (v

i,vh)

avente costo minimo e porre Vk=Vk-1È {v

h} e Ek=Ek-1È {(vi,vh)}

1. Se úEkú=n-1 l’algoritmo si arresta ed ST=(Vk,Ek) è l’albero

(15)

15

Esempio: n=6 m=12

7

17

10

10.5

9

7.5

11

8

12

16

9.5

19

d e b c f a

L’algoritmo di Prim O(|E|log|V|) è più efficiente di

quello di Kruskal O(|E|log|E|).

(16)

1

2

3

5 9 6 0 5 9

4

10 11 15

SPT=24

(17)

1

2

3

5 9 6 0 5 9

4

10 11 15

1

2

3

5 9 6

4

10 11

MST=21

SPT=24

Riferimenti

Documenti correlati

Grafo particolare è quello "euleriano", dal matematico Eulero, che nel 1736 lo utilizzò per risolvere il problema dei ponti di Königsberg: un cammino o percorso è detto di

– Ad ogni passo viene aggiunto l'arco di peso minimo che collega un nodo già raggiunto dell'albero con uno non ancora raggiunto. Prim: Shortest connection networks and

liste di adiacenza: una lista di tutti i nodi e, per ciascuno di essi, una lista dei nodi

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

Upon startup a bridge sets all its link to PRE-FORWARDING and claims to be Root and designated bridge on every port When the information about root are expired the bridge tries

Nella realtà questa storia è a volte assurda, ma pur sempre tragica.” Le recensioni della pellicola, sono dunque tutte in conflitto tra loro, un po’ come i membri della

Algoritmo di Kruskal (Minimum Spanning Tree) (1) E’ dato il grafo G=(V,E) con n nodi ed m archi.. Per quali valori di k l’arco (1,4) verrà inserito nella

In questo caso si assume che il campo vettoriale x sia diverso da 0 solo sugli archi di una rete, rappresentata come un grafo G = (V, E) con n nodi e m archi. Se la rete