Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi"

Transcript

1 Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi

2 Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 (Esercizio C del testo [GTG14]) Sia G = (V, E) un grafo non diretto con n = V vertici e m = E archi. Dimostrare le seguenti proprietà: a. Se G è un free tree, allora m = n 1 b. Se G è connesso, allora m n 1. c. Se G è una foresta, allora m n 1. Soluzione. a. A lezione abbiamo visto l equivalenza tra la nozione di free tree e quella di rooted tree. In particolare, se G è un free tree dato un qualsiasi vertice r V è possibile vedere ogni arco come una relazione padre-figlio che definisce un rooted tree con insieme di vertici V e radice r. Poichè in un rooted tree ogni vertice, eccetto la radice, ha esattamente un padre, si ha che m = n 1. b. Se oltre a essere connesso G non ha cicli (ovvero è un free tree) la proprietà è conseguenza immediata del punto precedente. Supponiamo che G abbia dei cicli. Dato un ciclo, eliminando uno degli archi del ciclo non viene meno la connessione del grafo. Allora, a partire da G e sino a quando esso contiene almeno un ciclo si elimina un arco da un ciclo esistente. Alla fine del processo si saranno eliminati k 1 archi ottenendo un free tree su n vertici. Risulterà quindi m = n 1 + k > n 1. c. Per definizione di foresta G non ha cicli. Se risulta connesso allora è un free tree e la proprietà è conseguenza immediata del primo punto. Supponiamo invece che non sia connesso e che abbia k > 1 componenti connesse. Prendiamo due componenti connesse qualsiasi e aggiungiamo un arco (u, v) che le connetta. Chiaramente l aggiunta dell arco (u, v) non può creare un ciclo altrimenti significa che le due componenti connesse non erano tra loro disconnesse. Nel nuovo grafo rimangono allora k 1 1 componenti connesse. Iterando questo procedimento k 1 volte otterremo un grafo connesso e senza cicli (quindi un free tree) con m+k 1 = n 1 archi. Risulterà quindi m = n k < n 1. Problema 2 (Esercizio C del testo [GTG14]) Sia T lo spanning tree generato dai discovery edge di una Depth-First Search (DFS) di un grafo G non diretto e connesso. T è radicato nel vertice di partenza della DFS. Dimostrare che per ogni arco (u, v) di G marcato come back edge uno dei due vertici è antenato dell altro in T. (Si osservi che questo giustifica la locuzione back edge.) Soluzione. Sia G = (V, E) e (u, v) E un arco marcato come back edge da dalla DFS. Senza perdita di generalità, supponiamo che DFS(G, u) sia invocata prima di DFS(G, v). Quando u arriva a considerare v come vicino deve trovare v già visitato. Questo significa che DFS(G, v) non viene invocata direttamente da DFS(G, u), ma deve essere stata invocata come punto di una catena di chiamate ricorsive fatte a partire da u. In altre parole, deve esistere una sequenza di vertici w 0 = u, w 1, w 2,..., w k = v tali che DFS(G, w i ) è stata invocata direttamente da DFS(G, w i 1 ), per 1 i k, e quindi deve esistere un cammino (u = w 0, w 1 )(w 1, w 2 ),, (w k 1, w k = v) di discovery edge che collega u a v. Ciò prova che u è antenato di v in T.

3 Dati e Algoritmi I (Pietracaprina): Esercizi 2 Problema 3 Sia G = (V, E) un grafo non diretto e connesso con n = V vertici e m = E archi. Dati due vertici u, v V, si definisce distanza(u, v) il numero di archi nel cammino più breve da u a v in G. Si definisce inoltre DIAMETRO(G) come la massima distanza tra due vertici. a. Per s V, si supponga che BFS(G, s) produca k + 1 livelli non vuoti: L 0, L 1,..., L k. Dimostrare: k DIAMETRO(G) 2k. b. Sviluppare e analizzare un algoritmo per il calcolo esatto del diametro. Soluzione. a. È noto che dopo l esecuzione di BFS(G, s), L i contiene tutti e soli i vertici distanza i da s. Il fatto che BFS(G, s) ha prodotto k + 1 livelli implica che esistono dei vertici a distanza k da s. Quindi la massima distanza tra due vertici, ovvero DIAMTRO(G), non può essere inferiore a k. Consideriamo ora due vertici arbitrari u, v V. Supponiamo che dopo l esecuzione di BFS(G, s) si abbia u L i e v L j, per un qualche i k e j k. Ciò implica che esiste un cammino fatto da i archi tra u e s e un cammino fatto da j archi tra v e s. Unendo i due cammini si ottiene un cammino di i+j 2k archi tra u e v. Quindi, distanza(u, v) 2k. L arbitrarietà di u e v implica che DIAMTRO(G) 2k. b. Per comodità di notazione sia V = {1, 2,..., n. L idea è quella di invocare l algoritmo BFS da ciascun vertice i determinando la massima distanza d i tra esso e un qualsiasi altro nodo j, aggiornando una variabile inizialmente a 0, ogni volta che d i >. Alla fine, δ corrisponderà al diametro del grafo. Come prima cosa si modifichi l algoritmo BFS visto a lezione facendo in modo che alla fine restituisca il massimo indice di un livello non vuoto, ovvero la massima distanza di un vertice da quello su cui è invocata la BFS. Chiaramente, tale modifica non altera la complessità dell algoritmo. Il calcolo del diametro può essere effettuato come segue: Algoritmo Diameter(G) input Grafo G=(V,E) connesso e rappresentato con liste di adiacenza output DIAMETRO(G) 0 for i 1 to n do { d i BFS(G,i) if (d i > ) then d i return BFS viene invocato esattamente una volta a partire dal ciascun vertice. Poichè G è connesso, ogni invocazione costa Θ (n + m) = Θ (m), dato che m n 1. Quindi, la complessità di tutto l algoritmo è Θ (nm).

4 Dati e Algoritmi I (Pietracaprina): Esercizi 3 Problema 4 Un grafo non diretto G si dice biconnected se non esiste alcun vertice la cui rimozione disconnette il grafo. Far vedere che aggiungendo al più n archi a un grafo G = (V, E) non diretto, connesso, e con n = V 3 vertici, lo si può rendere biconnected (se non lo è inizialmente). Soluzione. Sia V = {1, 2,..., n. Si supponga di aggiungere a E il seguente insieme di archi (se non già presenti in E): {(1, 2), (2, 3),..., (n 1, n), (n, 1). Con l aggiunta di tali archi (che sono al più n dato che alcuni potrebbero già essere parte di E) si crea un ciclo che tocca tutti i vertici. Chiaramente, la rimozione di un qualsiasi vertice i, e degli archi in esso incidenti, non disconnette il grafo in quanto gli altri vertici rimangono connessi almeno dal cammino identificato dai seguenti archi: (i + 1, i + 2) (n, 1)(1, 2) (i 1, i). Problema 5 Un grafo G = (V, E) si dice bipartito se l insieme di vertici V può essere partizionato in due sottoinsiemi X e Y tali che ogni arco di E incide su un vertice di X e uno di Y. Progettare e analizzare un algoritmo efficiente che determini se un grafo non diretto G è bipartito. Soluzione. Si osservi anzitutto che G è bipartito se e solo se ciascuna sua componente connessa è bipartita. Basterà quindi controllare per ogni componente connessa se essa è bipartita oppure no. Si ricordi che eseguendo la BFS da un vertice s, ogni discovery edge collega due vertici in livelli adiacenti, mentre ogni cross edge collega due vertici che appartengono allo stesso livello o a livelli adiacenti. In virtù di questa osservazione, per controllare se una componente connessa è bipartita sarà sufficiente invocare la BFS a partire da un suo vertice arbitrario s e verificare che non ci siano cross-edge tra vertici dello stesso livello. Infatti, se non ci sono cross-edge tra vertici dello stesso livello, tutti gli archi connettono vertici in livelli adiacenti (uno di indice pari e uno di indice dispari). In questo caso, definendo X s come l insieme di vertici appartenenti a livelli di indice pari e Y s come l insieme di vertici appartenenti a livelli di indice dispari, si ha una corretta bipartizione. Se invece esiste un cross-edge tra vertici dello stesso livello la componente connessa non può essere bipartita. Infatti, se lo fosse e i suoi vertici fossero suddivisi in X s e Y s, con s X s, si avrebbe che tutti i vertici appartenenti a livelli di indice pari dovrebbero essere in X s e tutti i vertici appartenenti a livelli di indice dispari dovrebbero essere in Y s, escludendo la possibilità di cross-edge tra vertici dello stesso livello. Supponiamo di implementare la lista L V in modo che L V [u] contenga un campo binario visited e un campo intero level, per ogni u V, e di modificare l algoritmo BFS visto a lezione in modo che quando vista un vertice u inserendolo in un livello L i, imposti L V [u].visited a 1 e L V [u].level a i. Come al solito rappresentiamo i vertici con gli interi da 1 a n. Lo pseudocodice è il seguente.

5 Dati e Algoritmi I (Pietracaprina): Esercizi 4 Algoritmo IsBipartite(G) input Grafo G=(V,E) rappresentato con liste di adiacenza output TRUE/FALSE se G e /non e bipartito for u 1 to n do { L v [u].visited 0; L v [u].level null; for u 1 to n do { if (L V [u].visited = 0) then BFS(G,u) bipartite TRUE; for each (u,v) E do { if (L V [u].level = L V [v].level) then bipartite FALSE; return bipartite La correttezza discende immediatamente dalle osservazioni fatte prima. Per quanto riguarda la complessità si noti che: il primo ciclo for richiede O (n) operazioni, il secondo O (n + m) operazioni (come per il calcolo delle componenti connesse), e il terzo O (m) operazioni. La complessità totale risulta quindi essere O (n + m). Problema 6 Sia G = (V, E) un grafo non diretto con k > 1 componenti connesse. Progettare un algoritmo che aggiunge k 1 archi a G per renderlo connesso, e analizzarne la complessità. Si assuma di poter aggiungere un arco (i, j) a E in tempo costante invocando il metodo G.addArc(i,j). Soluzione. Siano n = V, m = E, e V = {1, 2,..., n. Si denoti con i j un vertice arbitrario dell j-esima componente connessa di G, per 1 j k. Si aggiungano a E i seguenti k 1 archi: {(i j, i j+1 ) : 1 j < k. Si vede facilmente che con tale aggiunta il grafo diventa connesso. Supponiamo di implementare la lista L V in modo che per ogni vertice i V l oggetto L V [i] contenga un campo visited, e che l algoritmo DFS visto a lezione sia modificato in modo che il campo visited di ciascun vertice visitato durante la Depth-First Search venga impostato a 1. L algoritmo richiesto è il seguente. Algoritmo 2bConnected(G) input Grafo G=(V,E) con k componenti connesse rappresentato con liste di adiacenza output Grafo G =(V,E E ) connesso con E =k-1 for i 1 to n do L v [i].visited 0; l 1; DFS(G,1);

6 Dati e Algoritmi I (Pietracaprina): Esercizi 5 for i 2 to n do { if (L V [i].visited = 0) then { G.addArc(l,i); l i; DFS(G,i); La correttezza dell algoritmo è giustificata dalla precedente osservazione. Per quanto riguarda la complessità, sia m j il numero di archi della j-esima componente connessa di G, per 1 j k. Il costo aggregato di tutte le invocazioni di DFS è: k O = O (m). m j j=1 A parte le invocazioni della DFS, l algoritmo prevede due cicli for di al più n iterazioni ciascuno, dove ciascuna iterazione esegue un numero costante di operazioni. Ne consegue che la complessità totale dell algoritmo è O (n + m). Problema 7 Sia G = (V, E) un grafo con n vertici e m archi, e sia V = {1, 2,..., n. Progettare un algoritmo che restituisce, se esiste, un vertice i V da cui sono raggiungibili (con cammini) n/2 altri vertici, e analizzarne la complessità. Se un tale vertice non esiste l algoritmo restituisce 0. Soluzione. Si noti che da un vertice i V sono raggiungibili n/2 altri vertici se e solo se la componente connessa di i contiene almeno n/2 + 1 vertici. L idea è quindi quella di determinare, tramite BFS modificata, la cardinalità di ciascuna componente connessa e, appena se ne trova una di cardinalità almeno n/2 + 1, restituire un vertice arbitrario di essa. Per ogni i V usiamo un campo binario L V [i].visited. Si supponga di modificare l algoritmo BFS(G,i) in modo che imposti a 1 il campo visited dei vertici della componente connessa di i e che restituisca in output il numero di tali vertici. Il conteggio può essere fatto con un contatore, inizializzato a 0, che viene incrementato ogni volta che un nodo viene visitato (ovvero inserito in qualche livello). L algoritmo richiesto è il seguente. Algoritmo LargeComponent(G) input Grafo G=(V,E) rappresentato con liste di adiacenza output vertice i che raggiunge n/2 vertici, se esiste, 0 altrimenti for i 1 to n do L V [i].visited 0 for i 1 to n do { if (L V [i].visited = 0) then { x BFS(G,i); if (x n/2+1) then return i return 0

7 Dati e Algoritmi I (Pietracaprina): Esercizi 6 Sia m j il numero di archi della j-esima componente connessa di G, per 1 j c, e si noti che m = ( c cj=1 ) j=1 m j. Il costo aggregato di tutte le invocazioni di BFS è O m j = O (m), mentre il costo delle altre operazioni fatte dall algoritmo è O (n). La complessità finale risulta quindi essere O (n + m). Problema 8 (Esercizio C in [GTG14]) Sia G = (V, E) un grafo non diretto. Un insieme di vertici I V è un Independent Set (IS) se E non contiene archi (u, v) con u, v I, e si dice Maximal se appena si aggiunge a esso un vertice w V I, si perde la proprietà di IS. In altre parole, I è un Maximal Independent Set (MIS) se per ogni w V I esiste v I tale che (v, w) E. a. Dimostrare che in ogni grafo G esiste sempre un MIS. b. Progettare e analizzare un algoritmo efficiente per trovare un MIS in un grafo G. Soluzione. a. Si consideri un algoritmo che parte da un IS I costituito da un vertice arbitrario, ed esegue ciclo in cui sino a quando esiste un vertice v I che non è adiacente ad alcun vertice di I lo aggiunge a I. Per costruzione, I rimane sempre un IS. L algoritmo termina se I = V oppure qualsiasi vertice non in I è adiacente a qualche vertice in I. In entrambi i casi I è un MIS dato che è un IS e non si possono aggiungere vertici a esso mantenedo la proprietà di IS. L algoritmo dimostra che esiste sempre un MIS. b. Un implementazione banale dell algoritmo del punto precedente sembrerebbe richiedere, al caso pessimo, una scansione di tutti i vertici non in I e di tutti gli archi in essi incidenti in ciascuna iterazione del ciclo. È possibile però implementarlo in modo più efficiente con un unica scansione di vertici e archi. L idea è di fare una scansione di tutti i vertici e per ciascuno di essi determinare se può essere aggiunto all IS corrente (che inizialmente è vuoto) e, in questo caso, aggiungerlo. Rappresentiamo, come sempre, i vertici tramite gli interi da 1 a n. Per ogni i V usiamo un campo booleano L V [i].is che alla fine varrà TRUE per tutti e soli i vertici del MIS. Lo pseudocodice è il seguente: Algoritmo MIS(G) input Grafo G=(V,E) rappresentato con liste di adiacenza output MIS I per G for i 1 to n do L v [i].is FALSE I for i 1 to n do { L v [i].is TRUE for each e G.incidenteEdges(i) do { Sia e = (i,j) if (L V [j].is = TRUE) then L v [i].is FALSE; if (L V [i].is = TRUE) then aggiungi i ad I return I

8 Dati e Algoritmi I (Pietracaprina): Esercizi 7 La correttezza discende facilmente dal seguente invariante che vale alla fine di ogni iterazione i 0 del secondo ciclo for (i = 0 è l inizio del ciclo): L insieme I è un IS Nessun vertice j, con 1 j i e j I, può essere aggiunto a I senza violare la proprietà di IS. La verifica dell invariante è lasciata come esercizio. Per quanto riguarda la complessità, il primo ciclo for richiede O (n) operazioni, mentre ogni iterazione i del secondo ciclo for richiede un numero di operazioni proporzionale al grado del vertice i. Dato che la somma dei gradi di tutti i vertici è O (m) si deduce che la complessità dell algoritmo è O (n + m). Problema 9 Sia G = (V, E) un grafo non diretto e connesso in cui ciascun vertice ha grado esattamente c, con c > 2 costante intera. Si consideri l esecuzione di BFS(G, s) a partire da un arbitrario vertice s V. Dimostrare per induzione su i che il livello L i generato da BFS(G, s) contiene c i vertici, per ogni i 0. Soluzione. Come base dell induzione consideriamo i = 0. Il livello L 0 contiene il solo nodo s e quindi L 0 = 1 = c 0. Fissiamo un indice i 0 e supponiamo, come ipotesi induttiva, che per ogni 0 j i si abbia L j c j. I vertici del livello L i+1 sono tutti adiacenti a vertici del livello i e poiché ciascun vertice v L i ha c vicini concludiamo che L i+1 c L i. Applicando l ipotesi induttiva, otteniamo L i+1 c L i c c i = c i+1.

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

Dettagli

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

Dettagli

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

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Si definisca Interval Tree un albero binario di ricerca le

Dettagli

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

Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte II Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte II Classificazione digli archi Sia G la foresta DF generata da DFS sul grafo G. Arco d albero: gli

Dettagli

Progettazione di algoritmi

Progettazione di algoritmi Progettazione di algoritmi Discussione dell'esercizio [vincoli] Prima di tutto rappresentiamo il problema con un grafo G: i nodi sono le n lavorazioni L 1, L 2,, L n, e tra due nodi L h, L k c'è un arco

Dettagli

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 è

Dettagli

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

Dettagli

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

Dettagli

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 (liverani@mat.uniroma.it)

Dettagli

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

Dettagli

Note per la Lezione 4 Ugo Vaccaro

Note per la Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che

Dettagli

Progettazione di Algoritmi - lezione 6

Progettazione di Algoritmi - lezione 6 Progettazione di Algoritmi - lezione 6 Discussione dell'esercizio [sensi unici] La rete viaria della cittadina può essere rappresentata facilmente tramite un grafo diretto in cui i nodi sono gli incroci

Dettagli

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

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill) Grafi: visite Una breve presentazione Visite di grafi Scopo e tipi di visita Una visita (o attraversamento) di un grafo G permette di esaminare i nodi e gli archi di G in modo sistematico Problema di base

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi

Dettagli

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

Dettagli

Dati e Algoritmi 1: A. Pietracaprina. Alberi Generali

Dati e Algoritmi 1: A. Pietracaprina. Alberi Generali Dati e Algoritmi 1: A. Pietracaprina Alberi Generali 1 Alexander Calder, Arc of Petals, 1941. Peggy Guggenheim Collection, Venice. 2 Cos è un albero? root$ Albero Informalmente: collezione di nodi; collegamenti:

Dettagli

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

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 12 Grafi e visite di grafi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione Un grafo G=(V,E) consiste in: - un insieme V di vertici (o nodi) - un insieme

Dettagli

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

Dettagli

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

Dettagli

GRAFI. fig.1 - GRAFI (1) Si avvisa il lettore che certe definizioni che verranno date differiscono da quelle presenti in letteratura.

GRAFI. fig.1 - GRAFI (1) Si avvisa il lettore che certe definizioni che verranno date differiscono da quelle presenti in letteratura. GRAFI 1. Definizioni, terminologia, esempi e applicazioni (1) Un grafo orientato (o diretto o di-grafo) G è una coppia (V,E) dove V è un insieme non vuoto ed E una relazione binaria su V, E V V, ossia

Dettagli

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

Dettagli

Cammini minimi con sorgente singola

Cammini minimi con sorgente singola Capitolo 11 Cammini minimi con sorgente singola efinizione 11.1. Sia G = (V,, w) un grafo orientato e pesato; dato il cammino p = v 0, v 1,..., v k in G, il valore w(p) = k i=1 w(v i 1, v i ) rappresenta

Dettagli

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

Dettagli

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

Dettagli

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 mpassacantando@di.unipi.it M. Passacantando TFA 0/ - Corso di Ricerca Operativa Università di Pisa / 9 Definizioni

Dettagli

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

Dettagli

Terzo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

Terzo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale Terzo allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini luca@chiodini.org - l.chiodini@campus.unimib.it 22 marzo 2016 Programma 1. Lettura di un problema tratto dalle

Dettagli

Laboratorio di Python

Laboratorio di Python Laboratorio di Python Alberi binari Lab15 12 Maggio 2017 Outline Correzione esercizi per oggi Alberi binari Teoria Esercizi Esercizi per casa Saluti Esercizio 1 per casa Scrivere una funzione palindroma(s)

Dettagli

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.

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]

Dettagli

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

Dettagli

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

Dettagli

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

Dettagli

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

Dettagli

Espressioni aritmetiche

Espressioni aritmetiche Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:

Dettagli

Alberi e arborescenze di costo minimo

Alberi e arborescenze di costo minimo Alberi e arborescenze di costo minimo Complementi di Ricerca Operativa Giovanni Righini Dipartimento di Tecnologie dell Informazione - Università degli Studi di Milano Definizioni - 1 Un grafo G = (V,

Dettagli

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.

Dettagli

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

Dettagli

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

UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa 2. Esercizi sul problema dell assegnamento UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa Esercizi sul problema dell assegnamento Richiami di Teoria Ricordiamo che, dato un grafo G=(N,A),

Dettagli

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

Dettagli

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

Dettagli

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)

Dettagli

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,

Dettagli

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

Dettagli

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione

Dettagli

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

Dettagli

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

Dettagli

Quarto allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

Quarto allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale Quarto allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini luca@chiodini.org - l.chiodini@campus.unimib.it 30 marzo 2017 Programma 1. Lettura e analisi di un problema 2.

Dettagli

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

Graf. Progettazione di Algoritmi a.a Matricole congrue a 1. Docente: Annalisa De Bonis Graf Progettazione di Algoritmi a.a. 2016-17 Matricole congrue a 1 Docente: Annalisa De Bonis 1 Grafi non direzionati Grafi non direzionati. G = (V, E) V = insieme nodi. E = insieme archi. Esprime le relazioni

Dettagli

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

Dettagli

Gestione della produzione e della supply chain Logistica distributiva

Gestione della produzione e della supply chain Logistica distributiva Gestione della produzione e della supply chain Logistica distributiva Paolo Detti Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena Convergenza dell algoritmo Se non

Dettagli

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

Dettagli

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

Dettagli

Alberi e alberi binari I Un albero è un caso particolare di grafo

Alberi e alberi binari I Un albero è un caso particolare di grafo Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra

Dettagli

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica Modulo di Laboratorio di Algoritmi e Strutture Dati Alberi binari Giovanna Melideo melideo@di.univaq.it 1 Alberi

Dettagli

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,

Dettagli

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.

Dettagli

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Selection e Insertion Sort Ordinamento Dato un insieme S di n elementi presi da un dominio totalmente ordinato, ordinare S in ordine non crescente o non

Dettagli

Grafi (non orientati e connessi): minimo albero ricoprente

Grafi (non orientati e connessi): minimo albero ricoprente .. Grafi (non orientati e connessi): minimo albero ricoprente Una presentazione alternativa (con ulteriori dettagli) Problema: calcolo del minimo albero di copertura (M.S.T.) Dato un grafo pesato non orientato

Dettagli

Ottimizzazione Discreta Esercizi V: Soluzioni

Ottimizzazione Discreta Esercizi V: Soluzioni Ottimizzazione Discreta Esercizi V: Soluzioni Grafi e cammini minimi A.A. 214/215 Esercizio 1 (a) Nella terminologia della teoria dei grafi, si chiede di dimostrare che ogni grafo non orientato G = (V,E),

Dettagli

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

Dettagli

Il problema del commesso viaggiatore

Il problema del commesso viaggiatore Il problema del commesso viaggiatore Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa mpassacantando@di.unipi.it M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università

Dettagli

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,

Dettagli

Elezione di un leader in una rete ad anello

Elezione di un leader in una rete ad anello Elezione di un leader in una rete ad anello Corso di Algoritmi Distribuiti Prof. Roberto De Prisco Lezione n a cura di Rosanna Cassino e Sergio Di Martino Introduzione In questa lezione viene presentato

Dettagli

ALCUNE NOTE SUI GRAFI Tiziana Calamoneri

ALCUNE NOTE SUI GRAFI Tiziana Calamoneri ALCUNE NOTE SUI GRAFI Tiziana Calamoneri Un grafo G=(V,E) è costituito da una coppia di insiemi, l insieme finito V di nodi, o vertici, e l insieme finito E di coppie non ordinate di nodi, dette archi,

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 3 Implementazioni dei dizionari ordinati Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio

Dettagli

Grafi (non orientati e connessi): minimo albero ricoprente

Grafi (non orientati e connessi): minimo albero ricoprente Grafi (non orientati e connessi): minimo albero ricoprente Una breve presentazione Definizioni Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è

Dettagli

Dizionari Liste invertite e Trie

Dizionari Liste invertite e Trie Dizionari Liste invertite e Trie Lucidi tratti da Crescenzi Gambosi Grossi, Strutture di dati e algoritmi Progettazione, analisi e visualizzazione Addison-Wesley, 2006 Dizionari Universo U delle chiavi

Dettagli

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi

Dettagli

VISITA IL SITO PER ALTRO MATERIALE E GUIDE

VISITA IL SITO  PER ALTRO MATERIALE E GUIDE COPYRIGHT SEGO LICENSE Questo documento viene fornito così come è: se pensate che faccia schifo problemi vostri, nessuno vi obbliga a leggerlo. Se pensate che sia qualcosa di positivo e/o avete suggerimenti

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array e funzioni 2. Array e funzioni ricorsive 3. Array e confronto di array 2 Esercizio 1 Creare un programma che legga da

Dettagli

Il valore di flusso che si ottiene è

Il valore di flusso che si ottiene è 1) Si consideri un insieme di piste da sci e di impianti di risalita. Lo si modelli con un grafo orientato che abbia archi di due tipi: tipo D (discesa e orientato nel senso della discesa) e tipo R (risalita

Dettagli

Esercizi di Matematica per la prova di ammissione alla Scuola Galileiana /16

Esercizi di Matematica per la prova di ammissione alla Scuola Galileiana /16 Esercizi di Matematica per la prova di ammissione alla Scuola Galileiana - 015/16 Esercizio 1 Per quali valori n Z \ {0} l espressione è un numero intero positivo? (n + 5)(n + 6) 6n Soluzione. Il problema

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 29 novembre 2010 1 Rotazioni semplici in ABR Si consideri l operazione di rotazione semplice applicata

Dettagli

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

Dettagli

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Dettagli

Algoritmi Approssimanti per -TSP

Algoritmi Approssimanti per -TSP Dispensa del corso di TAA redatta da Amati Di auro Rattà. Algoritmo 5 e APX per il problema Algoritmi Approssimanti per -TSP Definizione (TSP) Il problema del commesso viaggiatore (TSP) è definito come

Dettagli

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

Capitolo 5. Algoritmi di ricerca su grafo. 5.1 Algoritmi di ricerca su grafo Capitolo 5 Algoritmi di ricerca su grafo Gli algoritmi di ricerca su grafo, oggetto dei prossimi paragrafi, rappresentano tecniche fondamentali per determinare nodi che soddisfino particolari proprietà

Dettagli

Ingegneria degli Algoritmi (II parte pratica)

Ingegneria degli Algoritmi (II parte pratica) Ingegneria degli Algoritmi (II parte pratica) Correzione prova pratica Ing. Domenico Spera domenico.spera@students.uniroma2.eu Premessa Sono stati richiesti i seguenti task: Implementare la versione in-order

Dettagli

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

Dettagli

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,

Dettagli

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)

Dettagli

Esercizi proposti 10

Esercizi proposti 10 Esercizi proposti 10 In questo gruppo di esercizi assumiamo, dove non sia specificato diversamente, di rappresentare i grafi mediante liste di archi, con il tipo di dati così dichiarato: type a graph =

Dettagli

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

Dettagli

Note per la Lezione 6 Ugo Vaccaro

Note per la Lezione 6 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 6 Ugo Vaccaro Ancora sulla tecnica Programmazione Dinamica Nella lezione scorsa abbiamo appreso che la tecnica Divide-et-Impera,

Dettagli

Grafi bipartiti. Applicazioni. Matrimoni stabili: uomini = rosso, donna = blu. Scheduling: macchine = rosso, job = blu. Un grafo bipartito

Grafi bipartiti. Applicazioni. Matrimoni stabili: uomini = rosso, donna = blu. Scheduling: macchine = rosso, job = blu. Un grafo bipartito Grafi bipartiti Def. Un grafo non direzionato è bipartito se l insieme di nodi può essere partizionato in due sottoinsiemi X e Y tali che ciascun arco del grafo ha una delle due estremità in X e l altra

Dettagli

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 (mdifrance@unica.it) i i Dott.ing. Maria Ilaria Lunesu (ilaria.lunesu@unica.it)

Dettagli

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra

Dettagli

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

Dettagli

Esercizi vari. Alberto Montresor. 19 Agosto, 2014

Esercizi vari. Alberto Montresor. 19 Agosto, 2014 Esercizi vari Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive soluzioni

Dettagli

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

Dettagli

Possibile applicazione

Possibile applicazione p. 1/4 Assegnamento Siano dati due insiemi A e B entrambi di cardinalità n. Ad ogni coppia (a i,b j ) A B è associato un valore d ij 0 che misura la "incompatibilità" tra a i e b j, anche interpretabile

Dettagli

Cognome e Nome: Numero di Matricola: Spazio riservato alla correzione

Cognome e Nome: Numero di Matricola: Spazio riservato alla correzione Cognome e Nome: Numero di Matricola: Spazio riservato alla correzione 1 2 3 4 Bonus Totale /25 /25 /25 /25 /100 1. Grafi a) Si scriva lo pseudocodice dell'algoritmo BFS che utilizza un array Discovered

Dettagli

Verifica parte IIB. Grafo di controllo. Criteri di selezione per test strutturali (white box) Test. Rif. Ghezzi et al

Verifica parte IIB. Grafo di controllo. Criteri di selezione per test strutturali (white box) Test. Rif. Ghezzi et al Verifica parte IIB Rif. Ghezzi et al. 6.3.4.1 Test In piccolo White box Black box Condizioni di confine Problema dell' Oracolo In grande Test di modulo Test di integrazione Test di Sistema Test di Accettazione

Dettagli

Strutture dati per rappresentare grafi

Strutture dati per rappresentare grafi lgoritmi e strutture dati amil emetrescu, Irene inocchi, iuseppe. Italiano Strutture dati per rappresentare grafi opyright 2004 - The Mcraw - Hill ompanies, srl lgoritmi e strutture dati amil emetrescu,

Dettagli

COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04

COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04 COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04 Esercizio 1 Si risolva con il metodo branch-and-bound il seguente problema di PLI max x 1 + x 4x 1 + x + x = 0 x 1 + x + x 4 = x 1, x, x, x 4 0 x 1, x,

Dettagli

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

Grafi. Progettazione di Algoritmi a.a Matricole congrue a 1 Docente: Annalisa De Bonis Grafi Progettazione di Algoritmi a.a. 2015-16 Matricole congrue a 1 Docente: Annalisa De Bonis 1 Grafi non direzionati Grafi non direzionati. G = (V, E) V = insieme nodi. E = insieme archi. Esprime le

Dettagli

Esercitazione 10 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Esercitazione 10 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Esercitazione 10 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Tong Liu May 10, 2016 Elementi fondamentali Un algoritmo non deterministico è un algoritmo che posto di fronte alla necessità di

Dettagli