Il problema Laboratorio di Algoritmi e Strutture Dati Docenti: M. Goldwurm, S. Aguzzoli Appello del 5 Aprile 005 Progetto Recinti Conegna entro il Aprile 005 Si tudia la reitenza di alcune pecie di piante a trattamenti anticrittogamici particolarmente aggreivi e potenzialmente nocivi per le piante tee. Formalmente, chiamiamo piano l inieme dei punti { x, y Z Z }. Una pianta è caratterizzata dalla poizione x, y in cui è collocata e dalla pecie w di appartenenza, dove x, y è un punto del piano e w è una parola ull alfabeto {a,..., z}. In un punto può eervi al più una pianta. Un recinto è un poligono conveo. Uiamo la notazione Rx, y, x, y,..., x n, y n, dove n 3, per definire il recinto i cui vertici elencati in eno orario ono i punti di coordinate x, y, x, y,..., x n, y n. Ad eempio R7,, 5, 9, 5, 5, 9,, 3, 3,, 7,, 0 è il recinto nella figura. 0 8 6 4 0 4 6 8 0 4 6 Lo teo recinto può eere anche definito ad eempio come R5, 5, 9,, 3, 3,, 7,, 0, 7,, 5, 9. Nel eguito i aume che i vertici del recinto iano forniti dall utente in modo corretto. Ad eempio, non verrà mai chieto di cotruire i recinti R,, 3, 3, 4,,, 5,, R0, 3, 4,,,,,
Infatti, nel primo cao il punto, non è un vertice del poligono, nel econdo cao il poligono riultante non è conveo. Nel piano può eervi al maimo un recinto. Un punto è nel recinto e i trova all interno o ul bordo del recinto. Ad eempio, riferendoi al recinto in figura, i punti 8,9, 7,, 3, 4, 5,7 ono nel recinto mentre i punti 0,0,,4,,3 non lo ono. Una pianta è nel recinto e è poizionata in un punto nel recinto. La capienza di un recinto è data dal maimo numero di piante che poono eervi nel recinto. Il recinto nella figura ha capienza 03. Un trattamento anticrittogamico tabilice fra le pecie di piante una gerarchia di reitenza al trattamento teo, decritta da una relazione d ordinamento tretto <. Queto ignifica che < deve verificare le eguenti proprietà degli ordinamenti tretti: P. Per ogni pecie w e w, e w < w, allora non vale w < w. P. Per ogni pecie w, w e w 3, e w < w e w < w 3, allora w < w 3. La gerarchia fra le pecie è tabilita dall utente e il programma deve controllare che le aerzioni del tipo u < v inerite dall utente non violino le proprietà critte opra. Ad eempio, upponiamo che la relazione fra pecie ia coì definita: begonia<geranio geranio<gardenia primula<oleandro gardenia<oleandro oleandro<magnolia gardenia<azalea geranio<camelia camelia<azalea In queta ituazione l utente non può aggiungere a < l aerzione oleandro<begonia. Infatti, per la proprietà P i ha che begonia<oleandro, quindi per P non può valere oleandro<begonia. È poibile invece inerire begonia<primula oppure: primula<begonia, camelia<gardenia oppure: gardenia<camelia, ecc. La omminitrazione del trattamento nel recinto determina una elezione alla concluione della quale rimangono olo le piante appartenenti alle pecie più reitenti. La elezione fra le piante nel recinto avviene econdo la eguente regola: Una pianta della pecie w nel recinto viene eliminata e e olo e eite nel recinto una pianta di pecie w tale che w < w. Nell eempio precedente, e nel recinto eite un oleandro, tutte gli eemplari di primula, di geranio, di begonia e di gardenia nel recinto ono eliminati. Si richiede di implementare una truttura dati efficiente che permetta di eeguire le operazioni eguenti i tenga preente che la minima porzione rettangolare di piano contenente tutte le piante può eere molto grande ripetto al numero di piante preenti, quindi non è icuramente efficiente rappreentare il piano mediante una matrice. - crea Crea un piano vuoto eliminando l eventuale piano già eitente e le piante in eo preenti, eliminando inoltre il trattamento coniderato e dunque ogni aerzione relativa alla relazione <. - inerici x, y, w Se ul punto x, y non c è alcuna pianta, pone u x, y una pianta di pecie w, altrimenti non compie alcuna operazione.
- recinto x, y,..., x n, y n Cotruice il recinto Rx, y,..., x n, y n n 3 ditruggendo l eventuale recinto già eitente. Si aume che i punti x, y,..., x n, y n iano i vertici di un poligono conveo, elencati in eno orario. - capienza Stampa la capienza del recinto ul piano 0 e il recinto non è definito. - tampa Stampa il contenuto del recinto econdo il formato pecificato nell appoita ezione. - minore w, w Aggiunge alla relazione < l aerzione w<w fra le pecie w e w e non vengono violate le proprietà P,P definitorie dell ordine tretto, altrimenti tampa il meaggio: Impoibile aggiungere l aerzione w<w. - confronta w, w Stampa w < w e w < w, w < w e w < w, w <> w altrimenti. - elezione Somminitra il trattamento e compie la elezione fra le piante nel recinto. - eemplari w Stampa il numero totale di piante di pecie w preenti nel piano. Alcuni uggerimenti Il determinante della matrice aociata a due vettori a, a Z Z e b, b Z Z è a b det = a a b b a b. Il valore aoluto di tale determinante fornice l area del parallelogramma P i cui vertici ono 0, 0, a, a, a + b, a + b, b, b. Inoltre tale valore coincide con il numero di punti di Z Z contenuti nel parallelogramma P eccettuati quelli giacenti ul egmento di etremi a, a, a + b, a + b e quelli giacenti ul egmento di etremi a + b, a + b, b, b. Sia k = a b a b il valore del determinante. k > 0 e la rotazione che porta il egmento di etremi 0, 0, a, a a ovrappori alla emiretta di origine 0, 0 e paante per b, b è effettuata in eno antiorario. k < 0 e tale rotazione è effettuata in eno orario. k = 0 e i tre punti 0, 0, a, a, b, b giacciono ulla tea retta. Il numero di punti di Z Z giacenti ul egmento 0, 0, a, a è uguale a gcda, a +, dove gcd denota il maimo comun diviore. 3
Specifiche di implementazione Il programma deve leggere dallo tandard input tdin una equenza di linee eparate da \n, ciacuna delle quali corriponde a una linea della prima colonna della Tabella, dove x, x,..., x n, y n ono numeri interi e w, w ono parole ull alfabeto {a,..., z}. I vari elementi ulla linea ono eparati da uno o più pazi. Quando una linea è letta, viene eeguita l operazione aociata; le operazioni di tampa ono effettuate ullo tandard output tdout, e ogni operazione deve iniziare u una nuova linea. Linea di input Operazione c crea i x y w inerici x, y, w r x y... x n y n recinto x, y,..., x n, y n C capienza tampa < w w minore w, w? w w confronta w, w S elezione e w eemplari w f Termina l eecuzione del programma Tabella : Specifiche del programma Note. Non devono eere preenti vincoli ulla dimenione del piano, ulla lunghezza delle parole, ul numero di lati del recinto, ul numero di elementi nel piano e non quelli determinati dal tipo di dato intero. Non i richiede anzi i coniglia l uo di grafica, e non per tet peronali: in modo particolare, non i ui conio.h e neppure clrcr.. Per emplicità i uppone che l input ia empre conforme alle pecifiche di Tabella, per cui non è neceario controllare la correttezza dell input. Per leggere l input i uino le funzioni tandard ANSI C getchar e/o canf. 4
3. Siano x, y,..., x k, y k i punti nel recinto in cui vi è una pianta, dove i punti ono ordinati ripetto all ordinamento leicografico. Supponendo che la pianta in x i, y i appartenga alla pecie w i, l output del comando deve eere viualizzato nel eguente formato: Eempio x, y : w x, y : w. x k, y k : w k Si upponga che le linee di input iano: c < origano alvia < camomilla bailico < ortica prezzemolo < mirto maggiorana < romarino alvia < romarino origano < camomilla origano < alvia camomilla < ortica mirto < mirto ginepro < cicuta ambuco < menta prezzemolo < ginepro menta < prezzemolo mirto < cipolla prezzemolo < cicuta prezzemolo < cicuta cipolla < cicuta menta < ginepro cicuta < maggiorana cicuta r 4 3 8 4 4 0 6 4 6 4 C i 3 cicuta i 3 3 ortica i 9 8 romarino i 33 camomilla i 6 6 origano i 3 3 prezzemolo i 0 9 ginepro i 5 bailico i 4 bailico i 9 9 cipolla In bae a tale ordinamento, a, b < c, d e e olo e a < c oppure a = c e b < d. 5
i 9 5 bailico i 5 0 carota i 0 0 menta i 5 origano i 5 7 alvia i 7 9 cipolla i 4 maggiorana i 4 9 menta i 9 5 origano i 9 ginepro? carota bailico? ortica menta? menta mirto? carciofo aparago e ginepro S e ginepro r 7 9 4 9 9 5 0 7 5 3 C e origano S e origano r 7 4 34 5 5 8 7 7 7 8 3 4 C S i 0 6 prezzemolo S e ortica f L output prodotto dal programma deve eere: Impoibile aggiungere l aerzione alvia < camomilla Impoibile aggiungere l aerzione prezzemolo < mirto 33 5,:bailico 6,6:origano 0,9:ginepro 3,3:prezzemolo 6
carota <> bailico ortica < menta mirto < menta carciofo <> aparago 5,:bailico 6,6:origano 3,3:prezzemolo 73 7,9:cipolla 9,5:origano 0,0:menta,5:origano,9:ginepro 4,:bailico 5,7:alvia 9,9:cipolla 3 7,9:cipolla 0,0:menta 4,:bailico 5,7:alvia 9,9:cipolla 34 4,9:menta 4,:maggiorana 7,9:cipolla 0,0:menta 4,:bailico 5,7:alvia 9,5:bailico 9,9:cipolla 4,9:menta 7,9:cipolla 0,0:menta 7
4,:bailico 5,7:alvia 9,5:bailico 9,9:cipolla 0,6:prezzemolo 4,:bailico 5,7:alvia 9,5:bailico Preentazione del progetto Il progetto deve eere inviato per pota elettronica all indirizzo aguzzoli@di.unimi.it entro il Aprile 005 incluo. La dicuione del progetto e l eame orale i volgeranno in data e luogo da pecificari conultare al riguardo il ito: http://home.di.unimi.it/ goldwurm/algo. Occorre preentare:. il codice orgente rigoroamente ANSI C, compilabile con gcc;. una intetica relazione formato pdf o rtf che illutra le trutture dati utilizzate e analizza il coto delle divere operazioni richiete dalla pecifica. I due o più file file orgenti C + relazione devono eere contenuti in un unico file.zip il cui nome dovrà eere cognome.zip. La relazione e il codice devono riportare il votro nome, cognome e matricola. Una copia cartacea della relazione e del codice deve inoltre eere conegnata al dr. Aguzzoli empre entro il Aprile 005 laciandola eventualmente nella ua caella potale preo il dipartimento in via Comelico. Si ricorda infine di preentari alla prova orale con una copia tampata della relazione e del codice. Per ogni ulteriore chiarimento: E-mail: aguzzoli@di.unimi.it Ricevimento: il mercoledì, ore 5-6, tanza S04. Avvii La verione aggiornata del progetto è pubblicata in.pdf ul ito: http://home.di.unimi.it/ aguzzoli/algo.htm. Si coniglia di conultare periodicamente queto ito per eventuali correzioni e/o preciazioni relative al teto del progetto. Si richiede allo tudente di effettuare un adeguato collaudo del proprio progetto u numeroi eempi diveri per verificarne la correttezza e valutarne le pretazioni. La realizzazione del progetto è una prova d eame da volgeri individualmente. I progetti giudicati frutto di collaborazioni aranno etromei d ufficio dalla valutazione. 8