View Single Post
Old 21-01-2010, 13:05   #2
DavideV
Junior Member
 
Iscritto dal: Jan 2010
Messaggi: 4
Quote:
Originariamente inviato da :.Blizzard.: Guarda i messaggi
Ciao ragazzi
Sono agli sgoccioli per la mia tesi della triennale e ho un ultimo problema da affrontare e necessito dei vostri consigli.

Partiamo da questa immagine:



Premessa:

il mio problema è quello di individuare nel minor tempo possibile il bordo della figura evidenziata dai tratti verdi e viola.
Tutti questi punti vengono calcolati all'interno del programma tramite la differenza di punti di funzioni. Ciascuna funzione a sua volta mantiene i propri punti all'interno di un array bidimensionale di dimensione (#punti funzione ) * 2 , ovvero ascissa e ordinata. Iterando queste differenze in un determinato modo ottengo strada facendo i punti della figura di cui devo calcolarne il bordo.

Per risolvere il problema basterebbe conoscere per ogni valore dell'ascissa quali sono i punti di ordinata massima e minima.
E' per questo motivo che ho pensato alle tabelle hash: mano a mano che calcolo i punti della figura, utilizzo come chiave il valore dell'ascissa e faccio in modo che a quell'ordinata siano sempre associati soltanto due elementi, il massimo e il minimo, aggiornando questi due valori ogni volta che viene calcolato un nuovo punto di uguale ascissa.

Può andare come ragionamento? Avete qualche consiglio/idea ?

Per quanto riguarda il codice invece in teoria basta utilizzare il metodo put per l'inserimento:
Codice:
put(Object key, Object value)
       //   Maps the specified key to the specified value in this hashtable.
mentre per scorrere gli elementi aventi la stessa chiave cosa devo fare?
Ho appena iniziato lo studio di Java quindi non saprei darti suggerimenti specifici del linguaggio. Per quanto riguarda il livello di astrazione, invece, direi che effettivamente una tabella di Hash sarebbe il massimo. Aiutato proprio dalla definizione stessa di funzione non corri il rischio di collisione e quindi riesci a implementare la tabella in tempo O(1)

Non capisco bene cosa intendi per "scorrere gli elementi aventi la stessa chiave". Intendi il fatto di leggere i valori min/max di entrambe le funzioni per uno stesso valore sul dominio? Potresti definire la tabella Hash nella classe di ogni funzione e richiamarla con un for ... each applicato alle classi...

spero di esserti stato d'aiuto!
DavideV è offline   Rispondi citando il messaggio o parte di esso