Grafi Tutte le strade portano a Roma
|
|
|
- Gianleone Vitali
- 6 anni fa
- Просмотров:
Транскрипт
1 Grafi Tutte le strade portano a Roma Un vertice v in un grafo orientato G si dice di tipo Roma se ogni altro vertice w in G può raggiungere v con un cammino orientato che parte da w e arriva a v. 1 Descrivere un algoritmo che dati un grafo G e un vertice v, determina se v è un vertice di tipo Roma in G. 2 Descrivere un algoritmo che, dato un grafo G, determina se G contiene un vertice di tipo Roma. In entrambi i casi è possibile trovare un algoritmo con complessità O(m + n), ma anche altre complessità verranno considerate. Alberto Montresor (UniTN) 15 dicembre / 13
2 Grafi Pozzo universale Un pozzo universale è un nodo con out-degree uguale a zero e in-degree uguale a n 1. Dato un grafo orientato G rappresentato tramite matrice di adiacenza, scrivere un algoritmo che opera in tempo Θ(n) in grado di determinare se G contiene un pozzo universale. È possibile ottenere la stessa complessità con liste di adiacenza? Alberto Montresor (UniTN) 15 dicembre / 13
3 Griglia quadrata Si consideri un griglia quadrata n n celle. Ogni cella è colorata con un colore in {1, 2, 3} Per semplicità, supponete che nella griglia sia presente almeno una cella di colore 1 e almeno una cella di colore 3. Supponete di partire da una cella di colore 1 Ad ogni passo potete muovervi di una cella in alto, in basso, a destra o a sinistra L obiettivo è raggiungere una cella con colore 3 Scrivere un algoritmo che prende in input una griglia rappresentata da una matrice di interi e restituisca il numero minimo di passi necessari per raggiungere una qualunque cella di colore 3 a partire da una qualunque cella di colore 1. Discutere correttezza e complessità dell algoritmo proposto. Alberto Montresor (UniTN) 15 dicembre / 13
4 Griglia quadrata Ad esempio, si consideri la matrice seguente: La risposta da dare è 2, perchè non esistono celle 1 e 3 adiacenti ma esistono percorsi formati da due passi (come quello evidenziato in grassetto, che però non è l unico). Alberto Montresor (UniTN) 15 dicembre / 13
5 Good vs bad guys Fra ogni coppia di wrestler professionisti può esserci una rivalità oppure no. Per ragioni di marketing, è una buona idea dividere i wrestler professionisti in due gruppi, "buoni" e "cattivi", e farli combattere fra di loro. Supponete di avere in input un insieme di rivalità, rappresentate come un vettore di coppie (x, y), dove x e y sono identificatori di wrestler compresi fra 1 ed n. Scrivere un algoritmo che restituisca true se è possibile suddividere i wrestler professionisti in due sottoinsiemi non vuoti ("buoni" e "cattivi"), non necessariamente della stessa dimensione, in modo tale che non ci siano rivalità all intero dei due gruppi; false altrimenti. Alberto Montresor (UniTN) 15 dicembre / 13
6 Spoiler alert! Alberto Montresor (UniTN) 15 dicembre / 13
7 Tutte le strade portano a Roma 2012/05/03 Operando sul grafo trasposto un nodo è Roma se da esso è possibile raggiungere tutti i nodi. isroma(graph G T, Node v) boolean[ ]id = new int[1... G T.n] foreach u G T.V() do id[u] = 0 ccdfs(g T, 1, v, id) foreach u G T.V() do if id[u] == 0 then return false return true Alberto Montresor (UniTN) 15 dicembre / 13
8 Tutte le strade portano a Roma 2012/05/03 E possibile ripetere Roma a partire da tutti i nodi, con un costo pari a O(n(m + n)) = O(mn). Altrimenti, si consideri un ordinamento topologico del grafo trasposto: se il primo non è di tipo Roma, allora nessuno lo è; se è di tipo Roma, allora potrebbero essercene altri ma basta il primo. Chiamiamo quindi isroma() a partire da esso. Roma(Graph G T ) Stack S = topsort(g T ) Node v = S.pop() return isroma(g T, v) Il costo è O(m + n). Alberto Montresor (UniTN) 15 dicembre / 13
9 Pozzo universale universalsink(int[ ][ ] A) i = 1 candidate = false while i < n candidate == false do j = i + 1 while j n A[i, j] == 0 do j = j + 1 if j > n then candidate = true else i = j rowtot = j {1...n} {i} A[i, j] coltot = j {1...n} {i} A[j, i] return rowtot = 0 coltot = n 1 Alberto Montresor (UniTN) 15 dicembre / 13
10 Griglia quadrata int grid(int[ ][ ] M, int n) int[ ] dr = [ 1, 0, +1, 0] % Mosse possibili sulle righe int[ ] dc = [0, 1, 0, +1] % Mosse possibili sulle colonne int[ ] distance = new int[1... n][1... n] Queue Q = Queue() for r = 1 to n do for c = 1 to n do distance[r][c] = iif(m[r][c] == 1, 0, 1) if M[r][c] == 1 then Q.enqueue( r, c ) [...] Alberto Montresor (UniTN) 15 dicembre / 13
11 Griglia quadrata int grid(int[ ][ ] M, int n) [...] while not Q.isEmpty() do int, int r, c = Q.dequeue() % Riga, colonna della cella visitata correntemente for i = 1 to 4 do nr = r + dr[i] % Nuova riga nc = c + dc[i] % Nuova colonna if 1 nr n and 1 nc n and distance[nr][nc] < 0 then distance[nr][nc] = distance[r][c] + 1 if M[nr][nc] == 3 then return distance[nr][nc] else Q.enqueue( nr, nc ) Alberto Montresor (UniTN) 15 dicembre / 13
12 Good vs bad guys Il problema proposto è quello della bi-colorazione di un grafo, che è possibile se e solo se il grafo è bipartito. La bi-colorazione può essere ottenuta facilmente tramite una visita DFS: boolean good-bad-guys(graph G) int[ ] C = new int[1... G.n] for u = 1 to n do C[u] = 1 foreach u G.V () do if C[u] < 0 then if not dfsvisit(g, u, 0, C) then return false return true Alberto Montresor (UniTN) 15 dicembre / 13
13 Good vs bad guys boolean dfsvisit(graph G, int u, int c, int[ ] C) C[u] = c foreach v G.adj(u) do if C[v] < 0 then if not dfsvisit(g, v, 1 c, C) then return false else if C[v] == c then return false return true Alberto Montresor (UniTN) 15 dicembre / 13
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
Gli ordini di visita di un albero binario di 9 nodi sono i seguenti: A, E, B, F, G, C, D, I, H (anticipato)
Alberi Indovina l albero Gli ordini di visita di un albero binario di 9 nodi sono i seguenti: A, E, B, F, G, C, D, I, H (anticipato) B, G, C, F, E, H, I, D, A (posticipato) B, E, G, F, C, A, D, H, I (simmetrico).
Esercizi Capitolo 9 - Grafi
Esercizi Capitolo 9 - Grafi 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
Algoritmi e Strutture di Dati (3 a Ed.) Errata corrige. Alan Bertossi, Alberto Montresor
Algoritmi e Strutture di Dati (3 a Ed.) Errata corrige Alan Bertossi, Alberto Montresor Gli autori saranno riconoscenti a chiunque segnali errori presenti nel libro di testo, scrivendo ad [email protected].
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
Ottimizza la somma. Supponete di avere in input un vettore di n interi positivi distinti V [1... n] e un valore W. Scrivere un algoritmo che:
Ottimizza la somma Supponete di avere in input un vettore di n interi positivi distinti V [1... n] e un valore W. Scrivere un algoritmo che: 1 restituisca il massimo valore X = n i=1 x[i]v [i] tale che
Il passo del gambero. La soluzione di problemi con la tecnica del Backtracking. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez.
Il passo del gambero La soluzione di problemi con la tecnica del Backtracking Nel labirinto Nel labirinto In ogni posizione provo sistematicamente tutte le strade, ricordando ogni volta l ultima scelta
Quarto allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale
Quarto allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini [email protected] - [email protected] 30 marzo 2017 Programma 1. Lettura e analisi di un problema 2.
Esercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla [email protected] 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
Terzo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale
Terzo allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini [email protected] - [email protected] 22 marzo 2016 Programma 1. Lettura di un problema tratto dalle
Esercizi Union-Find e su Grafi. Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 0 07 Esercizi Union-Find e su Grafi. Ugo Vaccaro. Esercizio: Scrivere pseudocodice per Make-Set, Union, e Find-Set usando la rappresentazione attraverso liste
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
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
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 è
Il passo del gambero. Nel labirinto. Nel labirinto. La soluzione di problemi con la tecnica del Backtracking
Il passo del gambero La soluzione di problemi con la tecnica del Backtracking In ogni posizione provo sistematicamente tutte le strade, ricordando ogni volta l ultima scelta compiuta Ordine in cui tenteremo
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
Grafi: ordinamento topologico
.. Grafi: ordinamento topologico Che cosa e e come si calcola Che cosa e un ordinamento topologico F. Damiani - Alg. & Lab. 04/05 Una definizione di ordinamento topologico Definizione. Funzione σ: V {1,
Algoritmi e Strutture Dati. Alberi
Algoritmi e Strutture Dati Alberi Alberto Montresor Università di Trento 2017/10/19 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario 1 Introduzione
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
Algoritmi e Strutture Dati
Introduzione ai grafi Grafi: Definizione e Algoritmi di visita Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2007/08 Introduzione ai
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati 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
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Appello del 24 Gennaio 2007 Esercizio 1 (ASD) 1. Sia T (n) = T (n/6) + T (n/3) + Θ(n). Considerare ciascuna delle seguenti affermazioni
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
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
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,
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]
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,
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
Esercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 9 Agosto, 204 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
Esercizi per il corso di Algoritmi, anno accademico 2011/12
Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli
Esercitazione 3. Osserviamo che, dato un grafo con pesi distinti, questo ammette un unico MST.
Esercitazione 3 Problema 6: Sia G = (V, E) un grafo con pesi distinti sugli archi ed e E un arco di G. Progettare un algoritmo lineare in grado di determinare se esiste un MST di G che contiene l arco
Algoritmi e Strutture Dati. Backtracking
Algoritmi e Strutture Dati Backtracking Alberto Montresor Università di Trento 2016/12/08 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario 1 Introduzione
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
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)
Algoritmi e Strutture Dati. Backtracking
Algoritmi e Strutture Dati Backtracking Alberto Montresor Università di Trento 2018/11/07 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. q Sommario 1 Introduzione
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
Progettazione di algoritmi
Progettazione di algoritmi Discussione dell'esercizio [labirinto] Nel testo dell'esercizio abbiamo considerato come lunghezza del percorso il numero di bivi ma possiamo stimare meglio la lunghezza reale
Algoritmi e Strutture Dati. Capitolo 13 Cammini minimi: Algoritmo di Bellman e Ford
Algoritmi e Strutture Dati Capitolo 13 Cammini minimi: Algoritmo di Bellman e Ford Cammini minimi in grafi: una trilogia Cammini minimi in grafi: Episodio II: cammini minimi a singola sorgente (per grafi
Grafi. V = {a, b, c, d} E = {(a, b), (a, c), (c, a), (d, d), (b, d)}
Grafi Grafo orientato (o diretto) = (V,E) V = nodi o vertici - E = archi (edges) V = {a, b, c, d} E = {(a, b), (a, c), (c, a), (d, d), (b, d)} archi uscenti da un nodo x: (x, y) archi incidenti su un nodo
ESERCIZI SULLA TECNICA Greedy
ESERCIZI SULLA TECNICA Greedy 1. [FILE] Si supponga di avere n files di lunghezze l 1,..., l n (interi positivi) che bisogna memorizzare su un disco di capacità data D. Si assuma che la somma delle lunghezze
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
Esercizi Capitolo 5 - Alberi
Esercizi Capitolo 5 - Alberi Alberto Montresor 23 settembre 2010 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle
Matrici unimodulari e totalmente unimodulari
Matrici unimodulari e totalmente unimodulari Sia una matrice intera di dimensione con, si dice unimodulare se presa una qualsiasi sottomatrice di ordine massimo (di dimensione ) vale det = 1, +1, 0. Una
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,
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
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
Note per la Lezione 22 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 0 09 Note per la Lezione Ugo Vaccaro Nella lezione scorsa abbiamo introdotto la vista in ampiezza di grafi. Essenzialmente, esso è un metodo per esplorare in
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
PROVETTE D ESAME. Algoritmi e Strutture Dati
PROVETTE D ESAME Algoritmi e Strutture Dati ESERCIZIO 1 Si ottengano limiti superiori e inferiori per la seguente ricorrenza ESERCIZIO 1 ESERCIZIO 2 Dato un albero binario T, il grado di sbilanciamento
Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi
Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 (Esercizio C-14.34 del testo [GTG14]) Sia G = (V, E) un grafo non diretto con n =
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
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
