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