Grafi Moreno Marzolla http://www.moreno.marzolla.name/

Slides:



Advertisements
Presentazioni simili
Metodologia Sperimentale Agronomica / Metodi Statistici per la Ricerca Ambientale Marco Acutis a.a CdS.
Advertisements

I circuiti elettrici.
IL GOLD STANDARD: INTRODUZIONE
XXXII CONVEGNO NAZIONALE Società Italiana di Chimica Agraria
Il problema dello zaino
Campi di gravità e topografia: analisi con QGIS
Regole associative Gianluca Amato
Ciclo di Seminari e Corso
Valutazione dei risultati della classificazione
Generalità Laboratorio Arduino.
Natura e origini della attuale crisi europea
ECONOMIA DELLE ISTITUZIONI FINANZIARIE
Stato di COMPASS Franco Bradamante CSN1 Roma, 16 luglio 2012.
La struttura dei materiali
ESSERE HOMELESS: PERCORSI DI VITA E FATTORI DETERMINANTI
Introduzione a VPN Ing. Gianpiero Ciacci.
Le verifiche empiriche del teorema di Heckscher-Ohlin: il paradosso di Leontief Wassily Leontief realizzò la prima verifica empirica del teorema di HO.
…. modello di Solow?.
Politica economica: che cosa è?
 π BUZZO GIACOMO D’AGOSTINO ALBERTO DE ANGELIS FEDERICA
“BLAISE PASCAL”- Voghera-
La vitamina C è una molecola contenente C,H e O
REDDITO DI CITTADINANZA E OPPORTUNITA’ ECONOMICA: UN CONFRONTO TRA ITALIA E RESTO D’EUROPA Pasquale Tridico Dipartimento di Economia, Università Roma Tre.
Classificazione e Predizione
L’economia monetaria Corso di Economia delle Istituzioni Finanziarie
L’infiltrazione LM-75: 2016/2017
UN NUOVO MODO DI GUARDARE IL MONDO
LA PREVENZIONE INCENDI NELLE STRUTTURE RELIGIOSE APERTE AL PUBBLICO
LE NOVITÀ DEL BILANCIO 2016 …………………………………………………………………………………………………………..
Le unità territoriali per le analisi socio-economiche
Pompe di calore a integrazione geotermica
ISTITUZIONI (regole scritte e nn scritte che governano l’interazione tra individui) → d.p. e contratti → norme sociali con appropriati Δ delle regole.
Università di Roma Tor Vergata
Convegno europeo sui minori
ATIPICITA’ DEL FATTORE UMANO NEL PILOTAGGIO DEI DRONI
CALENDARIO LEZIONI AGGIORNATO
RAEE è l’acronimo di Rifiuti da Apparecchiature Elettriche ed Elettroniche; ogni elettrodomestico ha un ciclo di vita terminato il quale, sia per malfunzionamento.
Appunti per ostetriche e non solo
Ricerca e innovazione:
Pubblica Amministrazione: semplificazione e costi della politica
Il processo di analisi dei fabbisogni
Comunicazioni Assemblea nazionale TTA 1-2 dicembre 2016
Proactive Care e Proactive Care Advanced
Maria Antonietta Volonté Dipartimento di Neurologia
IL CONFLITTO NELLA CHIESA PRIMITIVA
Piano di formazione Docenti neoassunti a.s. 2016/2017
È possibile rendere comprensibile oggi questo termine filosofico, al di fuori della esigua cerchia degli specialisti? Io una volta ci ho provato in una.
ACCORDO AGROAMBIENTALE D’AREA OPPORTUNITA’ PER LA VALDASO
Il secondo principio.
PROGETTO RELAZIONI PREPOTENTI
Vitamine Sono sostanze organiche a basso peso molecolare strutturalmente assai varie indispensabili per lo svolgimento delle funzioni vitali, di origine.
La misurazione e la valutazione della performance
1.2 Nuovi prodotti alimentari
ASSOCIAZIONE ITALIANA GIURISTI DI IMPRESA
L’evoluzione del Diritto delle Assicurazioni Continuità o rottura con il passato? Avv. Giuseppe Ranieri Studio Legale Tributario Ranieri Comitato Esecutivo.
ADOZIONE INTERNAZIONALE
Esame delle modifiche apportate al precedente ordinamento
e l’associazione in partecipazione
Profilo biografico e opere
IL TOTALITARISMO.
L’Imposta sul reddito delle società (IRES)
Asl Vco – Direzione Generale
Assunzioni, Attività, Investimenti
UROLOGIA - RIMINI VISITE UROLOGICHE AMBULATORIALI REGIME RICOVERO
Endometriosi profonda: quando la chirurgia
Nota AIFA 75 Determinazione 18 novembre 2010 (GU 29 novembre 2010, n. 279): modifiche, con riferimento alla nota AIFA 75,  alla determinazione del 4 gennaio.
PIANO DI RIORDINO PRESIDI DI FOLIGNO E SPOLETO
SINTOMI DEL BASSO APPARATO URINARIO 4 MARZO 2017
Con gli occhi di Maxwell
Transcript della presentazione:

Grafi Moreno Marzolla http://www.moreno.marzolla.name/

Algoritmi e Strutture Dati Original work Copyright © Alberto Montresor, Università di Trento, Italy (http://www.dit.unitn.it/~montreso/asd/index.shtml) Modifications Copyright © 2010, 2011 Moreno Marzolla, Università di Bologna, Italy (http://www.moreno.marzolla.name/teaching/ASD2010/) This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Esempi di grafi e a d b c v1 v5 v4 v2 v3 e1 e2 e3 e4 Algoritmi e Strutture Dati

Esempi di grafi Link tra le pagine web di amazon.com Algoritmi e Strutture Dati (Fonte: http://www.allthingsdistributed.com/2006/07/graphs_as_art.html)

Esempi di grafi Import/Export http://www.cmu.edu/joss/content/articles/volume4/KrempelPlumper.html Algoritmi e Strutture Dati

Esempi di grafi Rotte commerciali medievali http://en.wikipedia.org/wiki/File:Late_Medieval_Trade_Routes.jpg Algoritmi e Strutture Dati

Esempi di grafi Relazioni romantiche From the American Journal of Sociology, Vol. 100, No. 1. "Chains of affection: The structure of adolescent romantic and sexual networks," Bearman PS, Moody J, Stovel K. http://www.journals.uchicago.edu/doi/abs/10.1086/386272 Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Problemi sui grafi Visite Visite in ampiezza (cammini minimi singola sorgente) Visite in profondità (ordinamento topologico, componenti fortemente connesse) Cammini minimi Da singola sorgente Fra tutte le coppie di vertici Alberi di connessione minimi Problemi di flusso .... Algoritmi e Strutture Dati

Grafi orientati e non orientati: definizione Un grafo orientato G è una coppia (V, E) dove: Insieme finito dei vertici V Insieme degli archi E: relazione binaria tra vertici Un grafo non orientato G è una coppia (V, E) dove: Insieme finito dei vertici V Insieme degli archi E: coppie non ordinate A B C E D F A B C E D F V = {A, B, C, D, E, F} E = { (A,B), (A,D), (B,C), (D,C), (E,C), (D,E), (D,A) } V = {A, B, C, D, E, F} E = { {A,B}, {A,D}, {B,C}, {C,D}, {C,E}, {D,E} } Algoritmi e Strutture Dati

Definizioni: incidenza e adiacenza In un grafo orientato l'arco (v,w) è incidente da v in w Un vertice w è adiacente a v se e solo se (v, w)  E In un grafo non orientato la relazione di adiacenza tra vertici è simmetrica (A, B) è incidente da A a B (A, D) è incidente da A a D (D, A) è incidente da D a A A B C E D F B è adiacente ad A C è adiacente a B, D, E A è adiacente a D e viceversa B non è adiacente a D, C F non è adiacente ad alcun vertice Algoritmi e Strutture Dati

Rappresentazione di grafi Operazioni che la struttura dati deve supportare numVertici()→intero numArchi()→intero grado(vertice v)→intero archiIncidenti(vertice v)→(arco, arco, ... arco) estremi(arco e)→(vertice, vertice) opposto(vertice x, arco e)→vertice sonoAdiacenti(vertice x, vertice y)→booleano aggiungiVertice(vertice v) aggiungiArco(vertice x, vertice y) rimuoviVertice(vertice v) rimuoviArco(arco e) Algoritmi e Strutture Dati

Matrice di adiacenza (grafo non orientato) Spazio: Θ(|V|2) 𝑀 𝑢,𝑣 = 1 𝑠𝑒 𝑢,𝑣 ∈𝐸 0 𝑎𝑙𝑡𝑟𝑖𝑚𝑒𝑛𝑡𝑖 A B C D E F 𝑀=  0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0  A A B C E D F B C Notiamo che la matrice M2 ci da informazioni sul fatto che due nodi siano connessi con un cammino di lunghezza due. In particolare, M2(x,y) è diverso da zero se e solo se esiste un cammino di lunghezza 2 che connette x con y. In generale, Mk(x,y) è diverso da zero se e solo se esiste un cammino di lunghezza k che connette x con y. D E F Algoritmi e Strutture Dati

Proprietà della matrice di adiacenza 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 2 0 2 0 1 0 0 2 0 2 1 0 2 0 3 1 1 0 0 2 1 3 1 0 1 1 1 1 2 0 0 0 0 0 0 0 M3 0 4 1 5 2 0 4 0 5 1 2 0 1 5 2 6 4 0 5 1 6 2 4 0 2 2 4 4 2 0 0 0 0 0 0 0 A B C E D F Algoritmi e Strutture Dati

Costi Matrice di adiacenza grado(vertice v)→intero O(n) archiIncidenti(vertice v)→(arco, arco, ... arco) O(n) sonoAdiacenti(vertice x, vertice y)→booleano O(1) aggiungiVertice(vertice v) O(n2) aggiungiArco(vertice x, vertice y) O(1) rimuoviVertice(vertice v) O(n2) rimuoviArco(arco e) O(1) Indichiamo con n=|V|, m=|E| Algoritmi e Strutture Dati

Liste di adiacenza (grafo non orientato) Spazio: Θ(|V|+|E|) v.adj = { w | {v,w} ÎE } A B C D E F B D A C A B C E D F B D E A C E C D Algoritmi e Strutture Dati

Costi Liste di adiacenza grado(vertice v)→intero O(δ(v)) archiIncidenti(vertice v)→(arco, arco, ... arco) O(δ(v)) sonoAdiacenti(vertice x, vertice y)→booleano O(min{δ(x), δ(y)}) aggiungiVertice(vertice v) O(1) aggiungiArco(vertice x, vertice y) O(1) rimuoviVertice(vertice v) O(m) rimuoviArco(arco e) O(δ(x)+δ(y)) Indichiamo con n=|V|, m=|E|, δ(x) = grado del nodo x (spiegato in seguito) Algoritmi e Strutture Dati

Liste di archi (grafo non orientato) Spazio: Θ(|E|) {A,B} {B,C} A B C E D F {C,D} {A,D} {D,E} {C,E} Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Costi Liste di archi grado(vertice v)→intero O(m) archiIncidenti(vertice v)→(arco, arco, ... arco) O(m) sonoAdiacenti(vertice x, vertice y)→booleano O(m) aggiungiVertice(vertice v) O(1) aggiungiArco(vertice x, vertice y) O(1) rimuoviVertice(vertice v) O(m) rimuoviArco(arco e) O(1) Nota: molte operazioni sono inefficienti perché richiedono la scansione dell'intera lista di archi Algoritmi e Strutture Dati

Liste di incidenza (grafo non orientato) {A,B} A 3 1 {B,C} A B C E D F B 1 C 1 2 5 2 {C,D} D 3 2 4 3 {A,D} E 4 5 F 4 {D,E} 5 {C,E} Algoritmi e Strutture Dati

Costi Liste di incidenza grado(vertice v)→intero O(δ(v)) archiIncidenti(vertice v)→(arco, arco, ... arco) O(δ(v)) sonoAdiacenti(vertice x, vertice y)→booleano O(min{δ(x), δ(y)}) aggiungiVertice(vertice v) O(1) aggiungiArco(vertice x, vertice y) O(1) rimuoviVertice(vertice v) O(m) rimuoviArco(arco e) O(δ(x)+δ(y)) Indichiamo con n=|V|, m=|E|, δ(x) = grado del nodo x (spiegato in seguito) Algoritmi e Strutture Dati

Matrice di adiacenza (grafo orientato) Spazio: Θ(|V|2) 𝑀 𝑢,𝑣 = 1 𝑠𝑒 𝑢,𝑣 ∈𝐸 0 𝑎𝑙𝑡𝑟𝑖𝑚𝑒𝑛𝑡𝑖 A B C D E F 𝑀=  0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0  A A B C E D F B C D E F Algoritmi e Strutture Dati

Liste di adiacenza (grafo orientato) Spazio: Θ(|V|+|E|) v.adj = { w | (v,w) ÎE } A B C D E F B D C A B C E D F E A C D Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Grafi pesati In alcuni casi ogni arco ha un peso (o costo) associato Il costo può essere determinato tramite una funzione di costo c: E  R, dove R è l’insieme dei numeri reali Quando tra due vertici non esiste un arco, si dice che il costo è infinito c( (C,F) ) = ∞ 4 A B C E D F 3 4 7 1 -2 Algoritmi e Strutture Dati

Matrice di adiacenza in grafi non orientati pesati Spazio: Θ(|V|2) 𝑀 𝑢,𝑣 = 𝑐 𝑢,𝑣 𝑠𝑒 𝑢,𝑣 ∈𝐸 ∞ 𝑎𝑙𝑡𝑟𝑖𝑚𝑒𝑛𝑡𝑖 A B C D E F 𝑀=  ∞ 3 ∞ 1 ∞ ∞ 3 ∞ 4 ∞ ∞ ∞ ∞ 4 ∞ 4 7 ∞ 1 ∞ 4 ∞ −2 ∞ ∞ ∞ 7 −2 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞  A 4 A B C E D F B 3 C 4 7 1 D -2 E F Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Definizioni: grado In un grafo non orientato, il grado di un vertice è il numero di archi che partono da esso A B C E D F A, B ed E hanno grado 2 C e D hanno grado 3 F ha grado 0 Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Definizioni: grado In un grafo orientato, il grado entrante (uscente) di un vertice è il numero di archi incidenti in (da) esso In un grafo orientato il grado di un vertice è la somma del suo grado entrante e del suo grado uscente A ha g. u. 2 e g. e. 1 B ha g. u. 1 e g. e. 1 C ha g. u. 0 e g. e. 3 D ha g. u. 3 e g. e. 1 A e C hanno grado 3 B ha grado 2 D ha grado 4 A B C E D F Algoritmi e Strutture Dati

Algoritmi e Strutture Dati ...Nel mondo reale Il Web può essere visto come un grafo orientato in cui i nodi rappresentano le singole pagine, ed esiste un arco (u,v) sse la pagina u contiene un hyperlink che punta verso la pagina v A. Broder et al., “Graph Structure of the Web”, http://www9.org/w9cdrom/160/160.html Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Cammini Un cammino in G=(V,E) è una sequenza di vertici <w0, w1, ..., wk> tale che {wi, wi+1}  E per 0 ≤ i ≤ k–1 Il cammino <w0, w1, w2, ..., wk> contiene i nodi w0 , w1 ,…, wk e gli archi {w0,w1 } {w1,w2 } ...{wk-1,wk } La lunghezza del cammino è il numero di archi attraversati A B C E D F <A, B, C, E> è un cammino di lunghezza 3 Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Cammini Un cammino si dice semplice se tutti i suoi vertici sono distinti (compaiono una sola volta nella sequenza) A B C E D F Il cammino <A, B, C, E> è semplice... ... ma il cammino <A, B, C, E, D, C > non è semplice, poiché C è ripetuto A B C E D F Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Cammini Se esiste un cammino c tra i vertici v e w, si dice che w è raggiungibile da v tramite c A è raggiungibile da D e viceversa D è raggiungibile da A ma non viceversa A B C E D F A B C E D F Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Grafi connessi Se G è un grafo non orientato, diciamo che G è connesso se esiste un cammino da ogni vertice ad ogni altro vertice. Questo grafo non orientato è connesso. A B C E D F A B C E D F Questo grafo non orientato non è connesso. Algoritmi e Strutture Dati

Grafi fortemente connessi Se G è un grafo orientato, diciamo che G è fortemente connesso se esiste un cammino da ogni vertice ad ogni altro vertice. Questo grafo orientato non è fortemente connesso; ad es., non esiste cammino da D a A. Questo grafo orientato è fortemente connesso. A B C E D F A B C E D F Algoritmi e Strutture Dati

Versione non orientata Se G è un grafo orientato, il grafo ottenuto ignorando la direzione degli archi e i cappi è detto grafo non orientato sottostante o anche versione non orientata di G. A B C E D F A B C E D F Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Versione orientata Se G è un grafo non orientato, il grafo ottenuto inserendo due archi orientati opposti per ogni arco non orientato del grafo è detto la versione orientata di G. A B C E D F A B C E D F Algoritmi e Strutture Dati

Grafi debolmente connessi Se G è un grafo orientato che non è fortemente connesso, ma la sua versione non orientata è connessa, diciamo che G è debolmente connesso A B C E D F Questo grafo orientato non è fortemente connesso, ma è debolmente connesso Algoritmi e Strutture Dati

Algoritmi e Strutture Dati ...Nel mondo reale A. Broder et al., “Graph Structure of the Web”, http://www9.org/w9cdrom/160/160.html Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Cicli Un ciclo in un grafo orientato è un cammino <w0, w1, …, wn> di lunghezza almeno 3, tale che w0 = wn Un ciclo è semplice se i nodi w1, ..., wn-1 sono tutti distinti Il cammino <A, B, C, E, D, A> è un ciclo semplice A B C E D A B C E D Il ciclo <A, B, C, E, D, C, B, A> non è un ciclo semplice Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Grafi aciclici Un grafo senza cicli è detto aciclico. Un grafo orientato aciclico è chiamato DAG (Directed Acyclic Graph). Grafo aciclico A B C E D F A B C E D F A B C E D F Grafo non aciclico Algoritmi e Strutture Dati

Grafo completo Un grafo non orientato completo è un grafo non orientato che ha un arco tra ogni coppia di vertici. Quanti archi ci sono in un grafo non orientato completo? A B C E D A B C E D Questo grafo non è completo Questo grafo è completo  𝑛 2  = 𝑛 𝑛−1 2 = ∣𝑉∣ ∣𝑉∣−1 2 Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Alberi Un albero libero è un grafo non orientato connesso, aciclico. Se un vertice è detto radice, otteniamo un albero radicato. Albero libero Radice Albero radicato A B C E D F A B C E D F Algoritmi e Strutture Dati