Esercizi per il corso di Algorimi Esercizi su Union-Find. Esercizio: Scrivere pseudocodice per Make-Se, Union, e Find-Se usando la rappresenazione araverso lise linkae e la eurisica di unione pesaa. Si assuma che ciascun oggeo abbia un campo rep[x] che puna al rappresenane dell insieme conenene x. Si assuma che ciascun insieme S nella collezione abbia un aribuo head[s] che puna all elemeno nella esa della lisa che rappresena S, ail[s] che puna all elemeno nella coda della lisa che rappresena S, e size[s] che cona il numero di elemeni nella lisa.. Esercizio: Mosrare la sruura dai risulane e le rispose riornae dalle operazioni di Find- Se durane la esecuzione del programma seguene: for i o do Make-Se(x i ) for i o by do Union(x i ; x i+ ) for i o by do Union(x i ; x i+ ) Union(x ; x ) Union(x ; x ) Union(x ; x 0 ) Find-Se(x ) Find-Se(x 9 ) Si supponga di usare la rappresenazione araverso lise linkae e la eurisica di unione pesaa.. Esercizio: Mosrare la sruura dai risulane e le rispose riornae dalle operazioni di Find-Se durane la esecuzione del programma seguene: for i o do Make-Se(x i ) for i o by do Union(x i ; x i+ ) for i o by do Union(x i ; x i+ ) Union(x ; x ) Union(x ; x ) Union(x ; x 0 ) Find-Se(x ) Find-Se(x ) Si supponga quesa vola di usare la rappresenazione araverso alberi e le eurisiche di unione per rango e compressione di cammini.
. Esercizio: Dai gli insiemi disgiuni rappresenai dagli alberi qui soo riporai a u b d v z c e i r x l n m s o p ridisegnare gli alberi dopo l esecuzione di ciascuna delle operazioni Union(o, s), Find(l), Union(, m).. Esercizio: Usando l eurisica dell unione per peso, mosrare che una qualsiasi sequenza di m operazioni di MAKE-SET, UNION, e FINDSET, n delle quali sono MAKE-SET, prende empo O(m + n log n)
Esercizi su Grafi N.B. Si ricorda che ogni algorimo và accompagnao da una argomenazione sul perchè calcola correamene l oupu e da un analisi della sua complessià di empo. Inolre, si possono usare algorimi visi a lezione (come BFS, DFS, ec.) senza necessariamene riporare il relaivo pseudocodice, purchè lo si menzioni espliciamene. In generale, di ogni algorimo è preferibile presenare il relaivo pseudocodice. Tuavia, anche una sola descrizione dell idea dell algorimo (purchè precisa e correa) dà dirio a puni all esame.. Esercizio: Progeare ed analizzare un algorimo che, prendendo in inpu un grafo non orienao G = (V, E), deermina se G coniene o meno cicli. La complessià dell algorimo deve essere O( V ), indipendenemene da E.. Esercizio: Dao il grafo G rappresenao in figura r s a u v w z x eseguire su di esso l algorimo BFS(G, s), indicando ad ogni passo l arco considerao dall algorimo, e calcolando sia l albero BFS risulane che i valori d[c] per ogni nodo c del grafo.. Esercizio: Dao il grafo G rappresenao in figura r s a u v w z x eseguire su di esso l algorimo DFS(G, s), indicando ad ogni passo l arco considerao dall algorimo, e calcolando l albero DFS risulane.. Esercizio: Descrivere l algorimo per deerminare se un grafo direo G = (V, E) è forememe connesso, argomenare la sua correezza e valuarne la complessià di empo.
. Esercizio: Dao un grafo G = (V, E) non direo, il suo diamero D(G) è definio come la disanza ra i due verici di G massimalmene disani, se G è connesso, è definio come alrimeni. Formalmene: { se G non è connesso D(G) = max u,v V d(u, v) alrimeni dove d(u, v) è la disanza ra i due verici u e v. Analogamene, l eccenricià di un verice u è definia come { se G non è connesso e(u) = max v V d(u, v) alrimeni menre il raggio R(G) di G è definio come R(G) = min u V e(u). Si dia un algorimo che, dao in inpu un grafo G = (V, E) non direo, calcoli D(G) e R(G).. Esercizio: Daa la rappresenazione mediane lise di adiacenza di un grafo direo G = (V, E), scrivere un algorimo che deermini il numero di archi usceni da ogni verice ed un separao algorimo per deerminare il numero di archi enrani in ogni verice.. Esercizio: Il quadrao di un grafo orienao G = (V, E) è il grafo G = (V, E ) ale che (u, w) E se e solo se u : (v, u) E (u, w) E. In alre parole, se esise un percorso di due archi fra i nodi u e w. Scrivere un algorimo che, dao un grafo G rappresenao con marice di adiacenza, resiuisce il grafo G.. Esercizio: Descrivere un algorimo per il seguene problema. Dao in inpu un grafo orienao G = (V, E) rappresenao ramie lise di adiacenza e un nodo s V, resiuire il numero dei nodi in V raggiungibili da s che si rovano alla massima disanza da s. 9. Esercizio: Descrivere un algorimo per il seguene problema: Inpu: un grafo direo G = (V, E) rappresenao mediane lise di adiacenza. Oupu: per ogni nodo v V il numero dei nodi w raggiungibili da v (ovvero il numero dei nodi w V per i quali esise un cammino orienao da v a w). 0. Esercizio: Descrivere un algorimo per il seguene problema: Inpu: un grafo direo G = (V, E) rappresenao mediane lise di adiacenza, un nodo v V ed un inero k Oupu: il numero di nodi del grafo a disanza k da v.
. Esercizio: Descrivere un algorimo per il seguene problema: Inpu: un grafo non direo G = (V, E) rappresenao mediane lise di adiacenza Oupu: il numero di componeni connesse di G.. Esercizio: Descrivere un algorimo per il seguene problema: Inpu: un grafo direo G = (V, E) rappresenao mediane lise di adiacenza, due nodi v, w V. Oupu: Il numero di nodi raggiungibili da v che si rovano alla sessa disanza sia da v che da w.. Esercizio: Si descriva l algorimo per il calcolo dell ordinameno opologico di un DAG, argomenando la correezza e valuandone la complessià di empo.. Esercizio: Dao il grafo rappresenao in figura m n o p q r s u v w x y z deerminarne un ordinameno opologico, applicando passo passo l algorimo viso a lezione.. Esercizio: Si preseni l algorimo di Dijksra per il calcolo dei cammini minimi in un grafo, si argomeni la sua correezza e se ne valui la sua complessià di empo.. Esercizio: Si esegua l algorimo di Dijksra per il calcolo dei cammini minimi dal nodo s sul seguene grafo:
x 0 s 9 y z. Esercizio: Sia G = (V, E) un grafo direo, con lunghezze l(e) > 0 per ogni arco e E. Si progei e si analizzi (e si argomeni la correezza) un algorimo che presi in inpu un verice s V ed un arco (u, v) E, deermini:. se ra ui i cammini di lunghezza minima da s a v ne esise almeno uno che usi l arco (u, v);. se ra ui i cammini di lunghezza minima da s a v ne esise almeno uno che non usi l arco (u, v).. Esercizio: Dao un grafo orienao G = (V, E), con lunghezze l(e) > 0 per per ogni arco e E, e due nodi v, V. (a) Si proponga un algorimo che deermini, olre ad un cammino minimo p da v a che supponiamo essere p = (v, s,...s n, ), un secondo cammino p che sia il cammino di lunghezza minima ra quelli che congiungono v con e non conengono l arco (s n, ). (b) Si provi la correezza e si valui la complessi a dell algorimo proposo. (c) Si proponga un algorimo che deermini, olre ad un cammino minimo p da v a, un secondo cammino p che sia il cammino di lunghezza minima ra ui i cammini che congiungono v con e sono disini da p. 9. Esercizio: Si esegua l algorimo di Bellman-Ford per il calcolo dei cammini minimi dal nodo s sul seguene grafo, usando s come sorgene: 0 x s 9 y z
0. Esercizio: Sia G = (V, E) un grafo direo in cui ad ogni nodo u V è associao un peso w(u) > 0. Descrivere un algorimo per calcolare i cammini di peso minimi da un nodo sorgene s V a ui i nodi v V. In quesa siuazione, il peso di un cammino è definio come la somma dei pesi dei nodi che appaiono nel cammino. (Sugg.: si riduca il problema a quello di calcolare i cammini di peso minimi in un opporuno grafo con pesi su archi).. Esercizio: Derivare l equazione di ricorrenza per il coso di cammini minimi in grafi, argomenando i relaivi passi. Descrivere un algorimo per il calcolo dell equazione prima oenua.. Esercizio: Derivare l algorimo per scoprire se un grafo direo con lunghezze sugli archi coniene cicli di coso oale negaivo.. Esercizio: Descrivere l algorimo di Prim per la cosruzione di un MST e provarne la correezza.. Esercizio: Descrivere l algorimo di Kruskal per la cosruzione di un MST e provarne la correezza.. Esercizio: Dao il grafo rappresenao in figura, calcolare un MST di esso applicando l algorimo di Prim a parire dal nodo I: E H I 0 A M 0 F G J L B 0 0 C D K. Esercizio: Dao il grafo rappresenao in figura, calcolare un MST di esso applicando l algorimo di Kruskal:
I A M E F H J G L B C D K 0 0 0 0. Esercizio: Dao il grafo rappresenao in figura, calcolare un MST di esso applicando l algorimo di Kruskal: J K M A B E C G F I D H L. Esercizio: Dao il grafo rappresenao in figura, calcolare un MST di esso applicando l algorimo di Prim a parire dal verice I: J K M A B E C G F I D H L
9. Esercizio: Si proponga un algorimo che, dao in inpu un grafo non non orienao G = (V, E), pesi w(e) per ogni arco e E, ed un arco (u, v) E, deermini l esisenza o meno di un MST per G non conenene l arco (u, v). Si moivi la correezza e si calcoli la complessi a dell algorimo proposo. Si riconsiderino i puni precedeni nel caso in cui si voglia deerminare l esisenza di un MST per il grafo G conenene l arco (u, v). 0. Esercizio: Sia G = (V, E) un grafo non orienao e pesao, con archi di coso c(e), per ogni e E. (a) Si descriva brevemene un algorimo efficiene (per esempio ra quelli visi a lezione) che deermini un Minimum Spanning Tree per G e se ne valui la complessià. (b) Si provi o si refui la seguene proprieà: dao un Minimum Spanning Tree per G queso coniene almeno un arco ra quelli aveni peso minimo in G. (c) Si provi o si refui la seguene proprieà: dao un Minimum Spanning Tree per G queso coniene un cammino minimo per ogni coppia di nodi in G.. Esercizio: Sia G = (V, E) un grafo non orienao e pesao, con archi di coso c(e), per ogni e E. Si provi la seguene affermazione: sia S V un sooinsieme dei nodi, e sia e = (u, v) l arco di coso minimo con un esremo in S e l alro in V S. Allora ogni MST coniene l arco e.. Esercizio: Presenare la definizione formale di flusso f in un grafo G = (V, E), con sorgene s, desinazione e capacià c(e), per ogni e E. Si provi la seguene affermazione: per ogni verice u V {s, } vale f(u, v) = 0 v V. Esercizio: Siano f un flusso e (A, B) un aglio in una ree di flusso G con sorgene s e desinazione. Si provi il seguene risulao: Il flusso neo che araversa il aglio è uguale al flusso uscene da s, ovvero ( ) f(e) f(e) = f(e) = v(f) e uscene da A e enrane in A e uscene da s. Esercizio: Siano f un flusso e (A, B) un aglio in una ree di flusso G con sorgene s e desinazione. Si provi il seguene risulao: Il valore del flusso v(f) è al più pari alla capacià c(a, B) del aglio 9
. Esercizio: Applicare l algorimo di Ford e Fulkerson alla ree di flusso di soo riporaa. Ad ogni passo si ripori il cammino aumenane scelo e si calcoli il valore del massimo flusso oenuo da s a. Indicare infine il aglio di capacià minima. s 0 0. Esercizio: Applicare l algorimo di Ford e Fulkerson alla ree di flusso di soo riporaa. Ad ogni passo si ripori il cammino aumenane scelo e si calcoli il valore del massimo flusso oenuo da s a. Indicare infine il aglio di capacià minima. 9 9 s 9. Esercizio: Applicare l algorimo di Ford e Fulkerson alla ree di flusso di soo riporaa. Ad ogni passo si ripori il cammino aumenane scelo e si calcoli il valore del massimo flusso oenuo da s a. Indicare infine il aglio di capacià minima. s. Esercizio: Si formuli il problema del Massimo Maching in ermini di flusso in rei e si preseni la relaiva soluzione. 9. Esercizio: Si formuli il problema del Massimo numero di Cammini Disgiuni ra due verici s e di un grafo in ermini di flusso in rei e si preseni la relaiva soluzione. 0
0. Esercizio: Dao un grafo G con vincoli di capacià sia su archi che su verici, si formuli il problema del Massimo Flusso dal verice s al verice di G e si mosri che esso è equivlane al problema di calcolare il massimo flusso in una opporuna ree di flusso avene capacià solo su archi.. Esercizio: Si descriva il problema della Selezione di Progei con vincoli di prerequisii viso a lezione e se ne dia una formulazione in ermini di flusso in rei.