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

Progetto Prestiti Laboratorio di Algoritmi

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

Variabili e Istruzioni

Linguaggio C: introduzione

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

Dati aggregati. Violetta Lonati

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

Laboratorio di Algoritmi e Strutture Dati

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

Uso di base dell ordinamento di dati in Microsoft Excel

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

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

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica

Elaborato Shell. Elementi di architettura e sistemi operativi 2016/2017

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Laboratorio di Algoritmi e Strutture Dati

LABORATORIO DI INFORMATICA

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

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

Laboratorio di Algoritmi e Strutture Dati

REGOLAMENTO PROVA FINALE E DETERMINAZIONE DEL VOTO DI LAUREA CORSI DI LAUREA TRIENNALE E MAGISTRALE

CORSO DI LAUREA IN SCIENZE E TECNOLOGIE MULTIMEDIALI

Prova di Laboratorio di Programmazione

INDICAZIONI PER L ORGANIZZAZIONE DELLE GIORNATE DI SOMMINISTRAZIONE DELLE PROVE RILEVAZIONE NAZIONALE INVALSI

Come richiedere o modificare una lista di distribuzione (mailing list)

NOTE ILLUSTRATIVE PER LA COMPILAZIONE DEI MODELLI EX 60%

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

- ricordando Massimo D'Antona -

<Nome Tabella>.<attributo>

UNIVERSITA DEGLI STUDI DELL'INSUBRIA

RELAZIONE FINALE. Prof. ROCCA Fabio, professore Ordinario presso la Facoltà di Ingegneria dell Informazione Politecnico di Milano;

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

Elementi di informatica e Programmazione

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

Indicazioni su come preparare la relazione su un esperienza di laboratorio

Fondamenti di Informatica T-1. Classi & vettori

Attività di informazione e relazioni con i media, linee guida operative

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

SARDINIA 2013 ISTRUZIONI PER LA PREPARAZIONE DEGLI ARTICOLI E GLI EXECUTIVE SUMMARIES

Stringhe e allocazione dinamica della memoria

Macchine di Turing: somma di due numeri

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010

CORSO DI LAUREA IN SCIENZE E TECNOLOGIE MULTIMEDIALI

9In questa sezione. Ordinare e filtrare i dati. Dopo aver aggiunto dati ai fogli di lavoro, potresti voler

Guida all utilizzo dell Area web riservata ai docenti

Permutazioni. 1 Introduzione

Lezione 9 Esercizi d esame

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

Dalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Prova d Esame Compito A

Progetto e analisi di algoritmi

Bando per l ammissione al Corso di Studio in BENI CULTURALI - A.A. 2012/2013

Laboratorio di Algoritmi e Strutture Dati

Informatica per la Comunicazione/ Verdicchio/ 25/09/2013/ Domande / VERSIONE 1

Descrizione processo

Il calcolatore. Architettura di un calcolatore (Hardware)

Progettazione di Algoritmi

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 25/02/2016/ Foglio delle domande / VERSIONE 1

Mini-Corso di Informatica

VERBALI DEI LAVORI DELLA COMMISSIONE GIUDICATRICE DELLA PROCEDURA DI VALUTAZIONE COMPARATIVA PER LA COPERTURA DI N

DIPARTIMENTO DI PSICOLOGIA E DIPARTIMENTO DI INFORMATICA SISTEMISTICA E COMUNICAZIONE REGOLAMENTO DELLA PROVA FINALE

Materiale didattico. Sommario

FAQ Bando Professori visitatori ricerca

Teoria dell informazione

Manuale di istruzioni per l uso dell applicativo ISF-RER

Informatica 1. Prova di recupero 21 Settembre 2001

Dipartimento di Psicologia dello Sviluppo e della Socializzazione Scuola di Psicologia aggiornato al 30/01/2017

Linguaggio C: le funzioni. Introduzione e sintassi

Gestione Tesi Online

Spazio riservato ai docenti

Corso di elettrotecnica Materiale didattico: i grafi

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

Fondamenti di Informatica Programma dettagliato del corso e appunti integrativi del libro di testo consigliato Anno Accademico

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

Università degli Studi di Padova - Facoltà di Scienze MM.FF.NN. - Corso di Laurea in Informatica

Linguaggio C: le funzioni. Introduzione e sintassi

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

A.A. 2016/2017 PIANIFICAZIONE / TEMPISTICA LAUREA Economia aziendale Classe 17, Economia aziendale Classe L-18 Giurisprudenza Classe 31

ISCRIZIONI ONLINE 2014 II FASE Scuole Verifica domande

Art. 1 - Ammissione al primo anno

EUROPEAN COMPUTER DRIVING LICENCE SYLLABUS VERSIONE 5.0

REGOLAMENTO TESI DI LAUREA

Laboratorio di Algoritmi e Strutture Dati

Commissione Paritetica Docenti-Studenti Relazione annuale 2015

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

Laboratorio di Python

Università degli Studi Roma Tre (A.A. 2013/2014) GUIDA ALLA COMPILAZIONE DELL AUTOCERTIFICAZIONE ISEEU ON LINE

Primi passi col linguaggio C

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

Agevolazioni Tariffarie 2016

Primi passi con JFlex

Transcript:

Laboratorio di Algoritmi e Strutture Dati 1 Il problema Docenti: M. Torelli, M. Frasca Progetto Citazioni valido per l appello di settembre 2011 Il Ministero dell Istruzione ha deciso di monitorare in maniera piú rigorosa l attività di ricerca universitaria per migliorarne ed aumentarne la produttività. L obiettivo principale è ottenere delle statistiche che permettano di associare ad ogni ricercatore vari indici di produttività, per poter riorganizzare le attività in modo da creare le condizioni in cui anche i ricercatori meno produttivi possano incrementare le loro pubblicazioni. Aspetto fondamentale in tale contesto è rappresentato dalle pubblicazioni di ciascun ricercatore, non solo dal punto di vista quantitativo ma anche qualitativo. Ogni articolo infatti può essere presentato a una conferenza o pubblicato su rivista (nazionale o internazionale), a seconda della collocazione l articolo assume una rilevanza diversa. Inoltre, ogni articolo contiene una serie di citazioni per altri articoli e, a sua volta, può essere citato da altre pubblicazioni. Quindi, può essere interessante valutare quale impatto un articolo ha avuto sulla comunità internazionale, considerando il numero di citazioni ricevute o se le citazioni ricevute derivano da articoli di grande rilevanza internazionale. Talvolta può essere utile nella valutazione dell operato di un ricercatore anche la vicinanza (in termini di citazioni) con articoli di riferimento o di rassegna nella specifica area di ricerca, oppure le sue collaborazioni con autori di fama internazionale. 2 Operazioni da implementare Il progetto richiede la stesura di un programma che legga da un file una sequenza di istruzioni che rappresentano eventi quali l arrivo di un nuovo ricercatore/autore nella comunità scientifica, la pubblicazione di un articolo scientifico, o che richiedono la determinazione di alcune misure relative alla comunità di ricerca, alla sua produttività o alle collaborazioni che si svolgono al suo interno. Il programma deve leggere dallo standard input (stdin) una sequenza di righe (separate da \n), ciascuna delle quali corrisponde ad un comando descritto in seguito. Useremo la seguente convenzione: i nomi dei comandi e i caratteri da non modificare sono scritti in monospace, mentre in corsivo sono indicati i parametri. Il nome del comando è separato dai suoi parametri da uno o piú spazi; i vari parametri sono separati dal carattere speciale ; il carattere speciale & è invece usato per separare gli elementi di una lista. Se i parametri sono di tipo stringa, si assume che non contengano questi caratteri speciali; possono invece contenere simboli di spaziatura diversi da \n. Quando una riga è letta, viene eseguita l operazione associata; le operazioni di stampa sono effettuate sullo standard output (stdout), e ogni operazione deve stampare su una nuova riga. Comando R : arrivo di un nuovo Ricercatore. Un nuovo ricercatore entra nella comunità e da questo momento in poi sarà un potenziale autore di articoli scientifici. L arrivo di un nuovo ricercatore è rappresentato dal comando R nome 1

dove nome è una stringa di lunghezza arbitraria che identifica il nuovo ricercatore. Se nome esiste già, il comando si arresta stampando il messaggio Autore nome gia presente. Comando A : pubblicazione di un Articolo scientifico. Un articolo scientifico è caratterizzato dai seguenti elementi: - il codice identificativo; - la collocazione editoriale, che può essere: rivista internazionale, conferenza internazionale, rivista nazionale, conferenza nazionale; - il titolo; - i suoi autori; - la bibliografia, ovvero un insieme di altre pubblicazioni che vengono citate. La pubblicazione di un articolo scientifico è rappresentata dal comando A c id titolo nome 1 &nome 2 &... &nome n id 1 &id 2 &... &id m dovec RI, CI, RN, CN,n,m>0, mentreid,titolo,nome i,id i sono stringhe di lunghezza arbitraria che non contengono i caratteri speciali e &. Nel dettaglio: c indica la collocazione (RI= rivista internazionale, CI= conferenza internazionale, RN= rivista nazionale, CN= conferenza nazionale) dell articolo, id è il suo codice identificativo,titolo è il titolo,nome 1,...,nome n è l insieme degli autori,id 1,...,id n è l insieme degli identificativi delle pubblicazioni citate. Quando un articolo viene pubblicato, non può che citare articoli già pubblicati in precedenza. Pertanto, se per qualchei, l identificativoid i non corrisponde ad alcuna precedente pubblicazione, il programma dovrà stampare il messaggio Pubblicazioneid i inesistente. Seid esiste già tra gli articoli inseriti, viene stampato a video il messaggio Articoloid gia presente ; senome i per qualchei 1,,n non esiste, viene stampato il messaggio Autorenome i inesistente. In ciascuno di questi casi l operazione richiesta non viene eseguita. Comando P : stampa dell elenco degli autori di una Pubblicazione. Il comando P id deve stampare l elenco degli autori della pubblicazione con identificativo id, separati dal carattere speciale &. Se id non esiste, il comando termina stampando il messaggio Pubblicazione id inesistente. Esempio. Consideriamo gli Autori e gli Articoli indicati nella Tabella 1. Coll. Id Titolo Autori Art. citati RI 1 the paper Alan Turing, Douglas ofstadter, Seymour Papert RI 2 algorithms for everybody Don Knuth, Edsger W. Dijkstra 1 RI 3 un eterna ghirlanda brillante per finta Douglas ofstadter, Edsger W. Dijkstra 1, 2 RI 4 logo programming language Seymour Papert 3 RI 5 algorithms on graphs Don Knuth, Paul Erdos 1, 2 RI 6 are you human? Alan Turing 3 RI 7 mathematicians on computers Alan Turing, Seymour Papert 5, 6 RI 8 combinatorics on graphs Don Knuth, Paul Erdos 2 RI 9 divulgazione o scienza? Alan Turing, Douglas ofstadter 1, 5, 8 Tabella 1: Esempi di pubblicazioni 2

Il comando P 1 ha il seguente output: Alan Turing & Douglas ofstadter & Seymour Papert Comando G : Graduatoria dei ricercatori in base alle pubblicazioni. L insieme delle pubblicazioni di un ricercatore può dare una prima misura della sua produttività. Una pubblicazione ha una rilevanza diversa a seconda della sua collocazione, come definito di seguito: Rivista Internazionale 2.5, Conferenza Internazionale 1.50, Rivista Nazionale 0.75 e Conferenza Nazionale 0.25. Il comando G deve stampare l elenco di tutti i ricercatori in ordine decrescente rispetto alla somma pesata delle loro pubblicazioni. La graduatoria deve avere questo formato nome 1 x 1 nome 2 x 2... nome t x t dovex i è la somma pesata delle pubblicazioni del ricercatore di nomenome i. In caso di parità nel numero di pubblicazioni, vale l ordine alfabetico dei nomi. Esempio. Consideriamo gli Autori e gli Articoli indicati nella Tabella 1. Il comando G ha come output (nel formato specificato) la sequenza: Alan Turing 10.0, Don Knuth 7.5, Douglas ofstadter 7.5, Seymour Papert 7.5, Edsger W. Dijkstra 5.0, Paul Erdos 5.0. (1) Comando : Nuclei di ricercatori. Un altro aspetto di interesse è individuare i nuclei di ricercatori che tendono a collaborare tra di loro per valutare anche la capacità degli stessi di interagire con ricercatori di altre università in Italia o all estero e non soltanto all interno dell università di appartenenza. Due ricercatori a e b appartengono allo stesso nucleo se esiste una sequenza di ricercatoria 1,a 2,...,a n tali chea 1 =a,a n =b ea i ha collaborato con a i+1 per ognii = 1, 2,...n 1. Il comando deve calcolare e stampare i nuclei di ricercatori esistenti. L elenco deve rispettare il formato nome 11,nome 12,... nome 21,nome 22,...... dovenome ij è il nome delj-mo ricercatore del nucleoi-mo. L ordine di stampa all interno del singolo nucleo può essere casuale. Esempio Consideriamo gli Autori e gli Articoli indicati nella Tabella 1. Il comando ha come output (nel formato specificato) l unica sequenza Don Knuth, Douglas ofstadter, Edsger W. Dijkstra, Alan Turing, Paul Erdos, Seymour Papert. 3

Comando D : Distanza editoriale di un articolo da un altro. Sianop 1 ep 2 due pubblicazioni distinte; diciamo che chep 1 ha distanza editorialen dap 2, e scriviamo n =d(p 1,p 2 ), senèil minimo intero per cui esiste una sequenzaa 0,a 1,...,a n di articolia i tali che a 0 =p 1,a n =p 2 ea i cita l articoloa i 1 per ognii =n,n 1,...1. Se non esiste alcuna sequenza di questo tipo, si dice chep 1 ha distanza indefinita dap 2. La distanza di un articolo a da un altro articolo di riferimento (ad esempio una rassegna recente A) può essere considerata un indice di rilevanza: piú bassa è la distanza, piú rilevante è l articolo; ad esempio, gli articoli citati direttamente daasono probabilmente i piú significativi e si trovano infatti a distanza 1 daa. Il comando D id 1 &id 2 deve calcolare e stampare la distanza dell articolo con codice identificativoid 1 dall articolo con codice identificativoid 2, oppure -1 se tale distanza è indefinita. Inoltre, il comando D id 1 &id 2 c deve calcolare e stampare la distanza dell articolo con codice identificativoid 1 dall articolo con codice identificativoid 2, considerando solo le pubblicazioni che hanno collocazione individuata dal parametro c RI, CI, RN, CN, oppure -1 se tale distanza è indefinita. Se c non è una categoria valida, il comando deve stampare il messaggio Categoria c non ammissibile e terminare. Seid i non esiste, tutti i comandi elencati terminano stampando il messaggio Pubblicazione id i inesistente. Esempio Consideriamo gli Autori e gli Articoli indicati nella Tabella 1. Il comando D 2 & 1 ha come output -1, D 1 & 2 ha come output 1, D 1 & 2 RN ha come output -1, D 1 & 9 dà in output 1, infine D 3 & 7 dà in output 2. Comando E : distanza Editoriale di un autore da una pubblicazione. Sia p una pubblicazione considerata come riferimento e sia r un ricercatore. Se esiste una pubblicazione p dirtale ched(p,p) è finita, allora definiamo distanza editoriale dirdapil valore mind(p,p) r autore dip. In caso contrario diciamo che tale distanza è indefinita. Il comando E n id deve calcolare e stampare la distanza editoriale dell autore di nome n dall articolo identificato da id, oppure -1 se tale distanza è indefinita. Analogamente, il comando E n id c deve calcolare e stampare la distanza editoriale dell autore di nome n dall articolo identificato da id, considerando solo le pubblicazioni che hanno collocazione individuata dal parametro c RI, CI, RN, CN, oppure -1 se tale distanza è indefinita. Se n non esiste, tutti i comandi elencati terminano stampando il messaggio Autore n inesistente. Se qualcheid i non esiste, tutti i comandi elencati terminano stampando il messaggio Pubblicazioneid i inesistente. Se c non è una categoria valida, il comando termina stampando il messaggio Categoria c non ammissibile. 4

Esempio Consideriamo gli Autori e gli Articoli indicati nella Tabella 1. Il comando E Don Knuth & 1 ha come output -1, E Edsger W. Dijkstra & 6 ha come output 1, il comando E Edsger W. Dijkstra & 6 CN ha come output -1, mentre il comando E Edsger W. Dijkstra & 9 ha come output 2. 3 Esempio di esecuzione Si supponga che le righe di input siano le seguenti (la riga 12 è spezzata perché non ci sta nella pagina!!): R Alan Turing R Don Knuth R Douglas ofstadter R Edsger W. Dijkstra R Paul Erdos R Seymour Papert A RI 1 the paper Alan Turing & Douglas ofstadter & Seymour Papert A RI 2 algorithms for everybody Douglas ofstadter & Edsger W. Dijkstra 10 A RI 2 algorithms for everybody Don Knuth & Edsger W. Dijkstra 1 A RI 3 un eterna ghirlanda brillante per finta Paul Knuth 2 A RI 3 un eterna ghirlanda brillante per finta Douglas ofstadter & Edsger W. Dijkstra 1 & 2 A RI 4 logo programming language Seymour Papert 3 G P 3 D 2 & 4 D 2 & 5 E Edsger W. Dijkstra & 4 E Alan Turing & 4 A RI 5 algorithms on graphs Don Knuth & Paul Erdos 1 & 2 A RI 6 are you human? Alan Turing 3 A RI 7 mathematicians on computers Alan Turing & Seymour Papert 5 & 6 A RI 8 combinatorics on graphs Don Knuth & Paul Erdos 2 A RI 9 divulgazione o scienza? Alan Turing & Douglas ofstadter 1 & 5 & 8 L output prodotto dal programma deve essere il seguente: Pubblicazione 10 inesistente Autore Paul Knuth inesistente Alan Touring, Douglas ofstadter, Seymour Papert Don Knuth, Edsger W. Dijkstra Paul Erdos Alan Touring, Douglas ofstadter, Seymour Papert, Don Knuth, Edsger W. Dijkstra Paul Erdos 5

Douglas ofstadter 5.0 Edsger W. Dijkstra 5.0 Seymour Papert 5.0 Alan Turing 2.5 Don Knuth 2.5 Paul Erdos 0.0 Douglas ofstadter & Edsger W. Dijkstra 2 Pubblicazione 5 inesistente 1 2 Alan Touring, Douglas ofstadter, Seymour Papert, Edsger W. Dijkstra, Don Knuth, Paul Erdos 4 Organizzazione degli appelli e modalità di consegna La realizzazione del progetto è una prova d esame da svolgersi individualmente. I progetti giudicati frutto di copiatura saranno estromessi d ufficio dalla valutazione. Si richiede allo studente di effettuare un adeguato collaudo del proprio progetto su numerosi esempi diversi per verificarne la correttezza. La versione aggiornata del progetto è pubblicata in.pdf sul sito: http://frasca.dsi.unimi.it/lasd/lasd.html. Si consiglia di consultare periodicamente questo sito per eventuali correzioni e/o precisazioni relative al testo del progetto. Per ogni ulteriore chiarimento potete chiedere un appuntamento scrivendo una mail all indirizzo frasca@dsi.unimi.it. Il presente progetto è valido per l appello di settembre 2011 e deve essere consegnato: entro il 19 settembre. Le discussioni dei progetti si svolgeranno in data e luogo da specificarsi, comunque entro (o in contemporanea a) la data di svolgimento delle prove orali. Il calendario dei colloqui sarà disponibile sulla pagina del corso http://frasca.dsi.unimi.it/lasd/lasd.html qualche giorno dopo il termine di consegna del progetto. Il progetto va inviato per posta elettronica all indirizzo frasca@dsi.unimi.it entro la data sopra indicata. Occorre presentare: 1. il codice sorgente (rigorosamente ANSI C, compilabile con gcc); 2. una relazione (formato pdf o rtf) che illustra in maniera esauriente le strutture dati utilizzate e le scelte implementative, analizzando il costo delle diverse operazioni richieste dalla specifica. I due o più file (file sorgenti C + relazione) devono essere contenuti in un unico file.zip il cui nome dovrà essere della forma cognome_matricola.zip. La relazione e il codice devono riportare nome, cognome e matricola. Una copia cartacea della relazione e del codice deve inoltre essere consegnata al docente entro le scadenze fissate (lasciandola eventualmente nella casella postale del prof. Torelli presso il dipartimento in via Comelico). Si ricorda infine di presentarsi al colloquio con una copia stampata della relazione e del codice. 6

Note e suggerimenti 1. La correttezza delle soluzioni è un requisito necessario. Un progetto sarà considerato piú o meno valido rispetto all efficienza (tempo di calcolo e memoria occupata) nel risolvere le istanze del problema di dimensioni via via crescenti. 2. Non devono essere presenti vincoli sul numero di ricercatori e pubblicazioni. 3. Per semplicità si suppone che l input sia sempre conforme alle specifiche fornite nelle sezioni precedenti, per cui non è necessario controllare la correttezza dell input. Per leggere l input si usino le funzioni standard ANSI C getchar() e/o scanf(). 4. Organizzare bene il lavoro valutando tutti i requisiti richiesti prima di cominciare a scrivere codice. Strutture dati adeguate spesso richiedono del tempo per essere identificate, ma portano chiaramente a scrivere del codice più efficiente. 7