Logo dell'Università di Catania: Siciliae Studium Generale 1434 Logo del Centro IPPARI, Programmazione
matite e gomma
Loghi istituzionali: Siciliae Studium Generale 1434, Centro ricerche IPPARI, Università di Catania, Facoltà di Scienze Matematiche, Fisiche, Naturali, Insegnamento di Programmazione

Liste multiple e rappresentazione di grafi

Lezione 12 di Programmazione 2

Docente: Giuseppe Scollo

Università di Catania, sede di Comiso (RG)
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Studi in Informatica applicata, AA 2007-8

Logo di Conformità WCAG-1 di Livello Tripla A, W3C-WAI Web Content Accessibility Guidelines 1.0 Validazione XHTML 1.0 Validazione CSS 2

Indice

  1. Liste multiple e rappresentazione di grafi
  2. liste multiple
  3. grafi: matrici di adiacenza
  4. rappresentazione di grafi mediante liste
  5. esercizi
  6. esercizio: cammino Hamiltoniano
  7. esercizio: il problema KWIC

liste multiple

grafi: matrici di adiacenza

i grafi, strutture matematiche già familiari dall'analisi del problema della connettività, hanno una immediata rappresentazione con matrici di adiacenza: matrici binarie, in cui l'elemento (i,j) è 1 o 0 a seconda che esista o meno un arco dal vertice i al vertice j

se il grafo ha pochi archi, ossia E << V2, allora la matrice di adiacenza è sparsa, nel qual caso rappresentazioni alternative del grafo meritano considerazione

rappresentazione di grafi mediante liste

una rappresentazione dei grafi alternativa alla matrice di adiacenza si realizza mediante liste di adiacenza:

con la rappresentazione mediante liste di adiacenza si perde, rispetto a quella della matrice di adiacenza, il vantaggio di poter determinare l'esistenza di un arco, fra due vertici dati, in tempo costante

tuttavia, non tutti gli algoritmi hanno in questo il fattore critico di prestazione in termini di tempo di esecuzione:

esercizi

il testo (Sedgewick, 2003), a p.121, suggerisce l'uso di una multilista per rappresentare una matrice multidimensionale sparsa, con un nodo per ogni elemento (non nullo) della matrice e un link per ogni dimensione, dove un link punta al successivo nodo per quella dimensione; questo suggerimento ha il difetto di presumere un unico ordinamento degli elementi della matrice per ciascuna dimensione:

  1. mostrare che il risparmio di spazio suggerito dal testo è conseguibile mediante rappresentazione con una lista unidimensionale
  2. in quanti modi può definirsi un ordinamento lessicografico degli elementi della matrice, determinato solo dai valori degli indici e basato su un ordinamento (totale) delle dimensioni, per una matrice N-dimensionale?
  3. in quali casi l'uso di una multilista per la rappresentazione in questione può presentare vantaggi rispetto all'uso di una lista unidimensionale, e quali vantaggi?

esercizio: cammino Hamiltoniano

un cammino in un grafo è Hamiltoniano se ne attraversa tutti i vertici, una sola volta ciascuno; il problema di decidere se un grafo possieda un cammino Hamiltoniano è risolto costruttivamente quando l'algoritmo di risoluzione, in caso di risposta positiva, esibisce un tale cammino

  1. analizzare le differenze di prestazione da attendersi nel tempo di esecuzione di tali algoritmi costruttivi, per grafi non orientati con matrice di incidenza sparsa, tra la rappresentazione del grafo come matrice di incidenza e quella mediante liste di incidenza
  2. considerare la questione precedente per grafi orientati: cambia qualcosa?
  3. progettare un algoritmo costruttivo per il problema di decisione relativo all'esistenza di un cammino Hamiltoniano in un grafo non orientato e codificarlo come funzione C++ in due modi, rispettivamente con la rappresentazione mediante matrice di incidenza e con quella mediante liste di incidenza; procedere quindi alla stesura di un programma client di tali funzioni per il confronto empirico delle rispettive prestazioni rispetto al tempo di esecuzione, nel caso di matrici di incidenza sparse, ed effettuare il confronto con grafi aventi V = 10, 100, 1000, 10000, ed E = V, 2V, 3V, 4V in ciascun caso
  4. adattare gli algoritmi e relativo codice dell'esercizio precedente ai grafi orientati ed eseguire l'analogo confronto empirico delle prestazioni

esercizio: il problema KWIC

l'acronimo sta per Key Word In Context

definizioni:

problema: dato un testo in input, produrre una rappresentazione dell'insieme lessicograficamente ordinato delle permutazioni circolari delle sue righe