Algoritmi e Strutture Dati

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

Algoritmi e Strutture Dati

VISITA IL SITO PER ALTRO MATERIALE E GUIDE

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

11.4 Chiusura transitiva

Heap e code di priorità

Esercizi Capitolo 14 - Algoritmi Greedy

Minimo Albero Ricoprente

Esempio : i numeri di Fibonacci

ADT Coda con priorità

UNIVERSITA DEGLI STUDI DI PERUGIA

Progettazione di Algoritmi

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

Informatica Teorica. Macchine a registri

Parte V: Rilassamento Lagrangiano

Algoritmi e strutture dati

Fondamenti di Internet e Reti

Algoritmi e Strutture Dati. HeapSort

Esercizi Capitolo 6 - Alberi binari di ricerca

Alberi binari di ricerca

Cercare il percorso minimo Ant Colony Optimization

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

Algoritmi e Strutture Dati

Claudio Arbib Università di L Aquila. Ricerca Operativa. Reti di flusso

Il problema del commesso viaggiatore: da Ulisse alla Logistica integrata. Luca Bertazzi

Alberto Montresor Università di Trento

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

Prova in itinere di Metodi di Ottimizzazione AA 2007/2008: compito A

Introduzione. Il routing permette la comunicazione tra due nodi differenti anche se non sono collegati direttamente

Strutture di accesso ai dati: B + -tree

Appunti lezione Capitolo 15 Ricerca locale

Depth-first search. Visita in profondità di un grafo Algoritmo Esempio Complessità dell algoritmo Proprietà Ordinamento topologico

Linguaggi e Grammatiche Liberi da Contesto

Mini-Corso di Informatica

Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 5

Alberi Bilanciati di Ricerca

FILE E INDICI Architettura DBMS

Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni.

Il concetto di calcolatore e di algoritmo

Distanza di Edit. Speaker: Antinisca Di Marco Data:

Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Riassunto sui dizionari

INDICE. Vista Libretto Livello Digitale 2. Importazione di dati da strumento 3. Inserisci File Vari 5. Compensazione Quote 5.

Problemi di Percorso. Capitolo dodicesimo

Il pallone di Luca di Marcello Falco

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Algoritmi. a.a. 2013/14 Classe 2: matricole dispari

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Algoritmi e strutture dati. Codici di Huffman

Analisi multicriteria. Analisi multicriteria

Laboratorio di Architettura degli Elaboratori

Corso di Calcolo Numerico

Esercizi per il corso di Algoritmi e Strutture Dati

x 1 x x 1 2 x 2 6 x 2 5 Indici di base Vettore Ammissibile Degenere (si/no) (si/no)

PARTE III MACCHINE A REGISTRI

Algoritmi e Strutture Dati

Diagrammi a blocchi 1

Algoritmo:Determinare quale percentuale rimane di una certa quantità se nel tempo subisce aumenti/decrementi percentuali.

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Lezione 39: la legge di Ohm e i circuiti elettrici

I B+ Alberi. Sommario

SUI SISTEMI DI DISEQUAZIONI IN DUE INCOGNITE

Alberi binari di ricerca

Definizione di metodi in Java

Ripasso di teoria ed esercizi in preparazione al terzo compito. 26 gennaio 2004

Riduzione degli schemi a blocchi

I POLIGONI. DEFINIZIONE: un poligono è una parte limitata di piano definita da una linea chiusa, spezzata, non intrecciata.

PROGRAMMAZIONE STRUTTURATA

Parte 6 Esercitazione sull accesso ai file

Appunti di informatica. Lezione 4 anno accademico Mario Verdicchio

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Prova d esame di Reti Logiche T 10 Giugno 2016

Esercizi di teoria per SPA. punti massimi i tuoi punti

I Grafi ad Albero..Strumenti per aiutare a ragionare

CUTPOINTS BRIDGES BLOCKS BLOCK GRAPHS - CUTPOINT GRAPHS

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort

Algoritmi. Pagina 1 di 5

Prof.ssa Laura Pagnozzi Prof. Ivano Coccorullo. Calcolo Combinatorio

= < < < < < Matematica 1

Strutture Dinamiche. Fondamenti di Informatica

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Esercizi di Algoritmi e Strutture Dati

quadrilatero generico parallelogramma rombo rettangolo quadrato

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi

OpenDataLazio Formia 9 aprile 2015 Laboratorio. Roberto Angeletti

Principi e Metodologie della Progettazione Meccanica

5.16 Aggiornamento automatico Contesti scuola

Sistemi Web per il turismo - lezione 3 -

Grafi. Moreno Marzolla Dip. di Informatica Scienza e Ingegneria Università di Bologna. moreno.marzolla@unibo.it

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

UML I diagrammi implementativi

Esercitazione # 3. Trovate la probabilita che in 5 lanci di un dado non truccato il 3 si presenti

Successioni ricorsive lineari

ESERCITAZIONI DI LOGISTICA. Laurea in Ingegneria Logistica e della Produzione. Corso di Logistica e di Distribuzione

TOP DOWN. Compiti in classe proposti Modulo 1 JUVENILIA SCUOLA. Iacobelli Ajme Marrone

In molte applicazioni sorge il problema di sapere in quanti modi possibili si può presentare un certo fenomeno.

La quantità chimica LA MOLE

Topologie delle reti di telecomunicazione

LE FUNZIONI GONIOMETRICHE

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

Transcript:

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e Strutture Dati Capitolo 2 Minimo albero ricoprente: Algoritmo di Prim

Il problema del calcolo di un Minimum Spanning Tree (MST) Input: un grafo non orientato e pesato G=(V,E,w) Soluzione ammissibile: un albero di copertura (uno spanning tree) di G, ovvero un albero T=(V,F) con F E Misura della soluzione (da minimizzare): costo di T: e F w(e)

Un esempio 7 B 2 6 F A 4 C 00 E 4 0 D 0 9 G

Un esempio T 7 B 2 6 F A 4 C 00 E 4 0 D 0 9 G

Riepilogo: regole del taglio e del ciclo Scegli un taglio del grafo che non è attraversato da archi blu. Tra tutti gli archi non ancora colorati che attraversano il taglio, scegline uno di costo minimo e coloralo di blu (cioè, aggiungilo alla soluzione). Scegli un ciclo nel grafo che non contiene archi rossi. Tra tutti gli archi non ancora colorati del ciclo, scegline uno di costo massimo e coloralo di rosso (cioè, scartalo per sempre).

Algoritmo di Prim (957) (in realtà scoperto nel 90 da Jarník) Idea: mantiene un albero blu T (inizialmente è un vertice arbitrario) Applica n- volte il seguente passo: scegli arco di peso minimo che attraversa il taglio (V(T), V\V(T) e coloralo di blu regola del taglio, da cui segue la correttezza

Esempio 7 B 2 6 F A 4 C E 4 0 D 0 9 G

Esempio 7 B 2 6 F s A 4 C E 4 0 D 0 9 G

Esempio 7 B 2 6 F s A 4 C E 4 0 D 0 9 G

Esempio 7 B 2 6 F s A 4 C E 4 0 D 0 9 G

Esempio 7 B 2 6 F s A 4 C E 4 0 D 0 9 G

Esempio 7 B 2 6 F s A 4 C E 4 0 D 0 9 G

Esempio 7 B 2 6 F s A 4 C E 4 0 D 0 9 G

Esempio 7 B 2 6 F s A 4 C E 4 0 D 0 9 G

Complessità? 7 B 2 6 F s A 4 C E 4 0 D 0 9 G un approccio banale: In ognuno degli n- passi, guardo tutti gli O(m) archi che attraversano il taglio (V(T),V\V(T)) corrente, e scelgo quello di peso minimo costo O(m n) possiamo fare meglio?

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Un approccio più efficiente Per v T, definiamo arco azzurro associato a v un arco (u,v) tale che u T, ed (u,v) ha peso minimo tra tutti gli archi che connettono v ad un vertice in T L algoritmo mantiene in una coda di priorità i nodi non ancora aggiunti alla soluzione, aventi ciascuno per chiave il peso del rispettivo arco azzurro associato (+ nel caso in cui esso non esista); l insieme delle chiavi viene memorizzato anche in un vettore ausiliario d[..n]; Ad ogni passo, viene estratto il minimo dalla coda, aggiungendo il nodo associato alla soluzione, e si procede quindi all eventuale aggiornamento delle chiavi nella coda di priorità 6 Copyright 2004 - The McGraw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Pseudocodice 7 Copyright 2004 - The McGraw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Tempo di esecuzione utilizzando heap Supponendo che il grafo G sia connesso e rappresentato tramite liste di adiacenza, avremo n insert, n deletemin e al più m decreasekey n O() + n O(log n) + O(m) O(log n) = O(m log n) utilizzando heap binari o binomiali (come Kruskal) n O() + n O(log n) + O(m) O() * = O(m+n log n) utilizzando heap di Fibonacci (meglio di Kruskal, che costava O(m log n), se m=ω(n), mentre i due approcci si equivalgono se m=θ(n)). 8 Copyright 2004 - The McGraw - Hill Companies, srl

Un algoritmo per calcolare i minimi antenati comuni in un albero un altra applicazione interessante della struttura dati Union-Find

Il problema del calcolo dei minimi antenati comuni in un albero Input: un albero radicato T=(V,E) un insieme S di archi non dell albero Output: per ogni (u,v) S, vogliamo il minimo antenato comune LCA(u,v) (da Least Common Ancestor) di u e v, ovvero l antenato di u e v che è più lontanto dalla radice 2 LCA(0,5)= 9 0 4 LCA(8,)=4 LCA(9,2)=7 2

l idea eseguo una visita DFS mantengo con insiemi disgiunti le parti di albero già visitate (alberi rossi) il nome di una parte di albero è il nodo più vicino alla radice prima di abbandonare un nodo u posso trovare LCA(u,v) con v già visitato (abbandonato) facendo una find(v) u

(Tarjan 79)

9 0 2

9 0 2

9 0 2

9 0 2

9 0 2

9 0 2

9 0 2

9 0 2

9 0 2

9 0 2

9 0 2

9 0 2

9 0 LCA(9,2)= find(9)=7 2

9 0 LCA(9,2)= find(9)=7 2

9 0 LCA(9,2)= find(9)=7 2

9 0 LCA(9,2)= find(9)=7 2

9 0 LCA(9,2)= find(9)=7 2

9 0 LCA(9,2)= find(9)=7 2

9 0 LCA(9,2)= find(9)=7 2

9 0 LCA(9,2)= find(9)=7 2

9 0 LCA(9,2)= find(9)=7 2 LCA(0,5)= find(0)=

9 0 LCA(9,2)= find(9)=7 2 LCA(0,5)= find(0)=

9 0 LCA(9,2)= find(9)=7 2 LCA(0,5)= find(0)=

9 0 LCA(9,2)= find(9)=7 2 LCA(0,5)= find(0)=

9 0 LCA(9,2)= find(9)=7 2 LCA(0,5)= find(0)=

9 0 LCA(9,2)= find(9)=7 2 LCA(0,5)= find(0)=

9 0 LCA(9,2)= find(9)=7 2 LCA(0,5)= find(0)=

LCA(8,)= find(8)=4 9 0 LCA(9,2)= find(9)=7 2 LCA(0,5)= find(0)=

LCA(8,)= find(8)=4 9 0 LCA(9,2)= find(9)=7 2 LCA(0,5)= find(0)=

LCA(8,)= find(8)=4 9 0 LCA(9,2)= find(9)=7 2 LCA(0,5)= find(0)=

LCA(8,)= find(8)=4 9 0 LCA(9,2)= find(9)=7 2 LCA(0,5)= find(0)=

correttezza calcolo LCA(u,v) quando sto abbandonando u e v è già stato visitato (abbandonato) cosa stanno mantenendo gli insiemi disgiunti? u

analisi della complessità la visita DFS dell albero senza contare le operazioni sulla struttura dati Union-find costa O(n+m) Costo per le operazioni sulla Union-find: n operazioni di makeset n- operazioni union m= S operazioni di find tempo O(n+m+TempoUF(n,m)) tempo O(n+m (n+m,n))

Esercizio Esercizio Esercizio

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano The end