2.2 Alberi di supporto di costo ottimo

Documenti analoghi
2.2 Alberi di supporto di costo ottimo

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Capitolo 5. Algoritmi di ricerca su grafo. 5.1 Algoritmi di ricerca su grafo

Algoritmo basato su cancellazione di cicli

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

METODI DELLA RICERCA OPERATIVA

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

Problema del cammino minimo

Minimo albero di copertura

Introduzione ai grafi

Problemi, istanze, soluzioni

5.3 Metodo dei piani di taglio

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

Ottimizzazione su grafi: massimo flusso (parte 1) Ottimizzazione su grafi:massimo flusso (parte 1) p. 1/33

Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I)

Algoritmi e strutture dati

Makespan con set-up dipendenti dalla sequenza. 1/s jk /C max

Cammini minimi in grafi:

4.5 Metodo del simplesso

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Grafi pesati Minimo albero ricoprente

4.1 Localizzazione e pianificazione delle base station per le reti UMTS

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 20 giugno 2014

Il problema del commesso viaggiatore

Cammini Minimi. Algoritmo di Dijkstra

Possibile applicazione

Problema dell albero di cammini minimi (SPT, Shortest Path Tree) o problema dei cammini minimi :

11.4 Chiusura transitiva

Progettazione di Algoritmi

Grafi (orientati): cammini minimi

Grafi (orientati): cammini minimi

Cammini minimi. Definizioni. Distanza fra vertici. Proprietà dei cammini minimi. Algoritmi e Strutture Dati

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013

Parte V: Rilassamento Lagrangiano

Gestione della produzione e della supply chain Logistica distributiva

Strutture dati per insiemi disgiunti

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Gestione della produzione e della supply chain Logistica distributiva

Grafi: ordinamento topologico

3.6 Metodi basati sui piani di taglio

Algoritmi e Strutture Dati

3.4 Metodo di Branch and Bound

Introduzione ai grafi. Introduzione ai grafi p. 1/2

Fondamenti di Ricerca Operativa

OTTIMIZZAZIONE LINEARE MULTICRITERIO

Esempi. non. orientato. orientato

Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Metodi di Ottimizzazione per la Logistica e la Produzione

COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04

Ottimizzazione nella Gestione dei Progetti - Esercitazione 1: calcolo degli schedule ottimi

Grafi: visita generica

Algoritmi e Strutture Dati

Luigi Piroddi

Problema del trasporto

Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte III

Cammini minimi fra tutte le coppie

Ricerca Operativa. Claudio Arbib Universitàdi L Aquila. Esercizi di ottimizzazione combinatoria

PROGRAMMAZIONE STRUTTURATA

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Capitolo 3: Ottimizzazione non vincolata parte III. E. Amaldi DEI, Politecnico di Milano

Complementi ed Esercizi di Informatica Teorica II

Grafi diretti. Un grafo diretto (o grafo orientato) G è una coppia (V,E) dove. V è u n i n s i e m e d i nodi (o vertici);

La teoria dei grafi permette di esprimere in modo sistematico le LKT e LKC con i metodi della

Algoritmi greedy. Progettazione di Algoritmi a.a Matricole congrue a 1 Docente: Annalisa De Bonis

Algoritmi di Ricerca

Transcript:

. Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) memorizzazione compatta di sequenze (DNA) diffusione di messaggi segreti... E. Amaldi Fondamenti di R.O. Politecnico di Milano

.. Problema e algoritmo di Prim Esempio Progettazione di una rete di comunicazione che colleghi n città (uffici) a costo minimo n = Modello: Grafo G = (N, E) con n = N, m = E e una funzione di costo c : E c e R, con e = [v,w] E E. Amaldi Fondamenti di R.O. Politecnico di Milano

Proprietà: ) Ogni coppia di città deve poter comunicare sottografo connesso che contiene tutti i nodi ) Costo minimo sottografo senza cicli Problema Dato un grafo G = (N, E) e una funzione di costo, determinare un albero di supporto di costo minimo: min T X e T c e dove X è l insieme di tutti gli alberi di supporto E. Amaldi Fondamenti di R.O. Politecnico di Milano

Teorema A. Cayley ( 889 ) Il numero di alberi di supporto in un grafo completo con n nodi è pari a n n-, per n. Esempio per n = : Richiamo: un albero con n nodi ha n lati E. Amaldi Fondamenti di R.O. Politecnico di Milano

E. Amaldi Fondamenti di R.O. Politecnico di Milano 9 Alcune soluzioni ammissibili: * S = {} T=Ø G Esempio algoritmo di Prim S = {, } * T={[,]} S T

S = {, } S = {,, } T * * T S = {,,, } T * S = N T costo: 9 E. Amaldi Fondamenti di R.O. Politecnico di Milano

Algoritmo di Prim input output G = (N, E) connesso con una funzione di costo Insieme di lati T E tale che G T = (N, T) è un albero di supporto di G BEGIN T:= ; S:={}; WHILE T < n- DO /* un albero con n nodi ha n- lati */ individuare [v,h] δ(s) di costo minimo, con v S e h N \ S; T := T {[v,h]}; S := S {h}; END-WHILE END E. Amaldi Fondamenti di R.O. Politecnico di Milano 7

L algoritmo di Prim è di tipo greedy (ingordo) : ad ogni passo si compie la scelta localmente migliore senza rimettere in discussione le scelte precedenti. N.B.: pochi problemi di ottimizzazione ammettono algoritmi greedy esatti, cioè che forniscono sempre una soluzione ottima E. Amaldi Fondamenti di R.O. Politecnico di Milano 8

.. Implementazione di Prim in O(n ) Struttura dati: k = numero di lati finora selezionati Sottoinsieme T E dei lati selezionati Sottoinsieme S V dei nodi incidenti ai lati selezionati. E. Amaldi Fondamenti di R.O. Politecnico di Milano 9

C[j] = min {c ij : i S } j S ; se [i,j] E, c ij =+ S j S C[j]= pred[j]= pred[ j ] = i% tale che c% = min{ c : }, ij ij i S j S predecessore di j nell albero minimo, j S E. Amaldi Fondamenti di R.O. Politecnico di Milano 0

taglio δ(s) = {[,], [,], [,], [,], [,]} S = {, } T = {[,]} pred[]:= C[]:=c = ( poiché [,] non esiste ) pred[]:= C[]:=c = ( poiché c < c ) pred[]:= C[]:=c = ( poiché c = c ) pred[]:= Poiché C[]=c C[]=c, C[]=c allora h:=; pred[h]:=; S:=S {}; T:=T {[,]} ecc E. Amaldi Fondamenti di R.O. Politecnico di Milano

Algoritmo di Prim in O(n ) BEGIN T := ; S := {}; /* inizializzazione */ FOR j:= TO n DO /* nodi j S */ C[j] := c j ; pred[j] := ; se [,j] E, c j = + END-FOR FOR k:= TO n DO /* selezionare n lati albero */ min := + ; FOR j:= TO n DO /* scegliere lato min in δ(s) */ IF j S AND (C[j] < min) THEN min := C[j]; h := j; END-IF END-FOR S := S {h}; T := T {[pred[h],h]}; /* estendere S e T */ FOR j:= TO n DO /* aggiornare C[j] e pred[j] j S */ IF j S AND (c hj < C[j]) THEN C[j] := c hj ; pred[j] := h; END-IF END-FOR END-FOR END E. Amaldi Fondamenti di R.O. Politecnico di Milano

Esempio S = {} * T ={[,]} C = (+,,,, ) T = C = (+,,,, ) pred = (,,,, ) pred = (,,,, ) * S = {, } S = {,, } ecc... * T = {[,], [,]} C = (+,,,, ) pred = (,,,, ) E. Amaldi Fondamenti di R.O. Politecnico di Milano

Un albero di supporto di costo minimo è definito dai n- lati [ pred[j], j ] con j =,..., n Esempio: Poiché pred =(,,,,) un albero di supporto ottimo è costituito dai lati: [,], [,], [,] e [,] costo: 9 T E. Amaldi Fondamenti di R.O. Politecnico di Milano

Complessità BEGIN <inizio> FOR j:= TO n DO (...) END-FOR inizializzazione richiede O(n) FOR k:= TO n DO FOR j:= TO n DO (...) END-FOR FOR j:= TO n DO (...) END-FOR END-FOR END i due cicli FOR interni richiedono O(n) ciascuno essi vengono eseguiti n - volte in un ciclo esterno Complessità totale: O(n ) E. Amaldi Fondamenti di R.O. Politecnico di Milano

Per grafi sparsi, ove m << n(n-)/, si può usare una struttura dati più sofisticata che consente di ridurre la complessità a O(m log n). E. Amaldi Fondamenti di R.O. Politecnico di Milano

.. Esattezza dell algoritmo di Prim L algoritmo di Prim è esatto, cioè fornisce sempre un albero di supporto di costo minimo. N.B. L esattezza non dipende dalla scelta del primo nodo e del lato di costo minimo selezionato in caso ve ne siano più di uno in δ(s). Mostreremo che ogni lato selezionato è contenuto in un albero ottimo. E. Amaldi Fondamenti di R.O. Politecnico di Milano 7

Lati di diminuzione Sia T un albero di supporto, un lato e T è detto di diminuzione se aggiungendolo a T si crea un ciclo C T {e} ed esiste un lato f C \ {e} con c e < c f f C e c e < c f T c (T {e} \ {f} ) < c(t) = c e ' e ' T E. Amaldi Fondamenti di R.O. Politecnico di Milano 8

Proprietà degli alberi ottimi Se un albero T * è ottimo, non esistono lati di diminuzione c e c f per ogni f C \ {e} f 7 7 7 e T* Altrimenti si potrebbe diminuire il costo di T * scambiando il lato e di diminuzione con qualsiasi f di C con c e < c f! E. Amaldi Fondamenti di R.O. Politecnico di Milano 9

Proposizione Sia S N e un lato e = [v,h] δ (S) di costo minimo, allora esiste un albero ottimo che contiene e. Dim. Per assurdo: Sia T * E un albero ottimo con e T * S v f e h T * Aggiungendo e ciclo C Sia f δ(s) C Se c e =c f allora T* {e} \ {f} ottimo perché stesso costo di T* Se c e < c f, e è un lato di diminuzione quindi T* non è ottimo! E. Amaldi Fondamenti di R.O. Politecnico di Milano 0

.. Algoritmo di Kruskal input G = (N, E) e una funzione di costo output Insieme di lati T * E t.c. G T* = (N, T * ) è un albero di supporto di G Idea: ordinare i lati secondo i costi non decrescenti e aggiungere i lati a condizione che non creino cicli. E. Amaldi Fondamenti di R.O. Politecnico di Milano

E. Amaldi Fondamenti di R.O. Politecnico di Milano Esempio costo: 9 [,], [,], [,], [,], [,], [,],...

Algoritmo di Kruskal BEGIN ordinare i lati di G secondo costi non decrescenti; T* := ; WHILE T* < (n-) DO scegliere un lato e E di costo minimo; E := E \ {e}; IF T* {e} non ha cicli THEN T* := T* {e}; END-WHILE END E. Amaldi Fondamenti di R.O. Politecnico di Milano

Complessità ordinamento m lati: O(m log m) log m < log n = log n O(m log n) verifica se un lato crea un ciclo: in tempo costante perché basta controllare che i due estremi appartengano a due componenti connesse (c.c.) diverse ogni aggiornamento delle etichette delle c.c.: O(n) complessità totale: O(m log n + n ) O(n ) N.B. la complessità può essere ridotta utilizzando una struttura dati più sofisticata E. Amaldi Fondamenti di R.O. Politecnico di Milano

Condizione di ottimalità Un albero T è ottimo se e solo se non esistono lati di diminuzione. Dim. ( ) Se esiste un lato di diminuzione, allora T non è ottimo ( proprietà degli alberi ottimi ) ( ) Se non esiste un lato di diminuzione, allora T è ottimo con operazioni di scambio si può trasformare T * ottimo fornito dall algoritmo di Prim in T senza modificare il costo, T èquindi ottimo E. Amaldi Fondamenti di R.O. Politecnico di Milano

( ) Se per un albero T non esistono lati di diminuzione allora T è ottimo Mostriamo che con semplici operazioni di scambio si può trasformare l albero ottimo T* fornito dall algoritmo di Prim in T senza modificare il costo. Supponiamo che l lati di T* non appartengano a T e mostriamo come con una operazione di scambio si può trasformare T* in un albero con lo stesso costo di T* ma con l - lati che non appartengono a T. Applicando l tali operazioni si ottiene un albero identico a T con c(t )=c(t*), T è quindi ottimo. E. Amaldi Fondamenti di R.O. Politecnico di Milano

Sia a, b, c, d i lati di T * (selezionati dall algo. di Prim) che appartengono anche a T ed e il primo t.c. e T * \T T * a c e b C ϕ d e T Sia C T {e} il ciclo creato aggiungendo e a T Esiste un lato e T \T *, e C ed e adiacente a uno dei lati in comune La scelta nell algoritmo di Prim: c e c e c e = c e L assenza di lati di diminuzione: c e c e Ripetendo T* T* {e } \{e} si verifica dopo l scambi che c(t) = c(t*). E. Amaldi Fondamenti di R.O. Politecnico di Milano 7

L algoritmo di Kruskal è esatto Ogni lato e T * (albero di supporto ottenuto) è stato scartato perché creava un ciclo Inoltre c e costo di tutti i lati di quel ciclo, poiché i lati sono esaminati secondo costi non decrescenti l albero di supporto ottenuto soddisfa la condizione di ottimalità e quindi è di costo minimo cioè non esistono lati di diminuzione E. Amaldi Fondamenti di R.O. Politecnico di Milano 8

Verifica ottimalità La condizione di ottimalità permette di verificare se un dato albero di supporto G T è effettivamente ottimo: G=(N,E) G T =(N,T) e c(t)=9 basta verificare che ogni lato e E \ T non è un lato di diminuzione. E. Amaldi Fondamenti di R.O. Politecnico di Milano 9

.. Applicazione indiretta Diffusione ottimale di un messaggio: Data una rete di comunicazione G = (N, E) ove i lati [i, j] E indicano quali coppie di nodi possono comunicare direttamente. Si conosce la probabilità p ij, 0 p ij, di intercettazione di un messaggio lungo ogni lato [i, j] E Problema Come trasmettere a tutti i nodi un messaggio segreto minimizzando la probabilità che sia intercettato? E. Amaldi Fondamenti di R.O. Politecnico di Milano 0

Minimizzare probabilità di intercettazione (lungo un lato) Massimizzare probabilità di non intercettazione max ( p ) [, i j] T ij T èun albero di supporto diffusione verso tutti i nodi connesso aciclico per evitare ridondanza e una probabilità di intercettazione più elevata E. Amaldi Fondamenti di R.O. Politecnico di Milano

Applicando una funzione monotona crescente, ad esempio log(.), non cambiano le soluzioni ottime ( solo il valore ) max log( ( p )) max log( p ) ij [, i j] T [, i j] T ij Si adattano in modo ovvio gli algoritmi di Prim e Kruskal E. Amaldi Fondamenti di R.O. Politecnico di Milano