Grafi: ordinamento topologico

Documenti analoghi
Esempi. non. orientato. orientato

Grafi: visita generica

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Sommario. Rappresentazione dei grafi. Ordinamento topologico. Visita in ampiezza Visita in profondità

Depth-first search. Visita in profondità di un grafo Algoritmo Esempio Complessità dell algoritmo Proprietà Ordinamento topologico

Visite in Grafi BFS e DFS

Algoritmi e strutture dati

Algoritmi e Strutture Dati

Progettazione di algoritmi

Cammini minimi in grafi:

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte III

Algoritmi e Strutture Dati Grafi. Daniele Loiacono

Grafi (orientati): cammini minimi

Grafi diretti. Un grafo diretto (o grafo orientato) G è una coppia (V,E) dove. V è u n i n s i e m e d i nodi (o vertici);

Minimo albero di copertura

Tecniche Algoritmiche: divide et impera

Problema del cammino minimo

Grafi: definizioni e visite

Algoritmi e Strutture Dati

Cammini minimi. Definizioni. Distanza fra vertici. Proprietà dei cammini minimi. Algoritmi e Strutture Dati

Problemi, istanze, soluzioni

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Progettazione di Algoritmi

Grafi pesati Minimo albero ricoprente

UNIVERSITA DEGLI STUDI DI PERUGIA

Appunti di Algoritmi e Strutture Dati. Grafi. Gianfranco Gallizia

2.2 Alberi di supporto di costo ottimo

Grafi e reti di flusso

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

Capitolo 5. Algoritmi di ricerca su grafo. 5.1 Algoritmi di ricerca su grafo

2.2 Alberi di supporto di costo ottimo

Strutture dati per rappresentare grafi

Dati e Algoritmi 1: A. Pietracaprina. Grafi (II parte)

Grafi e gruppo fondamentale di un grafo

GRAFI. fig.1 - GRAFI (1) Si avvisa il lettore che certe definizioni che verranno date differiscono da quelle presenti in letteratura.

Progettazione di algoritmi

Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei

Terzo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

Progettazione di Algoritmi

Algoritmi e Strutture Dati

Cammini Minimi. Algoritmo di Dijkstra

Dispense per i corsi di Informatica generale Corso di laurea in Matematica e. Introduzione agli Algoritmi Corso di laurea in Informatica

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Introduzione ai grafi

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15

Alberi binari di ricerca

Cammini minimi fra tutte le coppie

OSTRUZIONI SUI GRAFI. Alcune ostruzioni per l esistenza di grafi con dato score 1) Vale il seguente lemma

Introduzione ai grafi. Introduzione ai grafi p. 1/2

Quarto allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

Problema dell albero di cammini minimi (SPT, Shortest Path Tree) o problema dei cammini minimi :

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

Ottimizzazione nella Gestione dei Progetti - Esercitazione 1: calcolo degli schedule ottimi

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Stallo di processi. Definizione del problema e modellizzazione Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Gestione della produzione e della supply chain Logistica distributiva

Sommario. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort

Algoritmi di visita di un grafo

Algoritmi e Strutture Dati

Algoritmo basato su cancellazione di cicli

Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.

Algoritmi e Strutture Dati (Modulo II)

Corso di elettrotecnica Materiale didattico: i grafi

Linguaggi e Grammatiche Liberi da Contesto

Esercizi su alberi binari

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi

e Algoritmi Marco Piastra Intelligenza Artificiale I Soddisfacibilità

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Il passo del gambero. La soluzione di problemi con la tecnica del Backtracking. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez.

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla

Suffix Trees. Docente: Nicolò Cesa-Bianchi versione 21 settembre 2017

Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari.

Transcript:

.. 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, n} tale che σ(u)< σ(v) se esiste un cammino da u a v in G Proprietà. Esiste se e solo se G è aciclico F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Un altra definizione di ordinamento topologico (equivalente alla precedente) Proprietà. 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. Definizione. 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.

Un algoritmo per il calcolo di un ordinamento topologico F. Damiani - Alg. & Lab. 04/05

Un algoritmo per il calcolo di un ordinamento topologico Tempo di esecuzione: O(n+m)? F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Un altro algoritmo per il calcolo di un ordinamento topologico F. Damiani - Alg. & Lab. 04/05

Esempio (1/2) Dato il grafo: A C F E B L ordinamento: F C E D A B D È 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 (2/2) A C F E B D Ma non è l unico, anche i seguenti sono ordinamenti topologici A B C F D E C D A F E B

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

Riprendiamo l esempio (2/5) Riportiamo i tempi sui vertici nel primo ordinamento preso in esame F C E D A B 11/12 5/10 8/9 6/7 1/4 2/3 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.

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

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

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

Un algoritmo per calcolare un ordinamento topologico 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, L ) INIZIALIZZA (G) for ogni u V do if color [u] =white then DFS-topologica (G, u, L ) DFS-topologica (G, u, LISTA) color [u] gray d[u] time time + 1 for ogni v ADJ [u] do if color [v] = white then π[v] u DFS-topologica (G, v, LISTA ) color [u] black f[u] time time + 1 InserimentoInTesta (u, LISTA)

omplessità dell algoritmo per calcolare un ordinamento topologico Complessità: O(V+E)

orrettezza dell algoritmo per calcolare un ordinamento topologico Lemma. Una (qualunque) DFS di un grafo orientato aciclico associa ai vertici tempi di fine visita tali che: f[v] < f[u] per ogni arco <u, v> del grafo. Dimostrazione. Supponiamo per assurdo che per almeno un arco <u, v> si abbia f[v] > f[u]. 1) d[u] f[u] d[v] f[v] Impossibile perche u non puo diventare nero prima che v diventi grigio, ossia prima che tutti i suoi adiacenti siano stati scoperti. 2) d[v] d[u] f[u] f[v] Impossibile perche u sarebbe discendente di v in un albero della foresta e l arco <u, v> sarebbe un arco all indietro, ma G e un grafo aciclico.

In conclusione { G grafo orientato aciclico } Topological_Sort (G, L) INIZIALIZZA (G) for ogni u V do if color [u] =white then DFS-topologica (G, u, L) { L contiene i vertici di G in ordine topologico }

Riepilogo Due definizioni equivalenti di ordinamento topologico di un grafo orientato aciclico (il che cosa ) Due algoritmi specifici (il come ) Un algoritmo ingenuo Un algoritmo efficiente (basato sulla visita in profondità)