Laboratorio di Algoritmi e Strutture Dati

Documenti analoghi
Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati

Progetto Prestiti Laboratorio di Algoritmi

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati

Progetto: Dama. 1 - Descrizione. 2 - Regole del gioco. Appello di febbraio 2003

Laboratorio di Algoritmi e Strutture Dati

Progetto Prestiti Laboratorio di Algoritmi

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2014

Laboratorio di Algoritmi e Strutture Dati

Manuale per il controllo del materiale SNV

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Reti, Corsi A e B. Text-Twist. Progetto di Fine Corso A.A. 2016/17

Introduzione al Foglio Elettronico

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29

In molte applicazioni sorge il problema di sapere in quanti modi possibili si può presentare un certo fenomeno.

Formule e funzioni. Manuale d uso

Dati aggregati. Violetta Lonati

Variabili e Istruzioni

Informatica 1. Prova di recupero 21 Settembre 2001

Ma il programma in Fig. 8.2 del libro? Stampa hello, world, dato un input n se e solo se l equazione

Uso di base dell ordinamento di dati in Microsoft Excel

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Laboratorio di Algoritmi e Strutture Dati

DEFINIZIONI SMART E RELATIVE ESERCITAZIONI

Guida all utilizzo dell Area web riservata ai docenti

Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

Laboratorio di Algoritmi e Strutture Dati

Come utilizzare i riferimenti assoluti e relativi in Microsoft Excel

Come ordinare facilmente i dati in un foglio di calcolo Excel definendo chiavi e parametri.

MODULO 4. Testo Chiudi il programma. 37. Indica in quale menu si trova la funzione sostituisci.

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Introduzione al Metodo del Simplesso. 1 Soluzioni di base e problemi in forma standard

Imparare a utilizzare le formule e le funzioni

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

Indicazioni su come preparare la relazione su un esperienza di laboratorio

1 (6) 2 (7) 3 (7) 4 (7) 5 (6)

Stringhe e allocazione dinamica della memoria

ITLCC 2006/10/6 19:09 page 7 #3

Excel come foglio di calcolo. Altri Grafici con Excel Istogrammi, grafici a torta

Laboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice:

CORSO DI LINGUAGGI DI PROGRAMMAZIONE Progetto A.A. 2008/2009

UNIVERSITÀ DEGLI STUDI DI BERGAMO. Presentazione dei piani di studio per l anno accademico 2008/09

15 luglio Soluzione esame di geometria - Ing. gestionale - a.a COGNOME... NOME... N. MATRICOLA... ISTRUZIONI

Modulo 2: Strutture fondamentali della programmazione Java

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione:

Prima prova intercorso 29 Novembre 2005

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Il foglio elettronico

Laboratorio di Algoritmi e Strutture Dati

Excel 3. Master Universitario di II livello in MANAGER NELLE AMMINISTRAZIONI PUBBLICHE A.A Prof.ssa Bice Cavallo

E-CLUB GUIDA PER L'USO

Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori

Primi passi con JFlex

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015

Norme per la redazione di articoli per la rivista Geoingegneria Ambientale e Mineraria

Ordina e filtra elenchi

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Espressione di chiamata di funzione

Università della Basilicata Corso di Laurea in Economia Aziendale. Vademecum per l impostazione della tesi di laurea (a cura della prof. C.

Excel di Microsoft o Calc di OpenOffice sono programmi per la gestione dei fogli di calcolo

Introduzione al Foglio Elettronico

PROBLEMI ALGORITMI E PROGRAMMAZIONE

06AZN - Fondamenti di Informatica (GES, LOP, ORG) Esercitazione di laboratorio n. 8 (1/12/09)

ISCRIZIONI ONLINE 2014 II FASE Scuole Verifica domande

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere

<Nome Tabella>.<attributo>

ISTRUZIONI PER LA COMPILAZIONE DEL REGISTRO ELETTRONICO

Laboratorio di Algoritmi e Strutture Dati

Elementi di informatica e Programmazione

Linguaggio C: introduzione

Corso Programmazione

UNIVERSITÀ DEGLI STUDI DI TORINO MANUALE PER DOCENTI: REGISTRO DELLE LEZIONI

Fogli di Calcolo Elettronici

INTERSTENO. Software di elaborazione testi utilizzato

Caratteri e stringhe

Prova d esame di Reti Logiche T 10 Giugno 2016

1. MyAir. Analizzare anche i criteri funzionali

Istruzioni per il caricamento di un file CSV. Avvertenze generali. Struttura e formato del file CSV

UNIVERSITÀ DEGLI STUDI DI SALERNO. Guida alla compilazione del questionario per la Valutazione della Didattica

Informatica! Appunti dal laboratorio 1!

REGOLAMENTO DELLA PROVA FINALE PER IL CONSEGUIMENTO DELLA LAUREA E DELLA LAUREA MAGISTRALE

Dipartimento Regionale Pubblica Istruzione Servizio XIII Diritto allo studio

Fondamenti di Informatica. Algoritmo. Algoritmo funzionale. Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a.

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

INTERVENTI DI RIDUZIONE DEL RISCHIO SISMICO. DISCIPLINATI DAL PROGRAMMA O.C.D.P.C. n. 52 del 20/02/2013

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Prova d Esame Compito A

UNIVERSITÀ DEGLI STUDI DI TORINO

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

NOTE RILASCIO IATROS SISS v. 2.X

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

24 ore (a partire da oggi). In quest aula (P2). Distribuzione ore: questa settimana, poi 2 ore a settimana

DOMANDA DI LAUREA ON-LINE. Compilala in pochi click!

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Transcript:

Il problema Laboratorio di Algoritmi e Strutture Dati Docenti: M. Torelli, S. Aguzzoli Appello del settembre 2007 Progetto Daltonismo Consegna entro il 24 settembre 2007 Gli abitanti di una remota isola dell Oceno Pacifico soffrono di una strana forma di daltonismo. Per studiare il fenomeno, un equipe di medici sottopone loro dei test allo scopo di controllare quali colori vengano confusi. Un test è costituito da una tavola di dimensione imprecisata divisa in celle quadrate di dimensione unitaria. Ogni cella può essere colorata con un singolo colore. Formalmente, la tavola è identificata con il piano Z Z = { (x, y x Z, y Z } delle coppie di interi. Ogni coppia di interi (x, y Z Z identifica una cella. La cella (x, y è adiacente alle celle: (x 1, y, (x + 1, y, (x, y 1, (x, y + 1. Un colore è una stringa di lunghezza arbitraria sull alfabeto a, b,..., z delle lettere minuscole. Se la cella (x, y è colorata, C(x, y ne denota il colore. Sia un insieme di coppie di colori. Diciamo che due colori α e β sono equivalenti rispetto a (in simboli, α β se e solo se esiste una sequenza di colori γ 1,... γ n (n 1 tali che: - α = γ 1 e β = γ n ; - per ogni i {1,..., n 1}, (γ i, γ i+1 oppure (γ i+1, γ i. In altri termini, è la più piccola relazione di equivalenza contenente la relazione. La relazione contiene tutte e sole le coppie di colori che un paziente σ non è in grado di distinguere. Esempio 1 Supponiamo che l insieme contenga le coppie: (giallo, verde, (rosso, blu, (blu, nero, (verde, azzurro, (blu, viola algono, ad esempio, le seguenti relazioni: verde giallo azzurro giallo nero rosso viola rosso rosso nero ispetto a, rosso e verde non sono equivalenti, e neppure azzurro e rosso. Dato un insieme finito di coppie di colori, due celle colorate (x, y e (x, y sono connesse rispetto a se esiste una sequenza di celle colorate (x 1, y 1, (x 2, y 2,..., (x n, y n tale che: 1. (x 1, y 1 = (x, y e (x n, y n = (x, y, 1

2. (x i, y i è adiacente a (x i+1, y i+1 per ogni i {1,..., n 1}. 3. Per ogni coppia di celle (x i, y i e (x j, y j della sequenza, C(x i, y i C(x j, y j. Una figura del piano definita da è un insieme massimale M Z Z di celle colorate connesse rispetto ad : vale a dire che, se N è un altro insieme di celle colorate connesse rispetto ad e M N allora N M. Una figura definita da è quindi un insieme massimale di celle connesse che appaiono dello stesso colore a un osservatore che non sa distinguere i colori in. Esempio 2 Supponiamo che le celle siano colorate come in Figura 1, dove A rappresente il colore azzurro, G il giallo, il rosso e il verde (le celle vuote non sono colorate. In tale configurazione vale: C(1, 4 = giallo C(2, 2 = verde C(2, 4 = giallo C(3, 2 = giallo... 4 3 G G G G A A 2 1 G 0 0 1 2 3 4 6 7 Figura 1: Esempio di colorazione di celle Sia 0 l insieme vuoto. Le figure definite da 0 sono nove: F 1 = { (1, 4, (2, 4, (3, 4 }, F 2 = { (2, 2 }, F 3 = { (3, 2 }, F 4 = { (3, 3, (4, 2, (4, 3, (4, 4 }, F = { (, 2, (, 3, (, 4, (6, 2 }, F 6 = { (6, 3, (7, 3 }, F 7 = { (6, 4 }, F 8 = { (7, 1 }, F 9 = { (7, 4 }. Sia 1 = { (giallo, verde }. Le figure definite da 1 sono sei: F 10 = F 1 F 2 F 3 F 4, F, F 6, F 7, F 8, F 9. Consideriamo ora l insieme 2 = { (giallo, verde, (rosso, azzurro }. Le figure definite da 2 sono quattro: F 10, F 11 = F F 6 F 9, F 7, F 8. Infine, se 3 = { (giallo, verde, (rosso, azzurro, (giallo, rosso}, tutti i colori in figura diventano equivalenti. Le figure definite da 3 sono due: {(7, 1} e la figura formata dalle rimanenti celle colorate. 2

Ogni paziente è identificato attraverso il suo nome, che è una stringa σ di lunghezza arbitraria sull alfabeto a, b,..., z delle lettere minuscole. A ogni paziente σ è associato l insieme σ dei colori che egli non è in grado di distinguere (che può essere anche vuoto. Una figura F è riconosciuta da σ se e solo se F è una figura definita da σ. Si richiede di implementare una struttura dati efficiente che permetta di eseguire le operazioni seguenti: - input (r, c, x, y, nomefile Legge dal file nomefile una tabella di colori di r righe e c colonne e assegna i colori corrispondenti alle celle nell insieme {(x+h, y+k 0 h < c, 0 k < r} secondo le regole specificate nell apposita sezione. - modifica (x, y, α Pone C(x, y = α. - confonde (σ, α, β Aggiunge la coppia di colori (α, β all insieme σ (quindi, dichiara che il paziente σ non distingue i colori α e β. - pazienti (α, β Stampa, in ordine alfabetico, la lista dei pazienti che confondono i colori α e β. - test (σ Stampa il numero delle figure riconosciute da σ. - figura (x, y, σ Se (x, y è una cella colorata, stampa la figura riconosciuta da σ contente (x, y secondo il formato specificato nell apposita sezione. Altrimenti, stampa su una nuova linea il messaggio (x,y non colorata All inizio del programma il piano è vuoto e σ = per ogni possibile σ. Si noti che le operazioni richieste sono liberamente implementabili; in particolare, non vanno necessariamente intese come prototipi di funzioni. Specifiche di implementazione Il programma deve leggere dallo standard input (stdin una sequenza di righe (separate da \n, ciascuna delle quali corrisponde a una riga della prima colonna della Tabella 1, dove nomefile è il nome di un file, α, β e σ sono stringhe finite sull alfabeto a, b,..., z di lunghezza arbitraria, r, c sono interi positivi e x, y sono interi. I vari elementi sulla riga sono separati da uno o più spazi. Quando una riga è letta, viene eseguita l operazione associata; le operazioni di stampa sono effettuate sullo standard output (stdout, e ogni operazione deve iniziare su una nuova riga. 3

iga di input i r c x y nomefile Operazione input (r, c, x, y, nomefile m x y α modifica(x, y, α c σ α β confonde (σ, α, β p α β pazienti (α, β t σ test (σ F x y σ figura (x, y, σ f Termina l esecuzione del programma Tabella 1: Specifiche del programma Note 1. Non devono essere presenti vincoli sul numero di colori, pazienti e celle colorate, e sulla lunghezza dei nomi di colori e pazienti (se non quelli determinati dal tipo di dato intero. Non si richiede anzi si sconsiglia l uso di grafica, se non per test personali: in modo particolare, non si usi conio.h e neppure clrscr(. 2. Per semplicità si suppone che l input sia sempre conforme alle specifiche di Tabella 1, per cui non è necessario controllare la correttezza dell input. Per leggere l input si usino le funzioni standard ANSI C getchar( e/o scanf(. 3. Specifiche per la lettura di una tabella di colori da un file Si consideri il comando: i r c x y nomefile. Allora il file di nome nomefile contiene r c stringhe finite sull alfabeto {a, b,..., z} {0}. I colori delle celle nel piano vengono modificati in questo modo: Per ogni 0 h < c e ogni 0 k < r, se la stringa α h,k in posizione k c+(h+1 nel file è diversa da 0 allora si pone C(x+h, y+k = α h,k ; se invece la stringa α h,k in posizione k c + (h + 1 nel file è uguale a 0 non si modifica il colore della cella (x + h, y + k. Si assume che la prima stringa nel file sia in posizione 1 e l ultima sia in posizione r c. Ad esempio, se il comando è i 2 3 4 tabella.txt, e il contenuto del file tabella.txt è il seguente: blu rosso 0 bianco 0 nero allora i colori delle celle vengono modificati in questo modo: C(4, = blu, C(, = rosso, C(4, 6 = bianco, C(6, 6 = nero. Nessun altra cella viene modificata. In particolare le celle (6, e (, 6 non vengono toccate, in quanto le posizioni a loro corrispondenti in tabella.txt contengono la stringa 0. 4

4. Formato per la stampa di una figura Si consideri il comando: F x y σ, e sia {(x 1, y 1, (x 2, y 2,..., (x u, y u } la figura del piano definita da σ e contenente (x, y. Allora l output del comando deve essere visualizzato come segue: (σ, x, y x 1, y 1 x 2, y 2. x u, y u Esempio L ordine in cui vengono elencate le celle della figura è arbitrario. Si supponga che le righe di input siano: i 3 2-2 1 f1.txt i 4 4 1 1 f2.txt i 3 2 2-3 f3.txt c barbara giallo rosso c carla giallo blu c carla giallo rosso c daniele arancione blu c daniele rosso verde c daniele rosso giallo c enrico blu rosso c enrico verde rosso c francesco arancione blu c francesco blu giallo c francesco rosso giallo c francesco rosso verde p rosso giallo c enrico giallo verde t anna F 2-3 anna t barbara t carla t daniele t enrico F 3 3 enrico t francesco m -2 2 blu m 0 1 rosso m 1 1 rosso m 2 0 giallo m 2-1 giallo t anna

t barbara t carla F -2 3 carla t daniele t enrico F -2 3 enrico t francesco f dove il file f1.txt contiene rosso rosso giallo 0 blu 0 f2.txt contiene 0 giallo 0 0 arancione 0 giallo giallo arancione blu rosso giallo 0 verde verde 0 e f3.txt contiene blu blu blu 0 0 verde L output prodotto dal programma deve essere il seguente barbara carla daniele francesco 11 (anna,2,-3 2,-2 2,-3 3,-3 9 7 7 6 (enrico,3,3 2,3 2,4 3,2 3,3 3,4 4,2 6

4,3 10 8 (carla,-2,3-2,3-2,2-2,1-1,1 0,1 1,1 2,1 2,0 2,-1 2,-2 2,-3 3,-3 3 (enrico,-2,3-2,3-2,2-2,1-1,1 0,1 1,1 2,1 2,0 2,-1 3,-1 2,-2 2,-3 3,-3 1 Presentazione del progetto Il progetto deve essere inviato per posta elettronica all indirizzo aguzzoli@dsi.unimi.it entro il 24 settembre 2007 (incluso. La discussione del progetto e l esame orale si svolgeranno in data e luogo da specificarsi (consultare al riguardo il sito: http://homes.dsi.unimi.it/ torelli/algoritmi.html. Occorre presentare: 1. il codice sorgente (rigorosamente ANSI C, compilabile con gcc; 2. una sintetica relazione (formato pdf o rtf che illustra le strutture dati utilizzate e analizza il costo delle diverse operazioni richieste dalla specifica. 7

I due o più file (file sorgenti C + relazione devono essere contenuti in un unico file.zip il cui nome dovrà essere cognome.zip. La relazione e il codice devono riportare il vostro nome, cognome e matricola. Una copia cartacea della relazione e del codice deve inoltre essere consegnata al dr. Aguzzoli entro il 24 settembre 2007 (lasciandola eventualmente nella sua casella postale presso il dipartimento in via Comelico. Si ricorda infine di presentarsi alla prova orale con una copia stampata della relazione e del codice. La discussione del progetto e l esame orale di Algoritmi e Strutture Dati si svolgeranno indicativamente nei giorni 28 settembre, 2 e 9 ottobre 2007. Alla consegna del progetto, indicare nel testo della e-mail la data in cui si preferisce sostenere la prova orale; nei limiti del possibile si cercherà di tener conto di tali indicazioni (se non si hanno preferenze, non dare alcuna indicazione. Il calendario degli esami orali sarà disponibile sulla pagina del corso qualche giorno dopo il termine di consegna del progetto. Per ogni ulteriore chiarimento: E-mail: aguzzoli@dsi.unimi.it icevimento: il mercoledì, ore 1-16, stanza S204. Avvisi La versione aggiornata del progetto è pubblicata in.pdf sul sito: http://homes.dsi.unimi.it/ aguzzoli/algo.htm. Si consiglia di consultare periodicamente questo sito per eventuali correzioni e/o precisazioni relative al testo del progetto. Si richiede allo studente di effettuare un adeguato collaudo del proprio progetto su numerosi esempi diversi per verificarne la correttezza e valutarne le prestazioni. La realizzazione del progetto è una prova d esame da svolgersi individualmente. I progetti giudicati frutto di collaborazioni saranno estromessi d ufficio dalla valutazione. 8