La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Master Bioinformatica 2002: Visite di Grafi La struttura dati D è una PILA (STACK) Visita in profondità o Depth-First-Search (DFS)

Presentazioni simili


Presentazione sul tema: "Master Bioinformatica 2002: Visite di Grafi La struttura dati D è una PILA (STACK) Visita in profondità o Depth-First-Search (DFS)"— Transcript della presentazione:

1 Master Bioinformatica 2002: Visite di Grafi La struttura dati D è una PILA (STACK) Visita in profondità o Depth-First-Search (DFS)

2 Master Bioinformatica 2002: Visite di Grafi B A B D C F H G A B C D F G H S A C E D H G F

3 A C E D H G F A B C D F G H A B C D F G H B A B C D F G H S A C E D H G F

4 B A B C D F S A C E D H G F A B C D F G H A B C D F G H

5 B A B C D F E S H A C E D G F A B C D F H A B C D F GG H GE

6 B A B C D F S H A C E D G F A B C D F H A B C D F GG H GE

7 B H A B C D S A C E D G F A B C D F H A B C D F GG H GE

8 A B C S B A C E D H G F A B C D F G H A B C D F G H E

9 A B S B A C E D H G F A B C D F G H A B C D F G H E

10 A S A B C D F G H A B C D F G H E B A C E D H G F

11 S A B C D F G H A B C D F G H E B A C E D H G F

12 A B C D F G H A B C D F G H E Vertici memorizzati nelle liste di adiacenza in ordine alfabetico: B A C E D H G F CONSIDERIAMO L’ORDINE IN CUI I VERTICI DIVENTANO GRIGI: viene creato l’albero E L’ORDINE IN CUI DIVENTANO NERI

13 Master Bioinformatica 2002: Visite di Grafi B A C E D H G F A B C D F G H E Usando un unico contatore si ottiene:

14 Master Bioinformatica 2002: Visite di Grafi Visita DFS (prima versione) DFS-VISITA (G, s) S  make_empty_stack color  s   gray push (S, s) while not_empty (S) do u  top (S) if c’è v bianco adiacente a u then color  v   gray P[v   u push (S, v) else color  u   black pop (S)

15 Master Bioinformatica 2002: Visite di Grafi DFS-VISITA (G, s) S  make_empty_stack color  s   gray push (S, s) while not_empty (S) do while c’è un v adiacente a top (S) non considerato do if color  v  = white then color  v   gray P[v   top(S) push (S, v) Seconda versione con ciclo sugli adiacenti sul top dello stack top(S) cambia ogni volta che viene aggiunto un vertice color  top(S)   black pop (S)

16 Master Bioinformatica 2002: Visite di Grafi A D B F B C A E D F C C A D B F S

17 D A D B F B C A E F C A D B F S E C E

18 D A D B F B C A E F C C A D B F S E C E E

19 D A D B F B C A E F C C A D B F S E C E E F

20 F B C A E D A B F C A D S C E E F B D

21 F B C A E D A B F C A D S C E E F B D

22 F B C A E D B F C A D S C E E F B D A

23 B F B F C C E E A D D A Gli intervalli di “attivazione” di due vertici sono: disgiunti uno interamente contenuto nell’altro Osservazione

24 Master Bioinformatica 2002: Visite di Grafi D B F CE A un vertice non viene “disattivato” finchè non sono stati ‘attivati”e poi “disattivati” tutti i suoi discendenti è l’ordine in cui si percorre l’albero delle chiamate ricorsive di una procedura ricorsiva Versione ricorsiva dell’algoritmo di visita in profondità

25 Master Bioinformatica 2002: Visite di Grafi DFS-VISITA-ricorsiva (G, u) color  u   gray while c’è v adiacente a u non considerato do if color  v  = white then P[v   u DFS-VISITA-ricorsiva (G, v) color  u   black

26 Master Bioinformatica 2002: Visite di Grafi C'è corrispondenza fra lo stack della procedura iterativa e lo stack delle attivazioni della procedura ricorsiva. Più precisamente, supponendo che gli adiacenti vengano visitati nello stesso ordine dalle due procedure, se ad un certo punto dell'esecuzione lo stack della procedura iterativa è (con v 1 = s e v r sul top), la corrispondente sequenza di attivazioni per la procedura ricorsiva sarà:.

27 Master Bioinformatica 2002: Visite di Grafi A D B F B C A E D F C SDFS-ric(G,B) DFS-ric(G,D) DFS-ric(G,A) DFS-ric(G,F) DFS-ric(G,C)

28 Master Bioinformatica 2002: Visite di Grafi D A D B F B C A E F S C DFS-ric(G,B) DFS-ric(G,D) DFS-ric(G,A) DFS-ric(G,F) DFS-ric(G,C)

29 Master Bioinformatica 2002: Visite di Grafi D A D B F B C A E F SDFS-ric(G,B) DFS-ric(G,D) DFS-ric(G,A) DFS-ric(G,F)

30 Master Bioinformatica 2002: Visite di Grafi D A D B F B C A E F S E DFS-ric(G,B) DFS-ric(G,D) DFS-ric(G,A) DFS-ric(G,F) DFS-ric(G,E)

31 Master Bioinformatica 2002: Visite di Grafi D A D B F B C A E F SDFS-ric(G,B) DFS-ric(G,D) DFS-ric(G,A) DFS-ric(G,F)

32 Master Bioinformatica 2002: Visite di Grafi D A D B F B C A E SDFS-ric(G,B) DFS-ric(G,D) DFS-ric(G,A)

33 Master Bioinformatica 2002: Visite di Grafi D A D F B C A E S DFS-ric(G,D) DFS-ric(G,A)

34 Master Bioinformatica 2002: Visite di Grafi D A F B C A E S DFS-ric(G,A)

35 Master Bioinformatica 2002: Visite di Grafi D F B C A E S

36 DFS con calcolo dei tempi di inizio e fine visita Introduciamo un contatore “time” per ricordare l’ordine delle attivazioni e disattivazioni e i due attributi d (attivazione) e f (disattivazione) INIZIALIZZA (G) for ogni u  V do color  u   white P[u   nil d[u]   f[u]   time  0 N.b. Se un vertice non viene “visitato” i suoi tempi di attivazione e disattivazione resteranno infiniti.

37 Master Bioinformatica 2002: Visite di Grafi DFS-VISITA-ricorsiva (G, u) color  u   gray while c’è v adiacente a u non considerato do if color  v  = white then P[v   u DFS-VISITA-ricorsiva (G, v) color  u   black time  time + 1 f[u]  time time  time + 1 d[u]  time

38 Master Bioinformatica 2002: Visite di Grafi Proprietà della visita in profondità : 1. Teorema delle parentesi In ogni visita DFS di un grafo (orientato o non orientato), per ogni coppia di vertici u, v una e una sola delle seguenti condizioni è soddisfatta: u d[u] < d[v] < f[v] < f[u] e u è un antenato di v in un albero della foresta DFS u d[v] < d[u] < f[u] < f[v] e u è un discendente di v in un albero della foresta DFS u d[u] < f[u] < d[v] < f[v] e tra u e v non esiste relazione di antenato - discendente

39 Master Bioinformatica 2002: Visite di Grafi Classificazione degli archi del grafo durante una DFS Arco di attraversamento: arco che collega due vertici che non sono in relazione antenato - discendente DEFINIZIONE Arco dell’albero: arco inserito nella foresta DFS Arco all’indietro: arco che collega un vertice ad un suo antenato in un albero della foresta DFS Arco in avanti: arco che collega un vertice ad un suo discendente in un albero della foresta DFS

40 Master Bioinformatica 2002: Visite di Grafi OSSERVAZIONE un arco (u, v) viene “percorso” quando si scopre v nella lista degli adiacenti ad u. In quel momento color[v] può essere: grigio: v è un antenato di u in un albero della foresta DFS, (u, v) è un arco all’indietro nero: la visita di v è già terminata, (u, v) è un arco in avanti se v è un discendente di u in tal caso d[u] < d[v] < f[v] < f[u] d[u] < d[v] di attraversamento altrimenti in tal caso d[v] < f[v] < d[u] < f[u] d[v] < d[u] bianco: (u, v) è un arco dell’albero

41 Master Bioinformatica 2002: Visite di Grafi (Vertici adiacenti scanditi in ordine alfabetico) D E BC A

42 Master Bioinformatica 2002: Visite di Grafi 1 D E BC A (Vertici adiacenti scanditi in ordine alfabetico)

43 Master Bioinformatica 2002: Visite di Grafi (Vertici adiacenti scanditi in ordine alfabetico) 1 D E BC A 2

44 Master Bioinformatica 2002: Visite di Grafi (Vertici adiacenti scanditi in ordine alfabetico) 1 D E BC A 2 3

45 Master Bioinformatica 2002: Visite di Grafi (Vertici adiacenti scanditi in ordine alfabetico) 1 D E BC A (D, A) arco all’indietro

46 Master Bioinformatica 2002: Visite di Grafi (Vertici adiacenti scanditi in ordine alfabetico) 1 D E BC A (D, A) arco all’indietro

47 Master Bioinformatica 2002: Visite di Grafi (Vertici adiacenti scanditi in ordine alfabetico) 1 D E BC A (D, A) arco all’indietro 6

48 Master Bioinformatica 2002: Visite di Grafi 1 D E BC A (D, A) arco all’indietro 6 (C, B) arco di attraversameto

49 Master Bioinformatica 2002: Visite di Grafi 1 D E BC A (D, A) arco all’indietro 6 7 (C, B) arco di attraversameto

50 Master Bioinformatica 2002: Visite di Grafi 1 D E BC A (D, A) arco all’indietro (E, D) arco di attraversameto (C, B) arco di attraversameto

51 Master Bioinformatica 2002: Visite di Grafi 1 D E BC A (D, A) arco all’indietro (E, D) arco di attraversameto (C, B) arco di attraversameto

52 Master Bioinformatica 2002: Visite di Grafi 1 10 D E BC A (D, A) arco all’indietro (E, D) arco di attraversameto (C, B) arco di attraversameto (A, E) arco in avanti

53 Master Bioinformatica 2002: Visite di Grafi Teorema In una visita DFS di un grafo non orientato, ogni arco è un arco dell’albero o un arco all’indietro. Teorema Un grafo, orientato o non orientato, è aciclico se e solo se una visita DFS (qualunque) non produce archi all’indietro.

54 Master Bioinformatica 2002: Visite di Grafi Ordinamento topologico di un DAG Un ordinamento topologico di un DAG G= (V, E) è un ordinamento di tutti i vertici tale che se c’è un arco (u, v) in E allora u precede v

55 Master Bioinformatica 2002: Visite di Grafi Semplici applicazioni degli algoritmi di visita Algoritmo che determina se un grafo orientato contiene un ciclo Algoritmo che determina se un grafo non orientato e’ connesso Algoritmo che conta le componenti connesse di un grafo non orientato Algoritmo che determina un ordinamento topologico di un DAG

56 Master Bioinformatica 2002: Visite di Grafi Esempio di DAG slip pantaloni cintura camicia cravatta giacca calze scarpe orologio

57 Master Bioinformatica 2002: Visite di Grafi Possibile ordinameto (non è unico) slip orologio calze pantaloni camicia scarpe cintura cravatta giacca

58 Master Bioinformatica 2002: Visite di Grafi Idea! In un DAG, al termine di una visita DFS vale per ogni arco (u,v) f(u) > f(v) Algoritmo: fai una visita DFS su tutto il grafo, dai in outpu l’elenco dei vertici ordinati per tempo f(u) di fine visita decrescente


Scaricare ppt "Master Bioinformatica 2002: Visite di Grafi La struttura dati D è una PILA (STACK) Visita in profondità o Depth-First-Search (DFS)"

Presentazioni simili


Annunci Google