Grafi e problem solving

Slides:



Advertisements
Presentazioni simili
Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)
Advertisements

La seguente matrice è una matrice delle distanze di un’istanza del problema del Commesso Viaggiatore. Calcolare un lower bound per il valore del ciclo.
Cammini minimi Moreno Marzolla
Fondamenti di Informatica A - Massimo Bertozzi LE RAPPRESENTAZIONI CONCATENATE.
Prof.ssa Rossella Petreschi Lezione del 3/12/2013 del Corso di Algoritmica GRAFI e PLANARITA’ Lezione n°15.
Lezione n°10 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Cammini minimi in grafi:
Branch and Bound Lezione n°19 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Dal problema al processo risolutivo
Progettare algoritmi veloci usando strutture dati efficienti
PIANIFICAZIONE DEI TRASPORTI La teoria dei grafi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Alberi binari Definizione Sottoalberi Padre, figli
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Lezione n°17 Prof.ssa Rossella Petreschi
Lezione n°15 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Cammini minimi tra tutte le coppie
Algoritmi e Strutture Dati
Il problema del cammino minimo
Lezione n°14 Reti di flusso Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
TIPI PRIMITIVI TIPI STRUTTURATI
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Algoritmi e Strutture Dati
Usi (meno scontati) della visita DFS
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Paths, tree and flowers Lezione n°14
K4 è planare? E K3,3 e K5 sono planari? Sì!
Algoritmi e Strutture Dati
per rappresentare grafi
Lezione n°11 Prof.ssa Rossella Petreschi
Lezione n°12 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
ABBINAMENTO Lezione n°13
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi per il flusso nelle reti
Algoritmi per il flusso nelle reti
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Cammini di costo minimo su un grafo pesato
Schema generale, visita in ampiezza e profondità.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Usi (meno scontati) della visita DFS
Lezione n°14 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
APPUNTI SUL LINGUAGGIO C Implementazioni di Liste Concatenate
Algoritmi e Strutture Dati
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Cammini minimi in grafi:
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
concetti ed applicazioni
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Il problema del flusso nelle reti
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
CORRENTE ELETTRICA.
Algoritmi.
Transcript della presentazione:

Grafi e problem solving

Definizioni: grafo

Grafi orientati e non

Grafo: proprietà

Esempi: incidenza e adiacenza

ADT Grafo: operazioni tipiche

Visita in profondità o in ampiezza Coda Pila

Grafo: implementazioni Grafi orientati

Matrice di adiacenza

Problema: ponti di Eulero

Lista di adiacenza

Strutture dati

Strutture dati

Complessità Qual è meglio usare ?

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         

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 ).

… 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.

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.

Esempi di grafi orientati, pesati e non

Lettura grafo da file (1)

Lettura grafo da file (2)

Giochiamo con gli scacchi

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

Glossario Grafo Albero

Albero: terminologia

Albero binario

ADT Albero: operazioni minime

Albero: rappresentazione con liste collegate