Testo degli esercizi di laboratorio relativi agli appelli di Settembre e

Transcript

Testo degli esercizi di laboratorio relativi agli appelli di Settembre e
Algoritmi e Strutture Dati (Complementi)
Progettino di Laboratorio
per gli appelli di Settembre e Novembre 2006
Proff. Paola Bonizzoni / Giancarlo Mauri
Testo dell’esercizio
Progettare e implementare in Java un algoritmo che, dato in ingresso un grafo G = hV, Ei
non orientato, stampi a video il numero di componenti connesse di G e inoltre —
per ciascuna componente connessa — da quanti e da quali nodi essa è formata.
Per semplicità, si assuma che i vertici di G siano numerati da 1 a n, dove n = |V |. Il
programma in Java deve quindi chiedere anzitutto all’utente il valore di n, e poi l’elenco
dei lati che appartengono al grafo. Il grafo può essere rappresentato in memoria sia
sotto forma di liste di adiacenza che di matrice di adiacenza. Utilizzando poi l’algoritmo
ritenuto più adatto, tra la versione modificata di Kruskal (nella quale non interessa
costruire l’albero di copertura minimo, ma solamente le componenti connesse) e la visita
in profondità (DFS), il programma deve costruire le componenti connesse e stampare
a video le informazioni di cui sopra.
Esempio. Se l’utente specifica in ingresso che il valore di n è 6, e che i lati appartenenti
al grafo G sono i seguenti:
(1, 4), (2, 3), (2, 5), (3, 5)
il programma dovrà stampare le seguenti informazioni:
Il grafo contiene 3 componenti connesse
La 1.a componente è formata dai seguenti 2 nodi:
1, 4
La 2.a componente è formata dai seguenti 3 nodi:
2, 3, 5
La 3.a componente è formata dal seguente nodo:
6
Il programma dovrà essere scritto in Java (preferibilmente la versione 1.4.x), e dovrà
essere compilabile con il comando javac della j2sdk della Sun, eseguito sulla linea di
comando (prompt di DOS/Windows oppure terminale di Linux). I programmi che non
possono essere compilati in questo modo non verranno accettati.
Vanno consegnati i sorgenti di tutte le classi che sono necessarie per la corretta
compilazione del programma; unica eccezione: la classe SavitchIn (se viene usata), che
può essere consegnata già compilata.
Si segnala infine che il progettino va svolto individualmente.
1