Ordinamento topologico

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture dati Mod B
Advertisements

Depth-first search Visita in profondità di un grafo Algoritmo Esempio
Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Estendere i linguaggi: i tipi di dato astratti
Algoritmi e Strutture Dati
Moltiplicazioni con le frazioni
Cammini minimi con una sorgente
RB-alberi (Red-Black trees)
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
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
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
Visite di grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Cammini minimi Algoritmo SPT.Acyclic
Algoritmi e Strutture Dati (Mod. B)
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.
Algoritmo di Kruskal Parte con tutti i vertici e nessun lato (sottografo aciclico, o foresta, ricoprente) Ordina i lati per costo non decrescente.
Sottoinsiemi disgiunti
Algoritmi greedy Gli algoritmi greedy in genere non sono esatti, cioè determinano soluzioni non necessariamente ottime Per il problema dell’albero ricoprente.
Esempio di esecuzione dellalgoritmo di Prim 1 v1v1 v5v5 v2v2 v3v3 v4v U = {v 1 } X =Ø 1 v1v1 v5v5 v2v2 v3v3 v4v U = {v.
Algoritmi su grafi I grafi sono strutture dati che vengono usate estensivamente in informatica. Ci sono migliaia di problemi computazionali che sono importanti.
Ispezione lineare La funzione hash h(k,i) si ottiene da una funzione hash ordinaria h'(k) ponendo L’esplorazione inizia dalla cella h(k,0) = h'(k) e continua.
Grafi.
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
Algoritmi e Strutture Dati
Usi (meno scontati) della visita DFS
Componenti fortemente connesse
Grafi Rappresentazione mediante liste di adiacenza:
Corso di Informatica 2 a.a. 2003/04 Lezione 6
Cammini minimi da un sorgente
Ordinamento topologico Cammino minimo dalla 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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Capitolo 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
Olimpiadi di Informatica 2010 Giornate preparatorie
Algoritmi elementari su grafi
Ordinamento topologico
Flusso Massimo Applicazione di algoritmi
Componenti fortemente connesse
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Capitolo 11 Visite di grafi 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)
B-Alberi Algoritmi su grafi
Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati.
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
Algoritmi e Strutture Dati
APPUNTI DI GEOMETRIA ANALITICA DELLA RETTA
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°9.
Transcript della presentazione:

Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco <u, v> del grafo, u preceda v nell’ordinamento. Un ordinamento topologico di un dag è un ordinamento lineare dei suoi vertici che soddisfa la condizione precedente, cioè, per ogni arco <u, v> del grafo, u precede v nell’ordinamento.

Esempio: C F A E D B F C E D A B È un ordinamento topologico Infatti disegnando gli archi del grafo essi risultano tutti orientati nella stessa direzione (da sinistra verso destra): F C E D A B

Esempio: A D B C E F Ma non è l’unico, anche i seguenti sono ordinamenti topologici A B C F D E C D A F E B

Come è possibile usare una visita del grafo per scoprire un suo ordinamento topologico? Visitiamo il grafo in profondità considerando i vertici in ordine alfabetico: A B C D E F Otteniamo i seguenti tempi di inizio e fine visita A D B C E F 1/4 2/3 5/10 11/12 8/9 6/7

Riportiamo i tempi sui vertici nel primo ordinamento preso in esame F C E D A B 1/4 2/3 5/10 11/12 8/9 6/7 Anche per gli altri due ordinamenti si possono trovare degli ordini, in cui considerare i vertici per effettuare una visita in profondità, che permettono di “intuire” quale informazione ottenuta con la visita stessa è utile per scoprire un ordinamento topologico.

Per il secondo ordinamento, se visitiamo i vertici nell’ordine: E D F C A B, si ottiene: A D B C E F 9/12 10/11 7/8 5/6 1/2 3/4 A B C F D E 3/4 1/2 10/11 9/12 7/8 5/6

Ed infine, visitando i vertici nell’ordine B E F A C B, si ottiene, per il terzo ordinamento: A D B C E F 7/8 1/2 9/12 5/6 3/4 10/11 C D A F E B 3/4 1/2 10/11 9/12 7/8 5/6

Che cosa hanno in comune i tre ordinamenti, rispetto alle visite? F C E D A B 1/4 2/3 5/10 11/12 8/9 6/7 A B C F D E 3/4 1/2 10/11 9/12 7/8 5/6 C D A F E B 3/4 1/2 10/11 9/12 7/8 5/6

I vertici sono sempre in ordine decrescente dei tempi di fine visita Che cosa hanno in comune i tre ordinamenti, rispetto alle visite? F C E D A B 1/4 2/3 5/10 11/12 8/9 6/7 A B C F D E 3/4 1/2 10/11 9/12 7/8 5/6 C D A F E B 3/4 1/2 10/11 9/12 7/8 5/6 I vertici sono sempre in ordine decrescente dei tempi di fine visita

Adattiamo la struttura standard dell’algoritmo di visita al problema dell’ordinamento topologico. Basta creare una lista dei vertici in ordine decrescente dei tempi di fine visita.

Topological_Sort (G) INIZIALIZZA (G) for ogni u  V do if color u = white then DFS-topologica (G, u) DFS-topologica (G, u) color u  gray d[u]  time  time + 1 while c’è v  ADJ u non considerato do if color v = white then v  u DFS-VISITA-ricorsiva (G, v) color u  black f[u]  time  time + 1 Intesta (u, LISTA)

Complessità: O(V + E)

Dimostrando che una (qualunque) DFS del grafo associa ai vertici tempi di fine visita tali che: f[v] < f[u] per ogni arco <u, v> del grafo, si dimostra la correttezza del programma. { G grafo orientato aciclico } VISITA_TUTTI_I_VERTICI (G) INIZIALIZZA (G) for ogni u  V do if color u = white then DFS-topologica (G, u) { LISTA contiene i vertici di G in ordine topologico }