LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica...
Transcript of LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica...
![Page 1: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/1.jpg)
Grafi e GrafiDirettiAciclici
Grafi e Grafi Diretti AcicliciLaboratorio di Programmazione IICorso di Laurea in Bioinformatica
Dipartimento di Informatica - Università di Verona
![Page 2: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/2.jpg)
Grafi e GrafiDirettiAciclici
Sommario
Grafi ed implementazione in JavaVisita di un grafoGrafi Diretti Aciclici
![Page 3: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/3.jpg)
Grafi e GrafiDirettiAciclici
Grafi
![Page 4: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/4.jpg)
Grafi e GrafiDirettiAciclici
Grafi
Concetti di baseStruttura dati per rappresentare relazioni binarie
reti di trasportoreti stradaligrafo webrelazioni tra classi nei linguaggi OO
![Page 5: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/5.jpg)
Grafi e GrafiDirettiAciclici
Terminologia
DefinizioniG (V ,E ) V insieme di vertici, E insiemi di archiArco: < vi , vj > |vi , vj ∈ VCammino (di lunghezza k):< v1, v2, · · · , vk > |∀i = 1, · · · , k − 1 < vi , vi+1 >∈ ECircuito: cammino con v1 = vk
Ciclo: Circuito con vi 6= vj , 1 < i , j < k ,i 6= jGrafo pesato: valore reale wi ,j associato ad ogni arco< vi , vj >
![Page 6: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/6.jpg)
Grafi e GrafiDirettiAciclici
Rappresentazioni
Rappresentare grafiListe di adiacenza:
ad ogni vertice e’ associata la lista dei vertici adiacentiMatrice di adiacenza:
matrice |V | × |V |aij = 1 se < vi , vj >∈ E , aij = 0 altrimenti
![Page 7: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/7.jpg)
Grafi e GrafiDirettiAciclici
Esempio: lista adiacenze
Esempio: lista adiacenze
A
B
C
D
E
F
A
B
C D
B DC
DB EC F
D
D
C
A
B
D
E F
A
B
C D
B D
B C E F
D
D
A
B
E
F
![Page 8: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/8.jpg)
Grafi e GrafiDirettiAciclici
Esempio: matrice adiacenza
Esempio: matrice adiacenza
C
A
B
D
E F
A B C D E FA 0 1 0 0 0 0B 1 0 1 1 0 0C 0 1 0 1 0 0D 0 1 1 0 1 1E 0 0 0 1 0 0F 0 0 0 1 0 0
![Page 9: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/9.jpg)
Grafi e GrafiDirettiAciclici
Caratteristiche
Vantaggi e svantaggi delle reppresentazioni
Liste di adiacenza (Memoria O(|E|)):Vantaggi: posso scorrere i nodi adiacenti a v inO(grado(v))Svantaggi: inserimento e cancellazione O(grado(v))
Matrice di adiacenza: (Memoria O(|V |2))Vantaggi: inserimento e cancellazione O(1)Svantaggi: posso scorrere i nodi adiacenti a v in O(|V|)
![Page 10: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/10.jpg)
Grafi e GrafiDirettiAciclici
Implementazione in Java
Implementazione in javaUtilizziamo una rappresentazione basata su liste diadiacenzaLa lista di nodi e’ realizzata con una HashMap
non voglio avere nodi replicatiinserimento e cancellazione dei nodi sono efficienti
La lista di nodi successori viene rappresentata come uninsieme di archi
Insieme: un solo arco tra ciascuna coppia di nodiArco: piu’ efficiente per algoritmi che operano sull’insiemedegli archi
Vedere classi Grafo.java e Arco.java
![Page 11: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/11.jpg)
Grafi e GrafiDirettiAciclici
Visite
![Page 12: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/12.jpg)
Grafi e GrafiDirettiAciclici
Vistare il grafo
Visitare il grafoObiettivo: visitare una sola volta tutti i nodi del grafoDifficolta’:
1 Cicli: marcare i nodi visitati2 nodi isolati: visita termina quando tutte le componenti del
grafo sono state visitate
![Page 13: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/13.jpg)
Grafi e GrafiDirettiAciclici
Visita in profondita’
Visita in Profondita’: DFSTipicamente ricorsivoDato un nodo, visita uno qualsiasi dei nodi adiacenti nonancora visitatiSe tutti i nodi adiacenti sono stati visitati, ritornare alpredecessoreI nodi possono essere enumerati secondo l’ordine di visita
![Page 14: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/14.jpg)
Grafi e GrafiDirettiAciclici
Esempio: DFS
Esempio DFS
C
A
B
D
E F
H
K1
2
3 4
5
6
7
8
![Page 15: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/15.jpg)
Grafi e GrafiDirettiAciclici
DFS
Visita in Profondita’: DFSInizializzare tutti i nodi come non visitatiFino a che esiste un nodo v non visitato
eseguire DFS(v)
DFS(v): vista il nodo e lo marca come visitatoper ciascun nodo v adiacente non visitato
eseguire DFS(v)
![Page 16: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/16.jpg)
Grafi e GrafiDirettiAciclici
DFS: discussione
Visita in Profondita’: discussioneMarcatura: varie opzioni:Mantenere una Map di nodi e interi
inizializzo la map con tutti i nodi e valore pari a zeroun nodo con valore maggiore di zero e’ visitato
Un insieme di nodi non visitatiinizializzo il vettore con tutti i nodiquando visito un nodo lo rimuovo dal vettore
Creare un oggetto nodo che contiene un campo visitato edaggiornarlo di conseguenza
![Page 17: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/17.jpg)
Grafi e GrafiDirettiAciclici
Visitare in ampiezza
BFSTipicamente iterativo: usa una coda di appoggiometti in coda il nodo inizialeFino a che la coda non e’ vuota:
estrai il primo nodo e visitalometti in coda tutti i nodi adiacenti non visitati
quando la coda e’ vuota controllare se ci sono altri nodinon visitati se si metterli in coda e continuare.
![Page 18: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/18.jpg)
Grafi e GrafiDirettiAciclici
Esempio: BFS
Esempio BFS
�������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������
������������������������������������������������������������������������
������������������������������������������������������������������������
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
C
A
B
D
E F
H
K1
2
7
8
3
4
5 6
![Page 19: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/19.jpg)
Grafi e GrafiDirettiAciclici
Esercizi
EserciziImplementare il metodo dfs(...) della classe Visite.javaImplementare il metodo visitaBFS() della classe Visite.java
![Page 20: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/20.jpg)
Grafi e GrafiDirettiAciclici
Grafi Diretti Aciclici (DAG)
![Page 21: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/21.jpg)
Grafi e GrafiDirettiAciclici
Grafi Diretti Aciclici (DAG)
Concetti di baseGrafo Diretto: archi sono coppie ordinate di nodi
< u, v > 6=< v , u >
Grafo diretto aciclico: grafo diretto senza ciclinon esiste nessun cammino < v1, v2, · · · , vk > tale chev1 = vkpossono esistere diversi cammini da v1 a vk
![Page 22: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/22.jpg)
Grafi e GrafiDirettiAciclici
DAG: Esempio
Example (DAG)
CB
D
E F
CB
D
E F
![Page 23: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/23.jpg)
Grafi e GrafiDirettiAciclici
Ordinamento parziale e DAG
Ordinamento parzialeDato un insieme A, ordinamento parziale: relazione diordine transitiva parziale sugli elementi di Aparziale: possono esistere coppie di elementi per cui non e’definito alcun ordineUn DAG rappresenta un ordinamento parziale:
Vertici: elementi di AArcho < u, v > se u < v secondo l’ordine parziale
Esempio: sviluppo di moduli per un progetto softwareCiclo nel grafo → il grafo non puo’ rappresentare un ordineparziale
![Page 24: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/24.jpg)
Grafi e GrafiDirettiAciclici
Ordinamento Topologico di un DAG
Ordinamento TopologicoOrdinamento lineare dei veritci tale che:
per ogni arco < u, v > u precede v nell’ordinamento
ad ogni vertice u associamo un intero p(u) tale che seesiste l’arco < u, v > allor p(u) < p(v)di conseguenza se esiste un cammino da u a w allora p(u)< p(w): ogni nodo e’ seguito nell’ordine dai suoi successorie’ sempre possibile trovare un ordinamento topologico perun DAGl’ordinamento topologico non e’ univoco
![Page 25: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/25.jpg)
Grafi e GrafiDirettiAciclici
Ordinamenti Topologici: Esempio
Example (ordinamenti topologici validi)
BD FE C
D B C FE
![Page 26: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/26.jpg)
Grafi e GrafiDirettiAciclici
Ordinamenti Topologici: Esempio II
Example (ordinamento topologico non valido)
D F BE
C
![Page 27: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/27.jpg)
Grafi e GrafiDirettiAciclici
Ordinamento Topologico e DFS
DFS di un DAGUna DFS di un DAG induce un ordinamento topologico
Eseguo una DFS registrando il tempo di inizio visista(startValues) e fine visita (finalValues) per ogni nodoad ogni esecuzione della DFS aggiorno il tempoOrdinamento topologico: ordine inverso di visita dei verticiUtilizzo il tempo di fine visita come p(u)Intuizione: ciascun nodo avra’ un ordine di fine visitamaggiore dei suoi successori.
![Page 28: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/28.jpg)
Grafi e GrafiDirettiAciclici
Esempio: DFS per Ordinamenti Topologici
Example (esempio esecuzione di DFS per ordinamentotopologico)
CB
D
E F1/2
3/8
4/7 5/6
9/10
![Page 29: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/29.jpg)
Grafi e GrafiDirettiAciclici
DFS per ordine topologico
Pseudocodice ordine topologico
Algorithm 1 OrdineTopologicoRequire: G grafo
for ogni vertice v di G doinizializza a zero startValues e endValues di v
end forfor ogni vertice v di G do
if startValues di v == 0 thendfs(G,v);
end ifend forcostruisci una lista res con i vertici in ordine inverso di fine visitareturn res
![Page 30: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/30.jpg)
Grafi e GrafiDirettiAciclici
DFS per ordine topologico
Pseudocodice per DFS
Algorithm 2 dfsRequire: G grafo, v node
time++;startValues di v = time;for ogni vertice u adiacente a v do
if startValues di u == 0 thendfs(G,u);
elseif finalValues di u == 0 then
errore G non e’ un DAGend if
end ifend fortime++finalValues di v = time
![Page 31: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/31.jpg)
Grafi e GrafiDirettiAciclici
Realizzazione DAG in java
DAG in javaClasse ArcoOrdinato.java
estende la classe Arco definendo un ordine tra i nodidell’arco
classe DAG.javaestende la classe Graforidefinisce il metodo add(Object from, Object to, ObjectValue)ridefinisce il metodo toString()implementa nuove funzionalita: ordineTopologico(...)
![Page 32: LaboratoriodiProgrammazioneII CorsodiLaureainBioinformatica …profs.sci.univr.it/~farinelli/courses/algBio/slides/... · 2017. 1. 16. · GrafieGrafi Diretti Aciclici Rappresentazioni](https://reader036.fdocuments.co/reader036/viewer/2022071407/60fe830d8fd4db409b0684e8/html5/thumbnails/32.jpg)
Grafi e GrafiDirettiAciclici
Esercizi: DAG
Esercizi sui DAG(valido per il progetto) realizzare il metodogetTopologicalOrder(...) della classe DAG.java
utilizzare il metodo pullMax(...) (implementato) perestrarre il nodo con endValues piu’ alta alla fine della visitautilizzare il metodo ricorsivo dfs(...) (da implementare) perrichiamare la visita in profondita’ sui nodile strutture startValues, endValues e la variabile time sonogia dichiarate come variabili di classe