Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Grafi e problem solving
3
Definizioni: grafo
4
Grafi orientati e non
5
Grafo: proprietà
6
Esempi: incidenza e adiacenza
7
ADT Grafo: operazioni tipiche
8
Visita in profondità o in ampiezza
Coda Pila
10
Grafo: implementazioni
Grafi orientati
11
Matrice di adiacenza
12
Problema: ponti di Eulero
13
Lista di adiacenza
14
Strutture dati
15
Strutture dati
16
Complessità Qual è meglio usare ?
17
Qual è meglio usare ? Le liste di adiacenze sono preferibili quando il grafo è sparso, ossia quando il numero degli archi |E| è relativamente piccolo, rispetto al numero dei nodi |V|. Le matrici sono invece preferibili se il grafo è denso, ossia quando il numero degli archi |E| ≅ |V|2. Inoltre, la matrice di adiacenze mi permette subito di capire se due nodi del grafo sono collegati tra loro. Viceversa, in una lista di adiacenze la ricerca è più lunga
18
La matrice di adiacenza ha una
complessità temporale di accesso ai dati più bassa rispetto alla lista di adiacenza. D'altra parte, la matrice di adiacenze occupa più spazio di memoria rispetto alla lista di adiacenze ( 21 contro 15 locazioni di memoria ).
19
… e per grafi orientati Nel caso dei grafi orientati la differenza tra i due metodi è ancora più ampia perché si deve memorizzare l'intera matrice, mentre la lista delle adiacenze si riduce. Le liste di adiacenze hanno la stessa complessità sia per i grafi orientati che per i grafi non orientati Quindi, se il tempo di ricerca non è un problema, è meglio lavorare con le liste di adiacenze su big data.
20
Grafo pesato Peso Un grafo pesato associa un'etichetta (peso) ad ogni suo arco. I pesi sono espressi generalmente tramite numeri reali, ma possono essere ristretti all'insieme dei razionali o degli interi. Alcuni algoritmi necessitano di maggiori restrizioni sui pesi. Ad esempio, l'algoritmo di Dijkstra funziona propriamente solo con pesi positivi. Talvolta il peso fra due vertici non connessi da un arco è indicato con il valore infinito.
22
Esempi di grafi orientati, pesati e non
23
Lettura grafo da file (1)
24
Lettura grafo da file (2)
26
Giochiamo con gli scacchi
27
Possibile download di codice in Java
Dal’UML all’implemenazione Algoritmo per il massimo flusso su grafo Ad esempio le classi Edge e Node rappresentano gli archi e i nodi del grafo Semplice implementazione dell’algoritmo di Dijkstra in Java
28
Glossario Grafo Albero
30
Albero: terminologia
31
Albero binario
32
ADT Albero: operazioni minime
33
Albero: rappresentazione con liste collegate
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.