La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Grafi e problem solving

Presentazioni simili


Presentazione sul tema: "Grafi e problem solving"— Transcript della presentazione:

1 Grafi e problem solving

2

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

9

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.

21

22 Esempi di grafi orientati, pesati e non

23 Lettura grafo da file (1)

24 Lettura grafo da file (2)

25

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

29

30 Albero: terminologia

31 Albero binario

32 ADT Albero: operazioni minime

33 Albero: rappresentazione con liste collegate


Scaricare ppt "Grafi e problem solving"

Presentazioni simili


Annunci Google