Alberi di copertura minimi

Documenti analoghi
Grafi (non orientati e connessi): minimo albero ricoprente

Minimo albero di copertura

VISITA IL SITO PER ALTRO MATERIALE E GUIDE

Grafi (orientati): cammini minimi

Grafi (non orientati e connessi): minimo albero ricoprente

Algoritmi e strutture dati

Algoritmi e Strutture Dati

Grafi pesati Minimo albero ricoprente

Cammini Minimi. Algoritmo di Dijkstra

Grafi (orientati): cammini minimi

Problema del cammino minimo

Esempi. non. orientato. orientato

Algoritmi e Strutture Dati

Minimo Albero Ricoprente

2.2 Alberi di supporto di costo ottimo

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

Progettazione di Algoritmi

2.2 Alberi di supporto di costo ottimo

Problemi, istanze, soluzioni

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

Alberi e arborescenze di costo minimo

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);

Algoritmi e Strutture Dati

Appunti lezione Capitolo 14 Greedy

Grafi: definizioni e visite

Grafi: ordinamento topologico

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

Algoritmi e Strutture Dati

Progettazione di algoritmi. Classe 3 (matricole congrue 2 modulo 3) Prof.ssa Anselmo. Appello del 15 Novembre Attenzione:

Cammini minimi in grafi:

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

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

Ingegneria degli Algoritmi (II parte pratica)

Progettazione di Algoritmi

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Progettazione di Algoritmi

ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I

Il problema del commesso viaggiatore

Alberi di copertura minimi

VISITA IL SITO PER ALTRO MATERIALE E GUIDE

Grafi: visita generica

Tecniche Algoritmiche /3 Paradigma generativo: tecnica golosa e tecnica Divide-et-impera

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

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Grafi. V = {a, b, c, d} E = {(a, b), (a, c), (c, a), (d, d), (b, d)}

Visite in Grafi BFS e DFS

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

Week #9 Assessment. Practice makes perfect... November 23, 2016

Grafi e reti di flusso

COMPLEMENTI DI SHORTEST-PATH. ASD Fabrizio d'amore

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

Cammini minimi fra tutte le coppie

Algoritmi e strutture dati

Sommario della lezione

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen

Sommario. Rappresentazione dei grafi. Ordinamento topologico. Visita in ampiezza Visita in profondità

Definizioni. Soluzione ottima: migliore soluzione possibile Soluzione ottima localmente: soluzione ottima in un dominio contiguo. Il paradigma greedy

Cammini minimi con sorgente singola

Algoritmi e Strutture Dati Grafi. Daniele Loiacono

T 1 =1. n 6 n. T n =3 T. Esercizio 1 (6 punti)

Minimo sottografo ricoprente. Minimo sottografo ricoprente. Minimo albero ricoprente. Minimo albero ricoprente

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

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

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

UNIVERSITA DEGLI STUDI DI PERUGIA

CUTPOINTS BRIDGES BLOCKS BLOCK GRAPHS - CUTPOINT GRAPHS

Esercizi Capitolo 14 - Algoritmi Greedy

UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa 2. Esercizi sul problema dell assegnamento

Algoritmi Approssimanti per -TSP

Esercizio 1. min. Esercizio 2. Esercizio 3

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

Progettazione di Algoritmi

Grafi e Funzioni di Costo ESERCIZI

Il problema della foresta ricoprente minima radicata

Corso di Perfezionamento

Algoritmi di ordinamento

Appunti di Algoritmi e Strutture Dati. Grafi. Gianfranco Gallizia

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

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15

Algoritmi e Strutture Dati

Coverage. Visto che il coverage si basa su aree dell ambiente che vengono monitorate non è

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla

Processi di cost management - Programmazione multiperiodale

Introduzione al problema dei cammini minimi. Facoltà di Scienze Matematiche Fisiche e Naturali. Prof.ssa Rossella Petreschi

età (anni) manutenzione (keuro) ricavato (keuro)

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

Strutture dati per insiemi disgiunti

Le applicazioni degli algoritmi di visita dei grafi. Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino

METODI DELLA RICERCA OPERATIVA

Esercizio 1. Esercizio 2

Una breve introduzione all implementazione in C di algoritmi su grafo

Richiami di Matematica. 1. Insiemi, relazioni, funzioni. 2. Cardinalitá degli insiemi infiniti e numerabilitá. 3. Notazione asintotica.

Esercizi di Algoritmi e Complessità

Il valore di flusso che si ottiene è

Introduzione ai grafi

Algoritmo basato su cancellazione di cicli

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

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

Pianificazione dei progetti. Alberto Caprara DEIS - Università di Bologna

Ottimizzazione Combinatoria e Reti (a.a. 2007/08)

Transcript:

Alberi di copertura minimi 1

Problema Nella progettazione di circuiti elettronici è spesso necessario collegare i morsetti. Per connettere un insieme di n morsetti si può usare un insieme di n-1 fili elettrici. E preferibile adottare la soluzione che usa la minor quantità di filo elettrico. 2

Soluzione sia G = (V, E) un grafo non orientato e connesso, dove V è l insieme dei morsetti (vertici) ed E è l insieme dei collegamenti tra le coppie di morsetti (archi). Per ogni arco (u, v) si ha un peso w(u, v) che rappresenta la lunghezza del filo (costo) necessaria alla connessione di u e v. Si vuole trovare un sottoinsieme aciclico T E che connetta tutti i vertici del grafo e tale che venga minimizzato il peso totale: w(t) = Σ w (u, v) (u,v) T T è aciclico e collega tutti i vertici. T è un albero di copertura minimo. 3

Esempio di albero di copertura minimo 4 b 8 7 2 c d 9 a 11 i 4 14 e 8 7 6 10 h 1 g 2 f Gli archi in neretto costituiscono l albero di copertura minimo. Esso non è unico (questo mostra che si può usare la strategia greedy ). Individuarne un altro. Quanto è il peso totale? 4

Costruzione di un albero di copertura minimo Algoritmo generico per trovare un albero di copertura minimo per un grafo G(V, E). Ad ogni passo viene determinato un arco sicuro (u, v) t.c. A (u, v) è ancora un sottoinsieme di albero di copertura minimo. GENERIC-MST(G, w){ A= ; while (A non è un albero di copertura){ trova (u, v) sicuro per A; A = A {(u, v)}; } return A; } 5

Definizioni Un taglio (S, V-S) di un grafo non orientato G = (V, E) è una partizione di V. Un arco (u, v) E attraversa il taglio (S, V-S) se uno dei suoi estremi è in S e l altro è in V-S. Un taglio rispetta un insieme A di archi se nessun arco di A attraversa il taglio. Un arco che attraversa un taglio è leggero se il suo peso è minimo tra i pesi degli archi che attraversano quel taglio (vi possono essere più archi leggeri). 6

Esempio 4 b 8 7 2 c d 9 a 11 i 4 14 e S -S 8 h 7 1 6 g 2 f 10 S V-S 7

Teorema (per trovare un arco sicuro) Un arco (u, v) è sicuro se può essere aggiunto ad un albero di copertura minimo A lasciandolo tale. Sia G =(V, E) un grafo non orientato e connesso. Sia A un sottoinsieme di E contenuto in un qualche albero di copertura minimo per G; sia (S, V-S) un taglio che rispetta A, e sia (u, v) un arco leggero che che attraversa (S, V-S). Allora (u, v) è sicuro per A. 8

Corollario Sia G =(V, E) un grafo non orientato e connesso. Sia A un sottoinsieme di E contenuto in un albero di copertura minimo per G, e sia C una componente connessa (albero) nella foresta G A =(V, A). Se (u, v) è un arco leggero che connette C a qualche altra componente G A, allora (u, v) è sicuro per A. 9

Esercizi 1. Sia (u, v) un arco di peso minimo in un grafo G. si dimostri che (u, v) appartiene ad un albero di copertura minimo G. 2. Si mostri che se un arco (u, v) è contenuto in un qualche albero di copertura minimo, allora esso è un arco leggero che attraversa un taglio del grafo. 3. Si mostri che un grafo ha un unico albero di copertura minimo se per ogni taglio del grafo esiste un unico arco leggero che attraversa il taglio. 10

Algoritmo di Kruskal (I) ST-KRUSKAL(G, w){ A= ; for (ogni vertice v V[G]) MAKE-SET(V); ordina gli archi di E per peso w non decrescente for (ogni arco (u, v) E, in ordine di peso non decrescente){ if (FIND-SET(u)!=FIND-SET(v)){ A = A {(u, v)}; UNION(u, v); } } return A; 11

Algoritmo di Kruskal (II) Il tempo di esecuzione per un grafo G = (V, E) dipende dalla realizzazione della struttura di dati per gli insiemi disgiunti. L inizializzazione richiede un tempo O(V), ed il tempo necessario per ordinare gli archi è E*(lg E). Ci sono O(E) operazioni sulla foresta di insiemi disgiunti. Il tempo di esecuzione totale dell algoritmo di Kruskal è O(E*lg E). 12

Algoritmo di Prim (I) MST-PRIM(G, w, r){ Q=V[G]; for (ogni u Q) key[u] = INF; key[r]=0; p[r]=null; while (Q!= ){ u=extract-min(q); for (ogni v Adj[u]){ if (v Q && w(u, v) < key[v]) p[v]=u; key[v]=w(u, v); } } } In tutto l algoritmo l insieme V- contiene tutti i vertici dell albero copertura minimo che si s costruend 13

Algoritmo di Prim (II) L efficienza dell algoritmo dipende da come viene realizzata la coda con priorità Q. Il tempo totale richiesto dall algoritmo di Prim è O(V*lg V + E*lgV) = O(E*lg V). Il tempo di esecuzione dell algoritmo può essere differente utilizzando uno heap di Fibonacci (O(E+V*lgV)), anziché uno heap binario (O(E*lg V)). 14

15