.dsy:it. Pages (18): « First ... « 9 10 11 12 [13] 14 15 16 17 » ... Last »
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Algoritmi e strutture dati (http://www.dsy.it/forum/forumdisplay.php?forumid=207)
-- [Progetto] L'ape bottinatrice (http://www.dsy.it/forum/showthread.php?threadid=21329)


Posted by zac111 on 01-10-2005 09:44:

mi calcola il viaggio,poi esce dall'esecuzione e mi segnala l'errore
con la finestrella di invio segnalazione


Posted by lino on 01-10-2005 11:05:

Scusate, i files da cui la funzioni inserisci legge i valori da associare ai singoli fiori, lo genrate voi?


Posted by maynard80 on 01-10-2005 12:43:

ragazzi non lo so sarò cretino io ma non riesco mica ad applicare Dijkstra al mio albero binario.....

l'unica cosa che ho pensato per trovare il cammino e costruire un albero ternario a parte che sia l'insieme di tutti i cammini e scegliere li il cammino.....

__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !


Posted by maynard80 on 01-10-2005 13:00:

ho pensato di costruire per ogni viaggio un secondo albero ternario con i possibili cammini (l'ape per saltare da un fiore ad un altro ha al + 3 possibilità rappresentati dai 3 fiori in avanti)

tale albero deve quindi rispettare le regole di muovimento e deve rispettare la regola per cui:

|deltaY| = oppure > deltaX

se tale regola è rispettata il fiore che sto esaminando può raggiungere il fiore di arrivo.

una volta che ho il mio albero dei cammini guardo il cammino con il peso massimo (magari durante l'inserimento il campo polline lo sostituisco con la somma di tutti i precedenti così che in ogni foglia ho il peso del cammino dalla radice)

è l'unica idea che mi è venuta, ma non vorrei sia un casino

__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !


Posted by mitnik on 01-10-2005 13:42:

Originally posted by zac111
mi calcola il viaggio,poi esce dall'esecuzione e mi segnala l'errore
con la finestrella di invio segnalazione


anche a me fa cos', mentre in linu tutto ok. Dici che potrebbe essere un problema?


Posted by drakend on 01-10-2005 13:49:

Ciao,
provate gli esempi che ci sono nel file allegato a questo messaggio.
Estraete la directory temp dove vi pare e poi eseguite il vostro programma con input input_a.txt ed input_b.txt in file di output e dopo li confrontate rispettivamente con output_a.txt e output_b.txt.
Ditemi i risultati! Magari usate diff o windiff, così che si evidenzino subito le differenze.


Posted by mitnik on 01-10-2005 14:06:

Originally posted by mitnik
anche a me fa cos', mentre in linu tutto ok. Dici che potrebbe essere un problema?


ho risolto. Se avete dei problemi con windows controllate tutti i puntatori.


Posted by Frigging on 01-10-2005 14:43:

Originally posted by drakend
Ciao,
provate gli esempi che ci sono nel file allegato a questo messaggio.
Estraete la directory temp dove vi pare e poi eseguite il vostro programma con input input_a.txt ed input_b.txt in file di output e dopo li confrontate rispettivamente con output_a.txt e output_b.txt.
Ditemi i risultati! Magari usate diff o windiff, così che si evidenzino subito le differenze.


Confermo i medesimi risultati.


Posted by maynard80 on 01-10-2005 16:59:

Originally posted by maynard80
ho pensato di costruire per ogni viaggio un secondo albero ternario con i possibili cammini (l'ape per saltare da un fiore ad un altro ha al + 3 possibilità rappresentati dai 3 fiori in avanti)

tale albero deve quindi rispettare le regole di muovimento e deve rispettare la regola per cui:

|deltaY| = oppure > deltaX

se tale regola è rispettata il fiore che sto esaminando può raggiungere il fiore di arrivo.

una volta che ho il mio albero dei cammini guardo il cammino con il peso massimo (magari durante l'inserimento il campo polline lo sostituisco con la somma di tutti i precedenti così che in ogni foglia ho il peso del cammino dalla radice)

è l'unica idea che mi è venuta, ma non vorrei sia un casino


vedo con dispiacere che tutti i miei post vengono snobbati.... :(

__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !


Posted by zac111 on 01-10-2005 17:00:

spero di no, ora lo provo su linux, ma avete usato djstra?
se non è il massimo della velocità lo terrà buono?


Posted by drakend on 01-10-2005 17:35:

Originally posted by Frigging
Confermo i medesimi risultati.

Ecco volevo dire che è possibile che i programmi selezionino punti diversi su alcuni cammini ottimi: questo accade quando ci sono due possibili punti in un cammino che hanno lo stesso valore. In quel caso non è un baco del programma ma una caratteristica (dipende dall'algoritmo usato per stabilire il cammino critico).


Posted by maynard80 on 01-10-2005 22:26:

devo mettere dei percorsi di nodi della mia struttura in un albero ternario, questo albero rappresenta i possibili cammini dal nodo start al nodo end.

code:
typedef int polline; typedef int prato; /*key : indice della posizione del fiore sul piano*/ struct key{ int X; int Y; }; typedef struct key key; /*albero binario: rappresenta i punti del piano*/ struct searchtree { prato id_prato; polline raccolto; key chiave; struct searchtree *left, *right, *up; }; typedef struct searchtree searchtree; /*campo : rappresenta un insieme di prati che hanno punti in comune*/ struct field{ int id_campo; int id_prato; struct field *next; }; typedef struct field field; /*lista di campi*/ field *PRATO_FIORITO; struct routetree{ polline totale; key chiave; struct routetree *left, *right, *center, *up; }; typedef struct routetree routetree; routetree *CAMMINI; routetree *createroutetree(searchtree *start){ routetree *q = malloc(sizeof(routetree)); q->left=q->right=q->center=NULL; q->totale=start->raccolto; q->chiave=start->chiave; return q; } int checkstep(key *step, searchtree *end){ int deltax=(abs)(end->chiave.X - step->X); int deltay=(end->chiave.Y - step->Y); if(deltay>=deltax) return 1; return 0; } routetree *buildroutetree(searchtree *piano, routetree *cammini, searchtree *end){ searchtree *searchtree_tmp; key *key_tmp; if(isMin(cammini->chiave,end->chiave)>0){ key_tmp->X=cammini->chiave.X-1; key_tmp->Y=cammini->chiave.Y+1; if(searchtree_tmp=itsearch(piano, *key_tmp)){ if(checkstep(key_tmp, end)){ cammini->left=malloc(sizeof(routetree)); cammini->left->up=cammini; cammini->left->chiave=searchtree_tmp->chiave; cammini->left->totale=searchtree_tmp->raccolto+cammini->totale; cammini->left->left=buildroutetree(piano, cammini->left, end); cammini->left->center=buildroutetree(piano, cammini->left, end); cammini->left->right=buildroutetree(piano, cammini->left, end); } else cammini->left=NULL; } else cammini->left=NULL; key_tmp->X=cammini->chiave.X; key_tmp->Y=cammini->chiave.Y+1; if(searchtree_tmp=itsearch(piano, *key_tmp)){ if(checkstep(key_tmp, end)){ cammini->center=malloc(sizeof(routetree)); cammini->center->up=cammini; cammini->center->chiave=searchtree_tmp->chiave; cammini->center->totale=searchtree_tmp->raccolto+cammini->totale; cammini->center->left=buildroutetree(piano, cammini->center, end); cammini->center->center=buildroutetree(piano, cammini->center, end); cammini->center->right=buildroutetree(piano, cammini->center, end); } else cammini->center=NULL; } else cammini->center=NULL; key_tmp->X=cammini->chiave.X+1; key_tmp->Y=cammini->chiave.Y+1; if(searchtree_tmp=itsearch(piano, *key_tmp)){ if(checkstep(key_tmp, end)){ cammini->right=malloc(sizeof(routetree)); cammini->right->up=cammini; cammini->right->chiave=searchtree_tmp->chiave; cammini->right->totale=searchtree_tmp->raccolto+cammini->totale; cammini->right->left=buildroutetree(piano, cammini->right, end); cammini->right->center=buildroutetree(piano, cammini->right, end); cammini->right->right=buildroutetree(piano, cammini->right, end); } else cammini->right=NULL; } else cammini->right=NULL; } return cammini; }


questi li spezzoni di codice, ho cercato di creare il primo nodo con il metodo createroutetree() e poi riempirlo ricorsivamente con build routetree()

lo so fa schifo, se qualcuno mi posta il codice per costruire un albero ternario gli offro una birra a Milano (anche 2)

__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !


Posted by maynard80 on 02-10-2005 02:05:

guardate che codice assurdo, non vedete che sto impazzendo, guardate che ore sono....

sono riuscito a rappresentare il piano con un albero binario, riesco a fare l'inserimento, la cancellazione, il numero di campi....... ma non riesco a capire come fare a tirare fuori i percorsi da sto ca@@o di albero, la consegna è tra meno di 48 ore per favore qualcuno mi dia una dritta (anche in pvt) almeno ditemi che struttura d'appoggio usare (questa dell'albero binario è chiaramente una follia)

pleeease!

__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !


Posted by maynard80 on 02-10-2005 13:20:

panico panico, probabilmente gli alberi ternari sono una cazzata....

Dijkstra, per usare questo algoritmo come faccio? nel senso io mio albero binario è ordinato in base alla chiave (X,Y)

ma ad esempio per andare da 0,0 a 2,2 se il cammino esiste esso è per forza 0,0-1,1-2,2

la mia ape si può muovere solo in alto ed in diagonale alta (chiaramente se esistono tutti i nodi che compongono il cammino)

se ci sono + cammini prendo il cammino con il quantitativo di polline maggiore.

ma come si applica Dijkstra ad un albero binario? e che modifiche devo fare??? i valori di polline eventualmente negativi danno problemi???

__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !


Posted by zac111 on 02-10-2005 14:18:

scusate ma l'output dal punto 8,5 a a 10,14 non viene come
nel testo?????anche a voi aiuto!!!


All times are GMT. The time now is 14:37. Pages (18): « First ... « 9 10 11 12 [13] 14 15 16 17 » ... Last »
Show all 262 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.