Grafi (orientati): cammini minimi

Размер: px
Начинать показ со страницы:

Download "Grafi (orientati): cammini minimi"

Транскрипт

1 .. Grafi (orientati): cammini minimi Una presentazione alternativa (con ulteriori dettagli)

2 Un algoritmo greedy per calcolare i cammini minimi da un vertice sorgente in un grafo orientato e pesato, senza cicli di peso negativo raggiungibili dal sorgente. Definiamo distanza di un vertice u da un vertice v: δ(v, u), in un grafo orientato e pesato, il peso di un cammino di peso minimo tra tutti i cammini da v a u. δ(v, u) = min {W(p) p cammino da v a u} dove W(p) è la somma dei pesi degli archi che formano il cammino. N.B. δ(v, u) è ben definita solo se nessun cammino tra v e u contiene un ciclo di peso negativo

3 Input: G = <V, E> grafo orientato e pesato, w: E R funzione peso, s V, G senza cicli di peso negativo raggiungibili da s Output: v V[G], l attributo d[v] indica la distanza di v dal vertice sorgente: d[v] = δ(s, v) Per costruire un algoritmo greedy, dobbiamo individuare l insieme di oggetti e definire per essi un grado di appetibilità. Si può pensare ai vertici come agli oggetti tra i quali scegliere; mantenendo per ogni vertice v, nell attributo d[v] una stima (maggiore o uguale) della distanza di v da s. Un vertice risulterà tanto più appetibile quanto minore è la stima della sua distanza dal sorgente stesso.

4 L idea dell algoritmo è la seguente: Inizialmente si stima la distanza di ogni vertice da s uguale a, tranne che per s stesso, di cui si conosce la distanza vera: δ(s, s) = 0. Si definisce pertanto d[s] = 0 Si costruisce poi un albero, di radice s, in cui viene inserito un vertice per volta: il più appetibile. L albero è memorizzato implicitamente come l insieme dei suoi archi < π[v], v> Quando un vertice u è inserito nell albero, si aggiornano le stime delle distanze dei vertici v ad esso adiacenti, in quanto potrebbe esitere un cammino da s a v, attraverso il vertice u, meno pesante del cammino da s a v considerato fino a quel momento.

5 Esempio 3 A 2 C B E 1 D Se il vertice sorgente è A, si ha inizialmente: d[a] = 0, d[b] = d[c] = d[d] = d[e] = La strategia greedy sceglie percio il vertice A. Da A sono raggiungibili con un arco i vertici B, C e D. Si possono modificare pertanto le stime delle loro distanze da A. d[b] = 3, d[c] = 2, d[d] = 4, mentre resta d[e] =

6 3 A 2 C B E 1 D Scegliendo C si scopre il cammino A - C - D, ma d[d] non viene modificata in quanto il suo peso (5) è maggiore del peso del cammino A - D (di peso 4). La scelta è ora tra i vertici B, D ed E, con d[b] = 3, d[d] = 4, d[e] =, e la stategia greedy impone di scegliere B. Si scopre così il cammino A - B - E e diventa d[e] = 6. La scelta di D permette infine di ottenere d[e] = 5, ed E sarà l ultimo vertice scelto.

7 Usiamo il secondo schema greedy e scriviamo una prima approssimazione dell algoritmo, dove S è l insieme dei vertici già considerati: Dijkstra (G, W, s) for ogni u V do d[u] π[u] nil d[s] 0 S Φ while S V[G] do u vertice con d minore tra quelli non ancora scelti S S {u} for ogni v ADJ[u] do {valuta le appetibilità iniziali dei vertici} {ci sono elementi da scegliere} if v S and d[v] > d[u] + W(u, v) then d[v] d[u] + W(u, v) π[v] u {scegli il vertice più appetibile} {aggiorna le appetibilità dei vertici}

8 Non sempre la strategia funziona! Ad esempio: 5 A 2 C B E 1 D Se il vertice sorgente è A, dopo le opportune modifiche alle stime delle distanze, vengono scelti, nell ordine: A (quando: d[a] = 0, d[b] = d[c] = d[d] = d[e] = ) C (quando: d[b] = 5, d[c] = 2, d[d] = 3, d[e] = ) D (quando: d[b] = 5, d[d] = 3, d[e] = ) E (quando: d[b] = 5, d[e] = 4) B (quando: d[b] = 5) Ma δ(a, E) = 2, mentre d[e] = 4

9 Nell esempio considerato è facile capire che il non corretto comportamento è dovuto alla presenza dell arco <B, E>, il cui peso è negativo. Allora, se la strategia greedy funziona, essa funziona solo in assenza di archi di peso negativo. Riscriviamo l algoritmo di Dijkstra aggiungendo come precondizione la richiesta che la funzione peso non assuma valori negativi. {G = <V, E> grafo orientato e pesato & s V & & W: E R + {0}}

10 {G = <V, E> grafo orientato e pesato & s V & & W: E R + {0}} Dijkstra (G, W, s) for ogni u V do d[u] π[u] nil d[s] 0 S Φ while S V[G] do Usiamo una coda con priorità u vertice con d minore tra quelli non ancora scelti S S {u} for ogni v ADJ[u] do if v S and d[v] > d[u] + W(u, v) then d[v] d[u] + W(u, v) π[v] u

11 {G = <V, E> grafo orientato e pesato & s V & & W: E R + {0}} Dijkstra (G, W, s) Q V[G] for ogni u V do d[u] π[u] nil d[s] 0 S Φ while S Q Φ V[G] do u vertice Extract-min con d (Q) minore minimatra quelli non ancora scelti S S {u} for ogni v ADJ[u] do if v QS and d[v] > d[u] + W(u, v) then d[v] d[u] + W(u, v) π[v] u

12 Ricorda un altro algoritmo che conosciamo L algoritmo di PRIM

13 MST-Prim (G, W, r) for ogni u Q do key[u] π[r] nil key[r] 0 Q V[G] while Q Φdo u Extract-min(Q) MST-Prim (G, W, r) for ogni u Q do key[u] π[u] nil key[r] 0 S Φ Q V[G] while Q Φdo u Extract-min(Q) for ogni v Adj[u] do if v Q e W(u, v) < key[v] then key[v] W(u, v) π[v] u S S {u} for ogni v Adj[u] do if v Q e W(u, v) < key[v] then key[v] W(u, v) π[v] u

14 ST-Prim (G, W, r) for ogni u Q do key[u] Dijkstra (G, W, s) for ogni u Q do d[u] π[u] nil key[r] 0 S Φ Q V[G] while Q Φdo u Extract-min(Q) S S {u} for ogni v Adj[u] do if v Q e W(u, v) < key[v] then key[v] W(u, v) π[v] u π[u] nil d[r] 0 S Φ Q V[G] while Q Φdo u Extract-min(Q) S S {u} for ogni v ADJ[u] do if v Q and d[u] + W(u, v) < d[v then d[v] d[u] + W(u, v) π[v] u

15 La complessità dell algoritmo di Dijkstra è pertanto la stessa dell algoritmo di Prim: coda realizzata con heap binario: O(E logv) coda realizzata con un heap di Fibonacci: O(E + V logv) Dobbiamo ancora dimostrare che l algoritmo è corretto

16 {G = <V, E> grafo orientato e pesato & s V & & W: E R + {0}} Dijkstra (G, W, s) for ogni u V do d[u] π[u] nil d[s] 0 Q V[G] S Φ { t S: d[t] = δ(s, t) & S Q = V[G] & S Q = Φ} while Q Φdo u Extract-min (Q) S S {u} for ogni v ADJ[u] do if v Q and d[u] + W(u, v) < d[v] then d[v] d[u] + W(u, v) π[v] u { t V[G] : d[t] = δ(s, t)}

17 Proprietà 1. Un sottocammino di un cammino minimo è minimo. Dimostazione. Siano x e y due vertici qualunque in un cammino minimo p da u a v: p 1 p 2 p 3 p = u x y v = p 1 p 2 p 3 W(p) = W(p 1 ) + W(p 2 ) + W(p 3 ) Se il sottocammino p 2 da x a y non fosse minimo, ne esisterebbe un altro p 2 di peso inferiore. In tal caso il cammino p = p 1 p 2 p 3 sarebbe un cammino da u a v con W(p ) < W(p). Assurdo.

18 Proprieta` 2. Le seguenti asserzioni: 2.1 v V[G]: v S d[v] non viene modificata 2.2 v Q: π[v] nil π[v] S 2.3 v V[G] - {s}: d[v] π[v] nil 2.4 v V[G] - {s}: d[v] d[v] = d[π[v]] + W(π[v], v) sono invarianti del ciclo while. Dimostrazione. Ovvia esaminando il corpo del while. u Extract-min (Q) S S {u} for ogni v ADJ[u] do if v Q and d[u] + W(u, v) < d[v] then d[v] d[u] + W(u, v) π[v] u

19 Proprieta` 3. La seguente asserzione: v S: d[v] esiste un cammino da s a v in G e` invariante del ciclo while. Dimostrazione. ( ) Supponiamo l asserzione vera e dimostriamo che, se per il vertice u estratto dalla coda d[u], il cammino esiste. Per ipotesi induttiva esiste un cammino da s a π[u]. Allora il cammino da s a π[u] piu` l arco < π[u], u> costituisce un cammino da s a u. ( ) Se u viene estratto da Q con d[u] =, allora (*) tutti i vertici t in Q hanno d[t] =. Supponiamo che tra s e u vi sia almeno un cammino: s v 1 v 2... v k-1 v k u. Allora, tutti i vertici v i sul cammino devono avere d[v i ] = (se v l avesse d[v l ], allora per (*) v l S, quindi anche v i+1 avrebbre d[v i+1 ] ). Ma questo è assurdo perché d[s] = 0.

20 Dimostriamo ora che il predicato t S: d[t] = δ(s, t) & S Q = V[G] & S Q = Φ è un invariante del ciclo while. Il predicato è vero all inizio poichè S è vuoto e Q = V[G]. Supponiamo che sia vero quando l albero è stato costruito parzialmente, e dimostriamo che per il nuovo vertice u estratto da Q, d[u] = δ(s, u). s r x Per ipotesi induttiva t S: d[t] = δ(s, t).

21 Sia u il vertice estratto da Q. r s u x Si hanno due casi: 1. d[u] Sia π[u] = r (proprietà 2.3 ). Sappiamo allora (proprietà 2.2) che r S, cioè all albero e che (proprietà 2.4) d[u] = d[r] + W(r, u). Supponiamo che tra s e u esista un cammino di peso minore di d[u]; esso deve contenere un arco tra un vertice in S e uno in Q: <x, y>. y

22 Questo cammino tra s e u può allora essere visto come la concatenazione di tre cammini s x y u Se s x y u è minimo, anche s x y è minimo (proprietà 1), quindi d[y], che è il suo peso, è uguale a δ(s, y). W(s x y u) = W(s x y) + W(y u) = d[y] + W(y u) d[y] (W(y u) 0 perchè la funzione peso non può assumere valori negativi) d[u] ( perchè u è il vertice estratto da Q) d[u] = δ(s, u)

23 2. d[u] = Se il vertice u viene estratto quando d[u] = allora non esiste nessun cammino tra s e u (proprietà 3), cioè d[u] = = δ(s, u) t (S {u}): d[t] = δ(s, t) & (S {u}) (Q - {u}) = V[G] & (S {u}) (Q - {u}) = Φ

24 Riepilogo Algoritmo di Dijkstra per il calcolo di cammini minimi a sorgente singola, in un grafo orientato senza pesi negativi. Relazione con l algoritmo di Prim per il calcolo del minimo albero ricoprente in un grafo non orientato.

Cammini Minimi. Algoritmo di Dijkstra

Cammini Minimi. Algoritmo di Dijkstra Cammini Minimi Algoritmo di Dijkstra Cammino in un grafo Dato un grafo G=(V,E), un Cammino (Percorso) in G è un insieme di vertici v 1, v 2,.., v k tali che (v i, v i+1 ) E v 1 v 2 v 3 v k In un grafo

Подробнее

Problema del cammino minimo

Problema del cammino minimo Algoritmi e Strutture di Dati II Problema del cammino minimo Un viaggiatore vuole trovare la via più corta per andare da una città ad un altra. Possiamo rappresentare ogni città con un nodo e ogni collegamento

Подробнее

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

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio Algoritmi Greedy Tecniche Algoritmiche: tecnica greedy (o golosa) Idea: per trovare una soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente Un esempio Input: lista di interi

Подробнее

Minimo albero di copertura

Minimo albero di copertura apitolo 0 Minimo albero di copertura efinizione 0.. ato un grafo G = (V, E) non orientato e connesso, un albero di copertura di G è un sottoinsieme T E tale che il sottografo (V, T ) è un albero libero.

Подробнее

Grafi: visita generica

Grafi: visita generica .. Grafi: visita generica Una presentazione alternativa (con ulteriori dettagli) Algoritmi di visita Scopo: visitare tutti i vertici di un grafo (si osservi che per poter visitare un vertice occorre prima

Подробнее

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore

Подробнее

Grafi (orientati): cammini minimi

Grafi (orientati): cammini minimi Grafi (orientati): cammini minimi Una breve presentazione Definizioni Sia G=(V,E) un grafo orientato con costi w sugli archi. Il costo di un cammino π= è dato da: Un cammino minimo tra

Подробнее

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Introduzione ai grafi Grafi: Definizione e Algoritmi di visita Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2007/08 Introduzione ai

Подробнее

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Cammini minimi Definizioni Sia G = (V,E) un grafo orientato pesato sugli archi. Il costo di un cammino π = è dato da: Un cammino minimo tra una coppia di

Подробнее

Visite in Grafi BFS e DFS

Visite in Grafi BFS e DFS Visite in Grafi BFS e DFS Visita di un Grafo Obiettivo: Visitare una sola volta tutti i nodi del grafo. Es.: visitare un porzione del grafo del Web Difficoltà: Presenza di cicli: Marcare i nodi visitati

Подробнее

Cammini minimi fra tutte le coppie

Cammini minimi fra tutte le coppie Capitolo 12 Cammini minimi fra tutte le coppie Consideriamo il problema dei cammini minimi fra tutte le coppie in un grafo G = (V, E, w) orientato, pesato, dove possono essere presenti archi (ma non cicli)

Подробнее

Cammini minimi in grafi:

Cammini minimi in grafi: Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Cammini minimi in grafi: una trilogia Cammini minimi in grafi: Episodio III: la fine della trilogia Input: nelle puntate

Подробнее

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati 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

Подробнее

Grafi pesati Minimo albero ricoprente

Grafi pesati Minimo albero ricoprente Algoritmi e Strutture Dati Definizioni Grafi pesati Minimo albero ricoprente Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è un albero; T contiene

Подробнее

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 13 Cammini minimi: Algoritmo di Dijkstra (*) (ACM in grafi diretti e non diretti senza archi di peso negativo) Punto della situazione Algoritmo basato sull ordinamento

Подробнее

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

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 . Cammini ottimi E. Amaldi Fondamenti di R.O. Politecnico di Milano .. Cammini minimi e algoritmo di Dijkstra Dato un grafo orientato G = (N, A) con una funzione di costo c : A c ij R e due nodi s e t,

Подробнее

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

Sommario. Rappresentazione dei grafi. Ordinamento topologico. Visita in ampiezza Visita in profondità Visite Grafi Sommario Rappresentazione dei grafi Visita in ampiezza Visita in profondità Ordinamento topologico Visita in ampiezza La visita in ampiezza breadth-first-search (BFS) di un grafo dato un vertice

Подробнее

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

Cammini minimi. Definizioni. Distanza fra vertici. Proprietà dei cammini minimi. Algoritmi e Strutture Dati Algoritmi e Strutture Dati Definizioni Sia G=(V,E) un grafo orientato con costi w sugli archi. Il costo di un cammino π= è dato da: Cammini minimi Un cammino minimo tra una coppia di

Подробнее

Grafi: ordinamento topologico

Grafi: ordinamento topologico .. Grafi: ordinamento topologico Che cosa e e come si calcola Che cosa e un ordinamento topologico F. Damiani - Alg. & Lab. 04/05 Una definizione di ordinamento topologico Definizione. Funzione σ: V {1,

Подробнее

Esempi. non. orientato. orientato

Esempi. non. orientato. orientato Definizione! Un grafo G = (V,E) è costituito da un insieme di vertici V ed un insieme di archi E ciascuno dei quali connette due vertici in V detti estremi dell arco.! Un grafo è orientato quando vi è

Подробнее

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

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa Alberi di copertura Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo, Pisa [email protected] M. Passacantando TFA 0/ - Corso di Ricerca Operativa Università di Pisa / 9 Definizioni

Подробнее

Progettazione di Algoritmi

Progettazione di Algoritmi Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 0/06/06 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai

Подробнее

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo . Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) memorizzazione compatta di sequenze (DNA) diffusione

Подробнее

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

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 di Dati II 2 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); E µ V V è u n i n s i e m e d i archi. Denotiamo

Подробнее

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

Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte III Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte III Applicazioni di DFS Due prolemi: calcolare l ordinamento topologico indotto da un grafo aciclico.

Подробнее

Grafi e reti di flusso

Grafi e reti di flusso Grafi e reti di flusso Molti problemi di ottimizzazione sono caratterizzati da una struttura di grafo: in molti casi questa struttura emerge in modo naturale, in altri nasce dal particolare modo in cui

Подробнее

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

Introduzione. Il routing permette la comunicazione tra due nodi differenti anche se non sono collegati direttamente Routing Introduzione Il livello 3 della pila ethernet ha il compito di muovere i pacchetti dalla sorgente attraversando più sistemi Il livello di network deve quindi: Scegliere di volta in volta il cammino

Подробнее

Introduzione ai grafi

Introduzione ai grafi TFA A048 Anno Accademico 2012-13 Outline Cenni storici sui grafi Nozioni introduttive: cammini, connessione, alberi, cicli Cammini di costo minimo Origini storiche La nascita della teoria dei grafi risale

Подробнее

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo . Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) protocolli reti IP memorizzazione compatta di

Подробнее

Problemi, istanze, soluzioni

Problemi, istanze, soluzioni lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un

Подробнее

Algoritmi e Strutture Dati Grafi. Daniele Loiacono

Algoritmi e Strutture Dati Grafi. Daniele Loiacono lgoritmi e Strutture ati Grafi Riferimenti 2 Questo materiale è tratto dalle trasparenze del corso lgoritmi e Strutture ati del prof. lberto Montresor dell Università di Trento. (http://www.dit.unitn.it/~montreso/asd/index.shtml)

Подробнее

Dati e Algoritmi 1: A. Pietracaprina. Grafi (II parte)

Dati e Algoritmi 1: A. Pietracaprina. Grafi (II parte) Dati e Algoritmi 1: A. Pietracaprina Grafi (II parte) 1 Breath-First Search (algoritmo iterativo) Si assume una rappresentazione tramite liste di adiacenza. L ordine con cui si visitano i vicini di un

Подробнее

L algoritmo di Dijkstra

L algoritmo di Dijkstra L algoritmo di Dijkstra Sebastiano Vigna March 2, 200 Introduzione Supponiamo di assegnare a ciascuno degli archi a di un grafo orientato G un certo peso intero e positivo p a. Ai cammini (orientati) nel

Подробнее

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

Minimo sottografo ricoprente. Minimo sottografo ricoprente. Minimo albero ricoprente. Minimo albero ricoprente Minimo sottografo ricoprente Minimo sottografo ricoprente Dato un grafo connesso G = (V, E) con costi positivi sugli archi c e, un minimo sottografo ricoprente è un insieme di archi E E tale che: G = (V,

Подробнее

Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi

Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 (Esercizio C-14.34 del testo [GTG14]) Sia G = (V, E) un grafo non diretto con n =

Подробнее

Progettazione di Algoritmi

Progettazione di Algoritmi Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 1/01/016 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai

Подробнее

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

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

Подробнее

Grafi e gruppo fondamentale di un grafo

Grafi e gruppo fondamentale di un grafo Grafi e gruppo fondamentale di un grafo Note per il corso di Geometria IV (relative alla parte dei 6 crediti) Milano, 2010-2011, M.Dedò Come trovare un grafo omotopicamente equivalente all'oggetto 3d raffigurato

Подробнее

Progettazione di algoritmi

Progettazione di algoritmi Progettazione di algoritmi Discussione dell'esercizio [labirinto] Nel testo dell'esercizio abbiamo considerato come lunghezza del percorso il numero di bivi ma possiamo stimare meglio la lunghezza reale

Подробнее

Algoritmi e Strutture di Dati (3 a Ed.) Algoritmo dei tre indiani. Alan Bertossi, Alberto Montresor

Algoritmi e Strutture di Dati (3 a Ed.) Algoritmo dei tre indiani. Alan Bertossi, Alberto Montresor Algoritmi e Strutture di Dati ( a Ed.) Algoritmo dei tre indiani Alan Bertossi, Alberto Montresor Vediamo a grandi linee un algoritmo proposto da Kumar, Malhotra e Maheswari (978) come raffinamento di

Подробнее

Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.

Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1. Esercizio 1 E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1 livello 0 FB = -1 FB = -1 livello 1 FB = -1 livello 2 livello 3 L altezza è 3, il minimo si trova nel

Подробнее

11.4 Chiusura transitiva

11.4 Chiusura transitiva 6 11.4 Chiusura transitiva Il problema che consideriamo in questa sezione riguarda il calcolo della chiusura transitiva di un grafo. Dato un grafo orientato G = hv,ei, si vuole determinare il grafo orientato)

Подробнее

Grafi: definizioni e visite

Grafi: definizioni e visite Grafi: definizioni e visite Grafi (non orientati) Grafo (non orientato): G = (V, E) V = nodi (o vertici) E = archi fra coppie di nodi distinti. Modella relazioni fra coppie di oggetti. Parametri della

Подробнее

Problemi di ordinamento

Problemi di ordinamento Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata

Подробнее

Esercizio 1. Esercizio 2

Esercizio 1. Esercizio 2 A-2 a PI Ricerca Operativa 1 Seconda prova intermedia La Pharmatix è un azienda di Anagni che produce due principi attivi, A e B, che consentono un profitto per grammo venduto di 20 e 30 euro rispettivamente.

Подробнее

Esercizi su alberi binari

Esercizi su alberi binari Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica

Подробнее

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 20 giugno 2014 A Ricerca Operativa 1 Seconda prova intermedia Un tifoso di calcio in partenza da Roma vuole raggiungere Rio De Janeiro per la finale del mondiale spendendo il meno possibile. Sono date le seguenti disponibilità

Подробнее

Dai ponti di Königsberg al postino cinese

Dai ponti di Königsberg al postino cinese Dai ponti di Königsberg al postino cinese Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo, Pisa [email protected] M. Passacantando TFA 2012/1 - Corso di Ricerca Operativa Università

Подробнее

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

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013 A UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa Seconda prova intermedia 7 giugno 0 Nome: Cognome: Matricola: Orale /06/0 ore aula N Orale 0/07/0 ore aula N

Подробнее

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

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica (IN0 Fondamenti) Grafi e alberi: introduzione Marco Liverani ([email protected])

Подробнее

Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm

Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio 6 aprile 2016 1 Teorema di Kleene 2 3 o 1 o 3 o 8 Teorema di Kleene Vale la seguente equivalenza: L 3 L FSL L REG Dimostrazione.

Подробнее

METODI DELLA RICERCA OPERATIVA

METODI DELLA RICERCA OPERATIVA Università degli Studi di Cagliari FACOLTA' DI INGEGNERIA CORSO DI METODI DELLA RICERCA OPERATIVA Dott.ing. Massimo Di Francesco ([email protected]) i i Dott.ing. Maria Ilaria Lunesu ([email protected])

Подробнее

Algoritmo basato su cancellazione di cicli

Algoritmo basato su cancellazione di cicli Algoritmo basato su cancellazione di cicli Dato un flusso ammissibile iniziale, si costruisce una sequenza di flussi ammissibili di costo decrescente. Ciascun flusso è ottenuto dal precedente flusso ammissibile

Подробнее

COMPLEMENTI DI SHORTEST-PATH. ASD Fabrizio d'amore

COMPLEMENTI DI SHORTEST-PATH. ASD Fabrizio d'amore COMPLEMENTI DI SHORTEST-PATH ASD 2016-17 Fabrizio d'amore problemi di shortest-path (SP) grafo di riferimento G=(V,E) semplice/orientato pesato pesi non negativi pesi arbitrari, ma no cicli a peso negativo

Подробнее

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

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Подробнее

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

Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I) Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I) Algoritmi greedy Gli algoritmi per problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Подробнее

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

Problema dell albero di cammini minimi (SPT, Shortest Path Tree) o problema dei cammini minimi : Per almeno una delle soluzioni ottime { P i, i r } del problema generalizzato, l unione dei cammini P i forma un albero di copertura per G radicato in r e orientato, ossia un albero la cui radice è r i

Подробнее

Progettazione di Algoritmi

Progettazione di Algoritmi Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 06/07/2016 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via

Подробнее

In questa lezione Alberi binari di ricerca: la cancellazione

In questa lezione Alberi binari di ricerca: la cancellazione In questa leione Alberi binari di ricerca: la cancellaione 1 L algoritmo di Hibbard per cancellare (1962) Sia il nodo da cancellare: 1) è una foglia: si rimuove 2) ha un solo figlio x: si rende x figlio

Подробнее

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Подробнее

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 27 marzo 2012 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Подробнее

Alberi ed Alberi Binari

Alberi ed Alberi Binari Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,

Подробнее

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

Introduzione ai grafi. Introduzione ai grafi p. 1/2 Introduzione ai grafi Introduzione ai grafi p. 1/2 Grafi Un grafo G é costituito da una coppia di insiemi (V,A) dove V é detto insieme dei nodi e A é detto insieme di archi ed é un sottinsieme di tutte

Подробнее

Strutture dati per insiemi disgiunti

Strutture dati per insiemi disgiunti Strutture dati per insiemi disgiunti Servono a mantenere una collezione S = {S 1, S 2,..., S k } di insiemi disgiunti. Ogni insieme S i è individuato da un rappresentante che è un particolare elemento

Подробнее

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro

Подробнее

ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I

ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I Esercizio 1 Dati n oggetti ed un contenitore, ad ogni oggetto j (j = 1,, n) sono associati un peso p j ed un costo c j (con p j e c j interi positivi). Si

Подробнее

Programmazione logica e PROLOG. Esercitazione 1. AI - Carlucci Aiello & Nardi, 2007 Esercitazione 1 0

Programmazione logica e PROLOG. Esercitazione 1. AI - Carlucci Aiello & Nardi, 2007 Esercitazione 1 0 Programmazione logica e PROLOG Esercitazione 1 AI - Carlucci Aiello & Nardi, 2007 Esercitazione 1 0 Sommario Programmazione logica Base delle conoscenze Interrogazioni Regole Ricorsive Esecuzione dei programmi

Подробнее

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output F = { (s, s ) } per ogni s esiste una e una sola coppia (s, s ). Esempio: un algoritmo che calcola il quadrato di

Подробнее

Sommario. Caratterizzazione alternativa di NP: il verificatore polinomiale esempi di problemi in NP

Sommario. Caratterizzazione alternativa di NP: il verificatore polinomiale esempi di problemi in NP Sommario Caratterizzazione alternativa di NP: il verificatore polinomiale esempi di problemi in NP I conjecture that there is no good algorithm for the traveling salesman problem. My reasons are the same

Подробнее

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Dimostrare che un albero non vuoto con n nodi interni, dove ogni nodo interno ha almeno

Подробнее

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

Makespan con set-up dipendenti dalla sequenza. 1/s jk /C max Makespan con set-up dipendenti dalla sequenza 1/s jk /C max 1/s jk /C max Un tempo di riattrezzaggio (set-up) s jk è richiesto fra il processamento di j e quello di k. In questo caso, C max dipende dalla

Подробнее

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114 In questa lezione Heapsort ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 11 1 Paternità L heapsort è stato pubblicato da J. W. J. Williams nel 106. Pochi mesi

Подробнее