Laboratorio Di ASD: Progetto N. 2

Laboratorio Di ASD: Progetto N. 2

Laboratorio di ASD: Progetto n. 2 a.a. 2005/2006 Date di consegna La consegna va fatta a mano e via e-mail scrivendo ad entrambi i seguenti indirizzi: [email protected] e [email protected], entro e non oltre il 7 Luglio 2006. Non si accetteranno consegne via e-mail in formati diversi da PDF e Postscript. Punto 1 Realizzare un programma che prende in input un file descrivente un albero genealogico (descritto rispetto alla sintassi presentata in seguito) e ne costruisce una rappresentazione interna. Si deve usare una struttura dati ad albero per memorizzare l’albero, ed una tabella hash per memorizzare puntatori a nodi, in modo da avere un accesso medio O(1) ai nodi interni. E` inoltre necessario predisporre un’interfaccia utente testuale che, una volta costruita la rap- presentazione dell’albero, prenda in input delle query (vedi sotto) e risponda. Sintassi degli alberi genealogici Un file che descrive gli alberi genealogici avr`ala seguente sintassi: • La riga iniziale consiste di una dichiarazione del tipo gentree COGNOME; • Ogni altra riga `edel tipo NOME_ID + (NOME CONSORTE) # FIGLIO_1 + FIGLIO_2 + ... + FIGLIO_n; Il requisito fondamentale `eche ogni nome sia distinto (per questo si usa ID). Nel sito del corso c’`eun file con un albero genealogico che potete usare come esempio. Il contenuto del file `eil seguente: gentree Agnelli; Giovanni Agnelli + (Clara Boselli) # Aniceta Agnelli + Edoardo Agnelli; Edoardo Agnelli + (Virginia Bourbon Del MonteClara) # Giovanni Agnelli_2 + Susanna Agnelli + Maria Sole Agnelli + Cristina Agnelli + Umberto Agnelli + Giorgio Agnelli; Giovanni Agnelli_2 + (Marella Caracciolo) # Margherita Agnelli + Edoardo Agnelli; Margherita Agnelli + Alain Elkann # John Jacob Elkann + Lapo Elkann + Ginevra Elkann; Umberto Agnelli + Antonella Bechi Piaggio # Giovanni Alberto Agnelli; Giovanni Alberto Agnelli + Frances Avery Howe # Virginia Asia Agnelli; 1 Queries Le query a cui `enecessario saper rispondere sono del tipo: • genitore(x,y) (x `egenitore di y, risposta: vero/falso). • figlio(x,y) (x `efiglio di y, risposta: vero/falso). • antenato(x,y) (x `eantenato di y, risposta: vero/falso). • discendente(x,y) (x `ediscendente di y, risposta: vero/falso). Le query devono essere prese in input da console, analizzate sintatticamente e risposte. Per rispondere ad alcune di esse `enecessario fare una visita di una porzione dell’albero; tale visita va fatta in ampiezza (usando una coda). Ricordatevi di usare la tabella hash dei nodi! Punto 2 Si implementino gli alberi rosso-neri con la sentinella nil[T ] e chiavi intere. In particolare si richie- de che vengano implementate le operazioni di inserimento, cancellazione, ricerca di un elemento generico, del minimo e del massimo. Infine si implementi l’operazioni di Join su due alberi rosso-neri T1 e T2 e un lemento x tale che ∀x1 ∈ T1, x2 ∈ T2.key[x1] ≤ key[x] ≤ key[x2]. Per far ci`osi introduca un nuovo campo bh[T] (uno per tutto l’albero). Si vuole inoltre rilevare il comportamento asintotico nel caso medio delle seguenti operazioni, in funzione della dimensione del vettore: • inserimento di un elemento; • ricerca e successiva cancellazione di un elemento presente nell’albero (si scelga diligentemente l’elemento da cancellare); • join. A tal fine, si stimi, per ognuna delle operazioni elencate, il tempo medio di esecuzione su alberi con n elementi, per n pari a 1000, 2000, 5000 e 10000, con intervallo di confidenza del 95%. Relazione Si deve consegnare una relazione analitica di 15-20 pagine (esclusi i listati) che comprenda: 1. descrizione del problema e degli obiettivi dell’esperimento; 2. descrizione ed analisi degli algoritmi implementati; 3. plot di albero rosso-nero con 20 nodi, tramite graphviz; 4. esempi illustranti il funzionamento dell’operazione di Join; 5. discussione sulla metodologia dell’esperimento e sulle scelte implementative; 6. strumenti utilizzati; 7. tabelle e grafici riepilogativi e comparativi dei risultati sperimentali (con linee di tendenza relative ai tempi misurati); 8. discussione dei risultati ottenuti nei test effettuati e confronto con la teoria; 9. conclusioni; 10. listati completi. 2 Note • I gruppi possono consistere al pi`udi tre componenti; • per generare i numeri casuali si utilizzi il Random generator visto a lezione; • si commenti il codice opportunamente ed in italiano e si utilizzino nomi di variabili signifi- cativi. 3.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    3 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us