![]() |
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)
mi calcola il viaggio,poi esce dall'esecuzione e mi segnala l'errore
con la finestrella di invio segnalazione
Scusate, i files da cui la funzioni inserisci legge i valori da associare ai singoli fiori, lo genrate voi?
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 !
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 !
Originally posted by zac111
mi calcola il viaggio,poi esce dall'esecuzione e mi segnala l'errore
con la finestrella di invio segnalazione
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.
Originally posted by mitnik
anche a me fa cos', mentre in linu tutto ok. Dici che potrebbe essere un problema?
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.
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

__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
spero di no, ora lo provo su linux, ma avete usato djstra?
se non è il massimo della velocità lo terrà buono?
Originally posted by Frigging
Confermo i medesimi risultati.
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; }
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
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 !
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 !
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.