Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Algoritmi e strutture dati
 
[PROGETTO] Mappe
Clicca QUI per vedere il messaggio nel forum
vlaste
Idee? Suggerimenti? Programmi già fatti da mandarmi via mail? :D

GaL3n
Originally posted by vlaste
Idee? Suggerimenti? Programmi già fatti da mandarmi via mail? :D


auuaua..;) Senti se qualche buon'anima ti invia qualcosa via mail vedi di farmi bel forward hehe!

Sta sera analizzo la traccia.. ! Che la forza sia con me.. e un po' anche con voi!

kingoff
mmmm io gli ho dato un'occhiata stamattina e oggi pomeriggio mi sono messo a scrivere due righe..ho scritto la struttura e il main...ora devo scrivere il testo delle funzioni (ovvero il programma ;-) )

non sembra difficilisismo...ma ancora sono all'inizio...i problemi sono verso fine progetto, quandp compili e hai 22 errori e 130 warning e non sai più dove mettere le mani...

Comunque se ci si vuole trovare per mettere giù due idee di come stendere la struttura...magari diamoci appuntamento in uni....poi ogniuno si scrive il programma a casa...così il prof nn può castigare ( e nemmeno rilevare) eventuali collaborazioni.....

Fatemi sapere

kingoff
mi sorge un dubbio..la funzione crea che "Crea un nuovo piano, eliminando tutte le mappe e ponendo il valore di tutti i punti uguale a n." in realtà non crea un NUOVO piano ma semplicemente "PULISCE" quello vecchio da tutte le mappe.
Allora, se elimino tutte le mappe(le mappe sono fatte da punti),quali punti devo porre a n????(eliminate le mappe non ho più punti no?)

Skilotto83
come gia' detto 3000 volte(ma se è la prima volta che lo fai sei perdonato..) la funzione crea serve solo ad allocare i puntatori della struttura se è la prima esecuzione...
E libera semplicemente i puntatori quando si richiama e vi sono gia' punti...
Il piano ipotetico è tutta la memoria del PC...

GaL3n
Originally posted by Skilotto83
come gia' detto 3000 volte(ma se è la prima volta che lo fai sei perdonato..) la funzione crea serve solo ad allocare i puntatori della struttura se è la prima esecuzione...
E libera semplicemente i puntatori quando si richiama e vi sono gia' punti...
Il piano ipotetico è tutta la memoria del PC...


Scusa Skillotto ma dov'e' che e' stato detto 3000 volte ? Se negli altri 3d relativi ad altri progetti vi è la stessa informazione ritengo comunque utile la domanda del buon Kingoff.. e altrettanto utile la tua risposta :)

Ciao e che la forza sia con Voi giuovani uomini degli algoritmi!

Polsy
Originally posted by kingoff
mi sorge un dubbio..la funzione crea che "Crea un nuovo piano, eliminando tutte le mappe e ponendo il valore di tutti i punti uguale a n." in realtà non crea un NUOVO piano ma semplicemente "PULISCE" quello vecchio da tutte le mappe.
Allora, se elimino tutte le mappe(le mappe sono fatte da punti),quali punti devo porre a n????(eliminate le mappe non ho più punti no?)

io l'ho intesa così, n è il valore che assegnerai a una variabile globale che determina il valore di default di ciascun punto
considerando che il valore dei punti serve solo ad assegnare un valore a una certa mappa, al momento della creazione della mappa trovi il punto in cui termina, se questo ha un valore particolare dato dalla funzione valore() assegni alla mappa quel particolare valore, altrimenti assegni alla mappa il valore della variabile globale

kingoff
in effetti è così che l'ho inteso anche io...ma siccome non vorrei far stupidaggini più grosse di me...tra l'altro sto facendo il progettino alla "basta che non va in loop o overflow", perchè ho troppo poco tempo(lavoro) e, diciamolo, voglia.
Se qualcuno ha folgorazioni tipo idee geniali su quale struttura dati utilizzare invece di un'altra fatelo sapere...sono profondamente convinto che ai più possa essere di aiuto(beh a me personalmente no, ormai ho iniziato e sono tropp pigro per rifare tutto :P )

uvaci
vorrei sottoporre un problema con il progetto mappe:

(winxp)
1) apro la sezione DOS, lancio il batch gocs, lavoro compilo eseguo: tutto ok

2)se chiudo la sezione DOS, la riapro lancio il batch gocs compilo ed eseguo: le stringhe allocate dinamicamente si mischiano e fanno casino

3) se rilancio un'altra volta il batch gocs tsenza chiudere la sessione DOS utto funziona perfettamente e da li in poi tutto va

4) se lancio l'exe senza compilare funziona tutto perfettamente

sono io che sto facendo un gran casino o è un problema noto ?????

ornati
Qualcuno sa se è ammesso suddividere il programma in più file?

kingoff
si se leggi il progetto dice di si ,ma devi mandargli uno zip invece che il semplice file .c

ornati
Originally posted by kingoff
si se leggi il progetto dice di si ,ma devi mandargli uno zip invece che il semplice file .c


Opss, mi era sfuggito... allora gli mando un TAR :)

vlaste
Originally posted by Polsy
io l'ho intesa così, n è il valore che assegnerai a una variabile globale che determina il valore di default di ciascun punto
considerando che il valore dei punti serve solo ad assegnare un valore a una certa mappa, al momento della creazione della mappa trovi il punto in cui termina, se questo ha un valore particolare dato dalla funzione valore() assegni alla mappa quel particolare valore, altrimenti assegni alla mappa il valore della variabile globale


Ok, quindi mi devo tenere in una qualche stuttura (una bella lista, non efficiente ma facile da implementare) anche i valori "non di default" dei punti e, ogni volta che si inserisce una mappa, andare a ricercare se il punto di terminazione della stessa coincide con un punto con valore non di default.................................... bene.

Polsy
Originally posted by vlaste
Ok, quindi mi devo tenere in una qualche stuttura (una bella lista, non efficiente ma facile da implementare) anche i valori "non di default" dei punti e, ogni volta che si inserisce una mappa, andare a ricercare se il punto di terminazione della stessa coincide con un punto con valore non di default.................................... bene.

dai fai lo sborone con un red black :D

occhio che quando cambi valore ad un punto oltre che inserirlo nella struttura devi anche andare a cambiare il valore di tutte le mappe già esistenti che finiscono in quel punto...

queen
cià nessuno ha intenzione di fare un incontro per scambiarc qualche idea???io ho qualche problema a ciclare(x stampare a video) la lista mappa...che naturalmente a sua volta richiama le cordin e tutta la specifica di ogni mappa....grrr

Fatemi sapere.
joseph

manzso
qualcuno ha suggerimenti sulle strutture dati da usare per memorizzare le mappe???

kingoff
una lista?alla fine, va bene fare gli eleganti, ma il tempo di esecuzione risparmiato con un rb tree non e nemmeno la metà di quello che perdo(+ la salute) per ragionarci e programmarlo.
E non è certo quello che ti porta da 18 a 30....

Ariok
ciao a tutti! qualcuno ha pensato ad un modo decente/semplice per fare il controllo dei prefissi dei percorsi delle mappe??(il metodo direzione) come avete implementato questo controllo?!??! mi vengono in mente strutture dati troppo complesse (che non so implementare:P) per risolvere il problema.

manzso
Originally posted by kingoff
una lista?alla fine, va bene fare gli eleganti, ma il tempo di esecuzione risparmiato con un rb tree non e nemmeno la metà di quello che perdo(+ la salute) per ragionarci e programmarlo.
E non è certo quello che ti porta da 18 a 30....



io avevo pensato ad un albero binario, però i miei dubbi erano su come farlo a ordinare, su quali criteri per poi avere più facilità nella ricerca..ma le ricerche possono essere di due tipi, o per il nome o per la direzione..
però se mi dici che non differenza per il voto mi sa che userò veramente una lista...

Ariok
va bhe .. io mi sono fermato.... non so come ragionare per rimuovere i cicli.... lol....qualche suggerimento? link utile?

raffi83
Come vi sta procedendo ?
Qualcuno per caso ha degli altri input con cui testare il progetto ?

queen
io l'ho scritto quasi tutto ma nn riesco a ciclare bene le strutture create o generate....sarei grato davvero se qualcuno mi aiutasse....magari incontrandoci in università...ciao

Ariok
in che senso "ciclare le strutture"?

Ariok
Ciao a tutti posto i miei tempi il terzo e' esageratissimo:P...dite anche i vostri cosi' si capisce un po' come dovrebbe essere la situazione.

test 1: veloce...

test 2: 4,5 secondi

test 3:13 secondi (piu' stampa)

test 4:4 secondi

Athlon xp 2200
1 GB ram DDR

---Edit i miei tempi probabilmente saranno piu' alti del normale.Ho dimenticato totalmente di inserire un controllo nel caso in cui si inseriscano mappe con lo stesso nome.. :(

ornati
paolo@tux ~/project/Mappe $ for i in official-test/in*; do echo $i; time ./mappe < $i > /dev/null; echo ---; done

official-test/in1.txt

real 0m0.002s
user 0m0.000s
sys 0m0.000s
---
official-test/in2.txt

real 0m0.139s
user 0m0.136s
sys 0m0.004s
---
official-test/in3.txt

real 0m0.295s
user 0m0.284s
sys 0m0.012s
---
official-test/in4.txt

real 0m0.069s
user 0m0.064s
sys 0m0.004s

-- EDIT:
CPU: AMD64 3200+
RAM: DDR400

Ariok
un mostro..
Curiosita' che strutture hai usato?

ornati
Originally posted by Ariok
un mostro..
Curiosita' che strutture hai usato?


Hashtable per la corrispondenza "nome mappa" -->mappa

MapTree per trovare tutte le mappe di una data direzione in tempo O(N + M).

N = lunghezza della stringa che specifica la direzione
M = numero di mappe che hanno quella direzione

In sostanza è un albero in cui ogni nodo rappresenta una specifica (la radice è la specifica vuota). Ogni nodo ha una lista contenente le mappe che hanno la specifica corrispondente e 4 possibili figli (NSEW).
Si percorre l'albero seguendo la specifica data.

Inoltre ogni nodo è dotato di una stringa che non è altro che la parte terminale della specifica corrispondete ad esso. Questo permette all'albero di rimanere compatto (se ad esempio inserisci una mappa con specifica di lunghezza 100.000 in un albero che ha solo la radice verrà aggiunto un solo nodo anzichè 100.000).

Ovviamente questa caratteristica complica l'inserimento: può infatti capitare di dover "splittare" un nodo in due e cose del genere... :-)

Ariok
anche io ho strutturato così l'albero per i percorsi... pero' ho fatto la stupidata di usare una lista a parte per salvare le mappe... e poi far puntare dai nodo dell'albero alle mappe.. mi sono accorto che i tempi non erano decisamente buoni pero' ormai ero lanciato .. non avevo piu' molto tempo per finire ... dopo gli orali metti il codice online? ciao grazie

ornati
Originally posted by Ariok
anche io ho strutturato così l'albero per i percorsi... pero' ho fatto la stupidata di usare una lista a parte per salvare le mappe... e poi far puntare dai nodo dell'albero alle mappe.. mi sono accorto che i tempi non erano decisamente buoni pero' ormai ero lanciato .. non avevo piu' molto tempo per finire ... dopo gli orali metti il codice online? ciao grazie


Anche io ho fatto un po' male i conti con il tempo, pensa che l'ho consegnato domenica sera verso le 22:20 !

Dimenticavo: la hash table la uso anche per memorizzare i valori dei punti del piano e persino nella funzione di riduzione.

I sorgenti non sono proprio il massimo... inoltre la scelta del doppio hashing (ripetto alla risoluzione delle collisioni mediante liste) non è ottimale perchè in queste tabelle si rimuovono anche gli elementi.

Comunque credo che li metterò...

ornati
Ho corretto uno stupido bug che rallentava... ecco i nuovi tempi:

paolo@tux ~/project/Mappe $ for i in official-test/in*; do echo $i; time ./mappe < $i > /dev/null; echo ---; done
official-test/in1.txt

real 0m0.002s
user 0m0.000s
sys 0m0.000s
---
official-test/in2.txt

real 0m0.020s
user 0m0.020s
sys 0m0.000s
---
official-test/in3.txt

real 0m0.251s
user 0m0.248s
sys 0m0.004s
---
official-test/in4.txt

real 0m0.029s
user 0m0.024s
sys 0m0.004s
---

Ariok
ah ecco mi sembrava troppo lento prima .. hihihi :P caxxo beato te!

kingoff
complimentoni...

maynard80
Originally posted by ornati
Ho corretto uno stupido bug che rallentava... ecco i nuovi tempi:

paolo@tux ~/project/Mappe $ for i in official-test/in*; do echo $i; time ./mappe < $i > /dev/null; echo ---; done
official-test/in1.txt

real 0m0.002s
user 0m0.000s
sys 0m0.000s
---
official-test/in2.txt

real 0m0.020s
user 0m0.020s
sys 0m0.000s
---
official-test/in3.txt

real 0m0.251s
user 0m0.248s
sys 0m0.004s
---
official-test/in4.txt

real 0m0.029s
user 0m0.024s
sys 0m0.004s
---


Ciao potresti mettere il codice on line?

ornati
Originally posted by maynard80
Ciao potresti mettere il codice on line?


messo nella sezione "Filez"

:)

Simeon
Originally posted by Polsy
io l'ho intesa così, n è il valore che assegnerai a una variabile globale che determina il valore di default di ciascun punto
considerando che il valore dei punti serve solo ad assegnare un valore a una certa mappa, al momento della creazione della mappa trovi il punto in cui termina, se questo ha un valore particolare dato dalla funzione valore() assegni alla mappa quel particolare valore, altrimenti assegni alla mappa il valore della variabile globale


Questa mi sa che risponde alla domanda che stavo per fare, bella! Peccato che ancora non sappia che strutture usare... Pah.

Ariok
GRande me lo guardo anche io... com'e' andato l'orale alla fine???

ornati
Originally posted by Ariok
GRande me lo guardo anche io... com'e' andato l'orale alla fine???


28

In genere è andato bene solo che sono caduto alla domanda sull'algoritmo di programmazione dinamica per la parentesizzazione ottima nella moltiplicazione di matrici... nella fase di studio l'ho proprio saltato (e non so neanche perchè)...

Cmq il voto ha un'importanza relativa... IMO.

jonnypee
Help me!!!
Per favore qualcuno mi può aiutareee?
Devo fare Mappe 2, ho il codice mappe 1 e non so' come modificarlo per affrontare il II progetto.

Allora?

Ariok
Originally posted by ornati
28
Cmq il voto ha un'importanza relativa... IMO.


-.-

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate