Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi
|
|
- Severino Piazza
- 6 anni fa
- Visualizzazioni
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) 1 Breath-First Search (algoritmo iterativo) Si assume una rappresentazione tramite liste di adiacenza. L ordine con cui si visitano i vicini di un
DettagliDati 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
DettagliVisite 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
DettagliDati 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
DettagliAlgoritmi 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
DettagliProgettazione 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
DettagliEsempi. 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 è
DettagliAlgoritmi 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
DettagliDati 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
DettagliAppunti 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)
DettagliIntroduzione 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
DettagliNote 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
DettagliProgettazione 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
DettagliGrafi: 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
DettagliEsercizi 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
DettagliGrafi: 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
DettagliDati 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:
DettagliAlgoritmo 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
DettagliAlgoritmi 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
DettagliGrafi: 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
DettagliProgettazione 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
DettagliGRAFI. 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
DettagliAlgoritmi 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
DettagliCammini 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
DettagliEsercizio 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
DettagliSommario. 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
DettagliAlberi 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
DettagliGrafi 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
DettagliTerzo 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
DettagliLaboratorio 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)
DettagliMinimo 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.
DettagliAlgoritmi 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]
DettagliIntroduzione 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
DettagliAlgoritmi 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
DettagliEsercizi 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
DettagliCammini 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
DettagliEspressioni 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:
DettagliAlberi 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,
DettagliAlgoritmi 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.
DettagliAlgoritmi 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
DettagliUNIVERSITÀ 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),
DettagliCammini 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
DettagliProblema 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
DettagliCammini 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)
Dettagli2.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,
DettagliEsercizi 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
DettagliLE 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
Dettagli2.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
Dettagli2.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
DettagliQuarto 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.
DettagliGraf. 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
DettagliProblemi, 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
DettagliGestione 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
DettagliProblemi 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
DettagliStrutture 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
DettagliAlberi 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
DettagliUniversità 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
DettagliEsercizi 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,
DettagliSui 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.
DettagliAlgoritmi 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
DettagliGrafi (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
DettagliOttimizzazione 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),
DettagliGrafi 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
DettagliIl 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à
DettagliEsercizi 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,
DettagliElezione 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
DettagliALCUNE 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,
DettagliAlgoritmi 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
DettagliGrafi (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 è
DettagliDizionari 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
DettagliNell 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
DettagliVISITA 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
DettagliFondamenti 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
DettagliIl 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
DettagliEsercizi 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
DettagliEsercizi 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
DettagliAlgoritmi 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
DettagliRappresentazione 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
DettagliAlgoritmi 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
DettagliCapitolo 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à
DettagliIngegneria 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
DettagliGrafi (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
DettagliAlberi 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,
Dettagli11.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)
DettagliEsercizi 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 =
DettagliProgettazione 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
DettagliNote 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,
DettagliGrafi 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
DettagliMETODI 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)
DettagliDiagramma 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
DettagliAlgoritmi 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
DettagliEsercizi 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
DettagliUn 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
DettagliPossibile 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
DettagliCognome 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
DettagliVerifica 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
DettagliStrutture 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,
DettagliCOMPITO 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,
DettagliGrafi. 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
DettagliEsercitazione 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