Ordinamento topologico Cammino minimo dalla sorgente

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture dati Mod B
Advertisements

Depth-first search Visita in profondità di un grafo Algoritmo Esempio
Algoritmi e Strutture Dati
Master Bioinformatica 2002: Grafi Problema: cammini minimi da tutti i vertici a tutti i vertici Dato un grafo pesato G =(V,E,w), trovare un cammino minimo.
Algoritmi e Strutture Dati (Mod. B)
Grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 2 Copyright © The McGraw.
Algoritmi e Strutture Dati
Lez. 121 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Progettazione.
Cammini minimi con una sorgente
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Depth-first search Visita in profondità di un grafo Algoritmo Esempio
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Cammini minimi con sorgente singola
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Esercizi su alberi binari
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Visite di grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Cammini minimi Algoritmo SPT.Acyclic
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Trovare il percorso minimo da b ad ogni altro vertice
Algoritmi e Strutture Dati (Mod. B)
Grafi.
Algoritmi greedy Gli algoritmi greedy in genere non sono esatti, cioè determinano soluzioni non necessariamente ottime Per il problema dell’albero ricoprente.
Algoritmi su grafi I grafi sono strutture dati che vengono usate estensivamente in informatica. Ci sono migliaia di problemi computazionali che sono importanti.
Grafi.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Grafi.
Usi (meno scontati) della visita DFS
Algoritmi e Strutture Dati
Componenti fortemente connesse
Cammini minimi tra tutte le coppie
Web Communities and their identificaton
Grafi Rappresentazione mediante liste di adiacenza:
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Cammini minimi da un sorgente
Usi (meno scontati) della visita DFS. Informazioni utili: tenere il tempo clock=1 pre(v)=clock clock=clock+1 post(v)=clock; clock=clock+1 pre(v): tempo.
Alberi di copertura minimi. Dato un grafo pesato G = (V,E), si richiede di trovare un albero T = (V,E’), E’  E, tale che la somma dei pesi associati.
Usi (meno scontati) della visita DFS lezione basata sul capito 3 del libro Algorithms, di Dasgupta, Papadimitriou, Vazirani, McGraw-Hill.
AlgoLab - Code unificabili Code unificabili con alberi binomiali Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
AlgoLab - MST code binomiali Algoritmi per il calcolo di MST: uso di code unificabili Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
Capitolo 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
Ordinamento topologico
Olimpiadi di Informatica 2010 Giornate preparatorie
algoritmi approssimati
Algoritmi elementari su grafi
Ordinamento topologico
Flusso Massimo Applicazione di algoritmi
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Master Bioinformatica 2002: Visite di Grafi La struttura dati D è una PILA (STACK) Visita in profondità o Depth-First-Search (DFS)
Prof. Cerulli – Dott. Carrabs
Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi: Algoritmo di ordinamento topologico, di Dijkstra, e di Floyd e Warshall Algoritmi e Strutture Dati.
Algoritmi approssimati. Algoritmi approssimati Per qualche problema NP-completo esistono algoritmi polinomiali che ritornano soluzioni “quasi ottime”.
Master Bioinformatica 2002: Visite di Grafi Algoritmi di visita Scopo: visitare tutti i vertici di un grafo per scoprirne proprietà di vario tipo. Alcune.
Grafi: rappresentazione e visita
Capitolo 13 Cammini minimi: algoritmo di Dijkstra Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Cammini minimi fra tutte le coppie:
Cammini minimi in grafi:
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Capitolo 13 Cammini minimi: algoritmo di Dijkstra Algoritmi e Strutture Dati.
Transcript della presentazione:

Ordinamento topologico Cammino minimo dalla sorgente Algoritmi sui grafi Ordinamento topologico Cammino minimo dalla sorgente

Ordinamento topologico Dato un grafo finito orientato aciclico G = V, A, un ordinamento topologico di G consiste in una permutazione v1,…,vn di V tale che: (vi, vj)  A  i  j. Esempio: G 1 2 1, 3, 2, 4 è un ordinamento topologico di G; 1, 2, 4, 3 non lo è perché (3,2)  A mentre 3 segue 2 in questa permutazione. 3 4

Visita in profondità rivista DFS (G = V,A) foreach v  V // inizializza i colori Color[v] := White; Time[v] := indef; time := 0; // variabile globale foreach u  V // itera la visita in prof. if Color[u] = White then DFS-Visit(u) DFS-Visit (u) Color[u] := Gray; time := time + 1; foreach v  Adj[u] if Color[v] = White then DFS-Visit(v); Color[u] := Black; Time[u] := time; time := time + 1;

Tempi e precedenze Teorema. Sia G = V, A un grafo orientato aciclico. Se (u,v)  A, con u  v, allora dopo DFS(G) Time[u] > Time[v]. Dim. P.a. sia (u,v)  A tale che Time[u] < Time[v]. Allora al tempo t = Time[u] si ha Color[u] = Black, Color[v] = White  Color[v] = Gray. Color[v] = White è impossibile perché, se (u,v)  A allora la visita di u non è completa (e quindi u non avrebbe potuto diventare nero al tempo t); Color[v] = Gray: allora esiste t< t tale che si abbia: al tempo t Color[u] = White  Color[v] = Gray, al tempo t + 1 Color[u] = Color[v] = Gray. Quindi esiste in G un cammino da v ad u (per la struttura della frontiera in DFS-Visit); ma allora (u,v)  A implica che G sia ciclico. 

Topological Sorting (TS) TS (Graph G = (V,A)) foreach v  V // inizializza i colori Color[v] := White; l := NIL; // lista di vertici (globale) foreach u  V // itera la visita in prof. if Color[u] = White then DFS-Visit-List(u) return l; DFS-Visit-List (Vertex u) Color[u] := Gray; foreach v  Adj[u] if Color[v] = White then DFS-Visit(v); Color[u] := Black; l := Cons(u,l); // se u precede v in l allora // Time[u] > Time[v] in DFS(G)

Cammini minimi Dato un grafo orientato pesato G = V, A, w (w:A funzione peso), ed un cammino  = (v0, v1), … , (vk-1, vk) in G (not. v0  vk), si definisce il peso di  come la somma dei pesi degli archi: Problema del cammino minimo da sorgente singola. Dato G orientato e pesato ed un vertice s, per ogni vertice v determinare un cammino  tale che s  v e w*() = (s,v), dove: Nolta: w*() = 0 ( è il cammino vuoto), dunque (v,v) = 0 per ogni v.

Algoritmo di Dijkstra E’ una tecnica greedy basata sulla definizione di un confine superiore d[v] a (s,v) per ogni v, che viene progressivamente migliorato. Dijkstra(Graph G = (V,A), Vertex s) foreach v  V do d[v] := ; d[s] := 0; q := EmptyPriorityQueue (); // la priorita’ di ogni v in q e’ d[v] foreach v  V do Enqueue(v,q); while not IsEmptyQueue(q) do u := DequeueMin(q); foreach v  Adj[u] do if d[v] > d[u] + w(u,v) then d[v] := d[u] + w(u,v); RedefinePrior(v,d[v],q); return d; coda con estrazione del minimo rilassamento assegna priorità d[v] al vertce v in q

se v è stato visitato, allora d[v] = (s,v) Osservazioni Nell’algoritmo di Dijkstra: si presuppone che il grafo abbia pesi non negativi oppure che sia aciclico; si mantiene una partizione tra vertici visitati e non (v è stato visitato se e solo se d[v]  ); la priorità di un vertice v in q è d[v] ; l’invariante del ciclo principale è: se v è stato visitato, allora d[v] = (s,v) dove (s,v) è il valore di (s,v) nel sottografo formato dai vertici visitati e dagli archi i cui estremi siano stati visitati.

Fine