Pages (2): [1] 2 » 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] Microcolture (http://www.dsy.it/forum/showthread.php?threadid=25063)
[progetto] Microcolture
Dai..facciamo le cose per bene e facciamo un thread dedicato....
in bocca al lupo a tutti
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
crepi! cmq credo bisognerà avvisare il prof che lunedì 24 l'ateneo rimarrà chiuso.. ( per la consegna dello stampato )
lfn
__________________
an arrow from the sun
ma voi ci avete capito qualcosa? mi sembra abbastanza incasinato (come al solito)
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
beh dai...ne ho letti di piu incasinati
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
a pagina 2 ci sono 2 esempi di legami possibili nella colonia, ma quello di destra in teoria non dovrebbe essere regolare secondo i punti 1,2,3:
code:
Supponiamo che la colonia contenga piu di due microorganismi. Allora: 1. L'estremale sinistro deve avere un legame con due microorganismi distinti (uno dei due puo essere l'estremale destro). 2. L'estremale destro deve avere un legame con due microorganismi distinti (uno dei due puo essere l'estremale sinistro). 3. Sia M un microorganismo qualunque non estremale e sia P(M) = (x; y). Allora, M ha un legame con due altri microorganismi Ms e Md tali che, posto P(Ms) = (xs; ys) e P(Md) = (xd; yd), deve valere: xs < x e x < xd
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
controlla bene, il punto b ha i seguenti legami: b-->c ; b--->a
a quanto ho capito quello di sinistra segue le regole ma non e' vitale mentre quello di destra segue le regole ed e' vitale perche' l'energia dei legami e' la minore possibile...
Originally posted by KiVan
controlla bene, il punto b ha i seguenti legami: b-->c ; b--->a
a quanto ho capito quello di sinistra segue le regole ma non e' vitale mentre quello di destra segue le regole ed e' vitale perche' l'energia dei legami e' la minore possibile...
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
io ho stampato il testo del progetto e i legami orizzontali si vedono benissimo... invece nella versione pdf si fanno fatica a vedere...
cmq e' come un circuito.. per cui i legami in quella di sinistra sono :
f - g - c - a - b - d - e - f (siamo tornati all'inizio)
per quello di destra sono:
f - g - a - b - c - d - e - f (inizio)
Originally posted by KiVan
io ho stampato il testo del progetto e i legami orizzontali si vedono benissimo... invece nella versione pdf si fanno fatica a vedere...
cmq e' come un circuito.. per cui i legami in quella di sinistra sono :
f - g - c - a - b - d - e - f (siamo tornati all'inizio)
per quello di destra sono:
f - g - a - b - c - d - e - f (inizio)
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
beh no....non hanno tutti lunghezza uguale....
ma che burdeeello!!!
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
beh se ogni punto è commesso ad altri 2 allora dovrebbe essere una lista di adiacenze dove ogni punto ha 2 adiacenze, no?
a meno che i legami non siano unilaterali.
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
vedo che vi siete messi giu di lena! nessuno posta idee?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
ho dei dubbi sulle liste di adiacenza perchè ogni punto può avere più vicini e bisogna scegliere le combinazioni che portano ad avere un peso minimo, quindi programmazione dinamica???
quindi te vuoi creare una lista per memorizzare i collegamenti tra i vari punti?
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
no un albero binario di ricerca che velocizza la ricerca, gli inserimenti, ecc.
Ciao,
io è tutto il giorno che ci pesto contro la testa.
Alla fine, mi son messo a cercare con google, e penso di aver scoperto perchè è così infame questo progetto.
Trovare il cammino di costo minimo è un problema del "Commesso Viaggiatore", che appartiene alla classe dei problemi NP.
Per questo problema, esistono solo alcune soluzioni, di cui quelle esatte vanno bene solo per problemi fino a circa 50 punti. dopodichè il tempo computazionale diventa proibitivo.
Ho cercato se ci sono implementazioni risolutive già pronte, da poter utilizzare, e qualcosa c'è.
Il problema è che riutilizzarle è un macello.
Sul scriversi da soli un'implementazione risolutiva del problema ci ho pensato, ma non mi sembra una cosa fattibile.
Per informazioni sul Commesso Viaggiatore:
http://it.wikipedia.org/wiki/Proble...sso_viaggiatore
Una pagina con link a software che implementano la soluzione:
http://www.or.deis.unibo.it/research_pages/tspsoft.html
Segnalo tra tutti "Concorde", che è in ANSI C e implementa varie soluzioni possibili del problema, tra cui anche quella esatta, che speravo fosse la più semplice (e quindi di poterla usare...) ma è una mazzata di roba il sorgente...
Molto carina comunque l'interfaccia per windows, dateci un occhio.
Se qualcuno trova qualche strada percorribile per fare questo progetto...
No xeno non dirmi cosi che sto gia impazzendo di mio.....
Ho provato anche io a pensare come minimizzare la colonia....domani mattina provo a guardare meglio...magari qualche algoritmi sui grafi ci puo venire incontro...
una domanda...gli script sulle strutture dati presenti su algoteam si possono usare tranquillamente?
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Beh magari con qualche aggiustamento penso di sì...il problema è capire cosa usare e come usarlo...
ma il piano esiste o non esiste?? i microorganismi li mettete dentro una struttura?? una lista? insomma serve una struttura dove la cancellazione e l'inserimento siamo facili da eseguire
Originally posted by xeon
Ciao,
io è tutto il giorno che ci pesto contro la testa.
Alla fine, mi son messo a cercare con google, e penso di aver scoperto perchè è così infame questo progetto.
Trovare il cammino di costo minimo è un problema del "Commesso Viaggiatore", che appartiene alla classe dei problemi NP.
Per questo problema, esistono solo alcune soluzioni, di cui quelle esatte vanno bene solo per problemi fino a circa 50 punti. dopodichè il tempo computazionale diventa proibitivo.
Ho cercato se ci sono implementazioni risolutive già pronte, da poter utilizzare, e qualcosa c'è.
Il problema è che riutilizzarle è un macello.
Sul scriversi da soli un'implementazione risolutiva del problema ci ho pensato, ma non mi sembra una cosa fattibile.
Per informazioni sul Commesso Viaggiatore:
http://it.wikipedia.org/wiki/Proble...sso_viaggiatore
Una pagina con link a software che implementano la soluzione:
http://www.or.deis.unibo.it/research_pages/tspsoft.html
Segnalo tra tutti "Concorde", che è in ANSI C e implementa varie soluzioni possibili del problema, tra cui anche quella esatta, che speravo fosse la più semplice (e quindi di poterla usare...) ma è una mazzata di roba il sorgente...
Molto carina comunque l'interfaccia per windows, dateci un occhio.
Se qualcuno trova qualche strada percorribile per fare questo progetto...
Originally posted by Polsy
tra l'altro è dato per scontato che non ci siano 3 punti con la stessa ascissa e che non ci siano 2 punti con l'ascissa minima/massima? perchè se una delle 2 accade è impossibile formare una colonia vitale così com'è definita nelle specifiche
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
chi mi da delle dritte/idee sulla funzione crea....non so come farla
dai un occhi ai vecchi progetti che ci sono nell area filez...
io ho creato la struttura dati e lo semplicemente inizializzata....
nn penso serva d piu
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
io non riesco a capire quanti possibili legami si possono formare tra piu punti.. nell'esempio 1 fa vedere 2 possibili configurazioni, ma ce ne sono altre?
beh si...ogni punto puo connettersi
a uno quasiasi dei punti cn x minore ed a uno con x maggiore (sempre che questi siano ancora "liberi" )
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
guarderò..hai detto che hai inizializzato la struttra dati,se non pretendo troppo mi puoi dire che tipo di struttura hai utilizzato
Originally posted by tandrea85
io non riesco a capire quanti possibili legami si possono formare tra piu punti.. nell'esempio 1 fa vedere 2 possibili configurazioni, ma ce ne sono altre?
Originally posted by maynard80
l'ultimo commento non l'ho mica capito....
Originally posted by mapenzi81
dai un occhi ai vecchi progetti che ci sono nell area filez...
io ho creato la struttura dati e lo semplicemente inizializzata....
nn penso serva d piu
oggi pomeriggio penso alle funzioni crea e inserisci..., per me il problema è come iniziare (almeno per ora)
Eh ok, ma se poi arrivi a implementare colonia() (ma anche genera() eh) e scopri che le strutture dati che hai usato non van bene?
Originally posted by Polsy
come non detto, rileggendo mi sono accorta che 2 punti non possono avere la stessa ascissa (anche se è detto un po' tra le righe...)
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Originally posted by mapenzi81
molto tra le righe...
quindi struttura dati indicizzata sulla x ?
in questo modo le chiavi sono univoche...
Originally posted by Polsy
visto che poi ti serve ricercare i punti anche per nome puoi indicizzarli sia secondo le coordinate che in base al nome
cioè ti crei una struct per le info riguardanti il singolo punto, poi fai due "meta-strutture" (liste, alberi...) una ordinata secondo le x e una lessicograficamente, ognuna delle quali ha nel singolo nodo il puntatore alla struttura con le info del punto
in questo modo hai 2 criteri di ordinamento senza duplicare informazioni
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Originally posted by mapenzi81
mmmmm
si pero nel singolo nodo avro sicuramente i puntatori della struttura
per ex negli alberi ho up, right e left....
devo duplicare i puntatori che riguardano le strutture all interno del singolo nodo...3 puntatori per l'albero (lista) che ordina per x e 3 puntatori per lo'albero (lista) per l'ordinamento lessicografo...
è corretto?
Originally posted by Polsy
la struttura punto contiene x, y, nome, link sx e dx
la struttura (lista?) che ordina per coordinate avrà 3 puntatori *prec *succ e *punto
la struttura (albero?) che ordina per nome avrà *left *right e *punto
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Originally posted by Polsy
si nel senso, avrai 3 strutture diverse
esempio:
la struttura punto contiene x, y, nome, link sx e dx
la struttura (lista?) che ordina per coordinate avrà 3 puntatori *prec *succ e *punto
la struttura (albero?) che ordina per nome avrà *left *right e *punto
oppure te ne sbatti dell'efficienza e tieni la struttura ordinata per le x e quando devi cercare un punto per nome scorri tutto l'albero (lista)
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Originally posted by maynard80
mi sa che è il contrario, l'albero per le coordinate e la lista ordinata lessicograficamente.
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
io pensavo di inserire dentro una lista le strutture punto solo che devo pensare come fare la funz colonia....
piuttosto qualcuno mi può spiegare come si calcola l'energia..si insomma io l'ho calcolata e mi son venuti 25 e 20 ma vorrei sapere altri pareri xche mi sembra di aver letto che l'energia non è collegata ai legami tra i punti ma io ho usato proprio i legami tra i punti per calcolarla....(almeno credo!)
Io penso che l'albero ordinato lessicograficamente (basta una strcmp() ) sia ottimale per ricercare nodi, mentre invece per i punti occupati sul piano sia meglio una lista, dato che permette di eseguire inserimenti e cancellazioni in tempo lineare, oltre a poter accedere agli elementi adiacenti di un nodo in tempo unitario (si ricerca prima un microorganismo per nome nell'albero, poi tramite il puntatore al suo punto sul piano occupato si recupera il punto della lista).
Qualcuno ha capito come fare colonia() ?????
sulla lista (inserimento e cancellazione) hai detto quello che avevo pensato..per quanto riguarda la colonia ho notato che sicuramente il l'energia minore è dovuta a un numero di collegamenti/cammini uguale al munero di punti(vabbe cosa ovvia)
piuttosto nessuno mi chiarisce come calcolare l'energia...
Originally posted by Gehur
sulla lista (inserimento e cancellazione) hai detto quello che avevo pensato..per quanto riguarda la colonia ho notato che sicuramente il l'energia minore è dovuta a un numero di collegamenti/cammini uguale al munero di punti(vabbe cosa ovvia)
piuttosto nessuno mi chiarisce come calcolare l'energia...
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
si ok...ma fammi un esempio con 3 o 4 punti perfavore
hai provato a calcolare l'energia nell esempio ti è venuta 24 e poi 20??
a me è venuta, ho fatto Edi fg + Ecg + Eac ecc... solo che in questo modo si è vincolati dai legami mentre nel testo mi sembra di capire che l'energia vitale dipende solo dalle coordinate e non dai legami...
Originally posted by Gehur
si ok...ma fammi un esempio con 3 o 4 punti perfavore
hai provato a calcolare l'energia nell esempio ti è venuta 24 e poi 20??
a me è venuta, ho fatto Edi fg + Ecg + Eac ecc... solo che in questo modo si è vincolati dai legami mentre nel testo mi sembra di capire che l'energia vitale dipende solo dalle coordinate e non dai legami...
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
infatti ma all'inizio della pagina numero 2 (subito dopo il punto 4) ce scritto che i legami non centrano (almeno io ho capito cosi)... vabbe per oggi basta
Originally posted by maynard80
mi sa che è il contrario, l'albero per le coordinate e la lista ordinata lessicograficamente.
Originally posted by Gehur
infatti ma all'inizio della pagina numero 2 (subito dopo il punto 4) ce scritto che i legami non centrano (almeno io ho capito cosi)... vabbe per oggi basta
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
si be può essere una giusta interpretazione, visto che per calcolare l'energia bisogna considerare i punti 2 a 2 Egf + Ecg + Eac + Eba + Ebd + Ede + Eef....
domani ci penso meglio
ma invece una hash table con chiave i nomi?? e poi una lista di adiacenze per il grafo? (che si crea ogni volta che il grafo è modificato)
una volta che abbiamo la lista di adiacenze ci applichiamo un algo del libro... no?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Originally posted by maynard80
ma invece una hash table con chiave i nomi?? e poi una lista di adiacenze per il grafo? (che si crea ogni volta che il grafo è modificato)
una volta che abbiamo la lista di adiacenze ci applichiamo un algo del libro... no?
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
essendo su Z col cavolo che sono positivi.
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
hai ragione
cmq non cambia molto..per il calcolo dell energia...
qualcuno è a buon punto cn la creazione della colonia?
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
per il piano chi parlava di liste intendeva lista di adiacenze vero?
qualcuno ha una implementazione base della lista di adiacenze?
code:
struct nodo{ int X,Y; char *nome; } struct listaNodi{ nodo *nodo; struct listaNodi *next; struct listaAdiacenze *adj; } struct listaAdiacenze{ struct listaNodi *nodo_rappresentato; struct listaAdiacenze *next; }
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
ciao a tutti...
volevo fare un piccolo appello. è quasi un anno che mi sto portando dietro quest'esame, sono proprio negato a programmare in C...non è che qualcuno sotto ricompensa può aiutarmi a farlo???
Chi ha utilizzato un albero lessicografico per i nomi dei microorganismi e una lista per le coordinate che algoritmo ha utilizzato per calcolare l'energia di una colonia?
io sto usando un albero ordinato lessicograficamente e una lista che tenga dei puntatori all'albero ordinata secondo la sola x (non possono esserci 2 nodi con la stessa x)
per la colonia vitale penso che bisogna usare un'euristica per il prob. del commesso viaggiatore, mentre per il genera il problema che ho è:
se sul segmento (0,0)-(1,2) devo generare un organismo che coordinate ha?? la y è 1 ma la x è 0,5!!! e così nella maggior parte dei casi..
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
a quanto ho capito generi l'organismo se e solo se i valori di x e y dell'organismo probabile sono interi e se non ci sono altri organismi con la stessa x
in pratica per vedere se un organismo ha le coordinate intere ti ricavi l'equazione della retta (o meglio del segmento) passante per i due organismi, ci sostituisci nell'equazione al posto di X tutti i naturali compresi tra gli estremi del segmento e se ottieni delle Y intere hai trovato un organismo probabile...
se non vengono soddisfatte queste due condizioni semplicemente non crei nulla...
Originally posted by KiVan
a quanto ho capito generi l'organismo se e solo se i valori di x e y dell'organismo probabile sono interi e se non ci sono altri organismi con la stessa x
in pratica per vedere se un organismo ha le coordinate intere ti ricavi l'equazione della retta (o meglio del segmento) passante per i due organismi, ci sostituisci nell'equazione al posto di X tutti i naturali compresi tra gli estremi del segmento e se ottieni delle Y intere hai trovato un organismo probabile...
se non vengono soddisfatte queste due condizioni semplicemente non crei nulla...
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Ciao, io invece ho la seguente domanda:
sono ammessi percorsi che si incrociano?
Mi spiego:
ho preso come riferimento i punti del primo esempio del file di input
A(1,5)
C(2,15)
E(3,8)
F(4,2)
B(5,10)
D(6,9)
Provando su carta, io trovo 2 configurazioni di punti che mi danno lo stesso valore minimo (cioe' 40)
Una e'
A -> C -> E -> B -> D -> F -> A
mentre l'altra e'
A -> C -> E -> D -> B -> F -> A
Disegnandole si nota che il segmento ED incrocia BF
E' ammesso tale percorso?
Il percorso, se non viola le 3 condizioni iniziali, è permesso.
Soluzione (penso l'unica) al problema di colonia: provare tutte le configurazioni.
Partendo da un punto, si creano tutti i cammini che non violano le 3 regole.
Quando si crea un ciclo (un nodo con due collegamenti) si calcola l'energia richiesta dal cammino, e se è la minore trovata finora si memorizza il cammino come quello di costo minore.
Originally posted by xeon
Il percorso, se non viola le 3 condizioni iniziali, è permesso.
Soluzione (penso l'unica) al problema di colonia: provare tutte le configurazioni.
Partendo da un punto, si creano tutti i cammini che non violano le 3 regole.
Quando si crea un ciclo (un nodo con due collegamenti) si calcola l'energia richiesta dal cammino, e se è la minore trovata finora si memorizza il cammino come quello di costo minore.
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Originally posted by Polsy
per l'ordine lessicografico invece credo che l'albero sia la soluzione migliore (soprattutto se lo si rende bilanciato)
Originally posted by marcomaria
stavo pensando ad una tabella hash, dovrebbe essere estremamente performante per ricerca/ins/cancellazione in base al nome che sembra il caso primario;
mentre per coordinate, che e' il caso secondario, usare una semplice lista...ma queste servono per gli algoritmi e forse e' meglio avere un albero bilaciato
ps: per la funzione genera() con il coefficiente angolare del segmento creato si potrebbe definire se si intersecano pti oppure no...boh...riflessioni da tarda sera
Originally posted by maynard80
se ti calcoli tutti i cammini il tuo sistema avrà complessità esponeniale...
io per genera ho usato l'equazione della retta y=mx+q calcolo m e q in base ai due micro (x1,y1), (x2,y2) poi uso l'equazione e se y è un intero allora posso generare un nuovo micro. avete invece suggerimenti per la colonia vitale perche come l'ho implementata io in alcuni casi non trova la soluzione migliore ad esempio come nell'ultimo C dell'esempio.
dimenticavo...........ma perchè l'output dell'ultimo stampa non è ordinato lessicograficamente???????????
dunque se invece di un algo (che per questo prob è sicuramente esponenziale) usiamo un'Euristica è normale che non sempre trovi il cammino migliore ma ci vada vicino.
http://it.wikipedia.org/wiki/Proble...sso_viaggiatore
io la penso così, o siamo veloci ma non sempre esatti o siamo a complessità esagerate, io tendo per la prima. di più non so
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
sì ok ma se non funziona sugli input del prof il progetto non è accettato...........provare per credere.................quindi come c.zzo si implementa sto colonia esisterà una soluzione anche perchè implementare un algoritmo basato sul commesso viaggiatore è un lavoro spaventoso! che palle sto progetto!
Originally posted by miles
sì ok ma se non funziona sugli input del prof il progetto non è accettato...........provare per credere.................quindi come c.zzo si implementa sto colonia esisterà una soluzione anche perchè implementare un algoritmo basato sul commesso viaggiatore è un lavoro spaventoso! che palle sto progetto!
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
concordo.....
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
invece per quanto riguarda l'output dell'ultimo censimento che non è ordinato lessico.... ho mandato una mail al prof per sentire che mi dice........domani provo a modificare il mio colonia e poi vi faccio sapere.....spero di non riprendere a imprecare visto che sono già tre anni che ho smesso!!!!!!!!!!!
ma no dai...nn cè bisogno di imprecare...qui cè proprio bisgno di bestemmiare!!!!
cmq al di la di cio.....
nell input del problema cè
m epsilon 0 -10
che nn corrisponde allo standard del problema....
qualcuno ha già chiesto ai prof come il programma deve "ragire" in questo caso?
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
penso che lì sia un errore del prof
correzioni in :
http://homes.dsi.unimi.it/~fiorenti/labalg05.html
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
miles puoi spiegarmi come si fa a trovare m e q nell'equazione della retta passante per i 2 micro (x1,y1), (x2,y2) ... la matematica non è il mio forte
qlc1 ha usato il codice di Algoteam x implementare RB tree?
avrei un dubbio...
Originally posted by Nosferatu
miles puoi spiegarmi come si fa a trovare m e q nell'equazione della retta passante per i 2 micro (x1,y1), (x2,y2) ... la matematica non è il mio forte
ragazzi sul libro "introduzione agli algoritmi" se guardate il problema alla fine del capitolo 16 noterete che e' praticamente uguale all'algoritmo del progetto...
lo chiama "problema del commesso viaggiatore bitonico e euclideo"
come suggerimento dice: "si effettui una scansione da sinistra verso destra mantenendo le possibilita' ottime per le due parti del cammino"...
qualcuno sa interpretare a modo questo suggerimento?
grazie, molto molto interessante...
una possibile soluzione: http://www.hassineletaief.com/COMP510-HW-2.htm
Qualcuno sa per caso come si fà a concatenare ad una stringa un intero
Originally posted by Nosferatu
Qualcuno sa per caso come si fà a concatenare ad una stringa un intero
code:
int x = ...; char strtemp[]=""; sprintf(strtemp, "%d",x);
dunque io ho l'albero con i nodi ordinati lessicograficamente e una lista che invece li dovrebbe ordinare in base alla x... ma come faccio ad applicare un algo di ordinamento (rand-quicksort) ad una lista?devo scorrere tutta la lista ricavare l'array poi cancelare la lista ordinare l'array e poi riempirlo??? un delirio, ma se invece inserisco ordinatamente (invece di inserire in testa) ogni volta nel caso peggiore mi scorro la lista... cosa consigliate?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
anke io ho un problema simile....
ogni volta che inserisco un elemento lo posiziono nella sua posizione scorrento la lista....
molto inserion sort...
se usi la lista ci impieghi n+nlg2+n ma utilizzi piu memoria....
io sto cercando una 3 soluzione....tipo un quicksort o mergesort sulla lista direttamente giocando un po con i puntatori...
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
mapenzi se trovi la soluzione dammi una dritta!
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
se la trovo...volentieri....
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Dopo aver calcolato m e q come faccio a verificare che la y risultante sia un intero (nel metodo genera)?
boh io ho finito.. con l'input del prof ci impiega 0.063sec.. direi abbastanza buono anke se nn ottimo..
ho usato solo 1 lista ordinata lessicograficalmente e un array di appoggio per calcolare il cammino con energia minima..
Originally posted by tandrea85
boh io ho finito.. con l'input del prof ci impiega 0.063sec.. direi abbastanza buono anke se nn ottimo..
ho usato solo 1 lista ordinata lessicograficalmente e un array di appoggio per calcolare il cammino con energia minima..
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Originally posted by maynard80
puoi delucidarci su come hai fatto?
....qualche delucidazione su come si calcola il tempo di esecuzione??
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Originally posted by mapenzi81
....qualche delucidazione su come si calcola il tempo di esecuzione??
code:
clock_t start,end; double tempo; start=clock();
code:
end=clock(); tempo=((double)(end-start))/CLOCKS_PER_SEC; printf("execution_time == %f seconds\n", tempo);
grazie
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Tempo di esecuzione
Ragazzi ho provato con 20 punti e ci mette circa 5 minuti e mezzo. Con l'esempio del prof anche a me è immediato. Voi con 20 punti quanto ci mettete??
Grazie.
Ciao.
Sasaciric
un pokino di meno...
ragazzi ci postiamo alcuni test su grossi numeri e li compariamo cosi evitiamo di controllarli a mano?
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Cosa intendi per un pochino meno? La metà o più o meno lo stesso tempo??
complessità schifosa evidentemente...calcolare tutte le possibili combinazioni non è certo la buono, anzi è la soluzione peggiore
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
il mio con 20 punti l'ho fatto partire 10min fa e sta ancora andando
mi ha allocato 2gb di memoria e il processo per ora ne occupa 20mb e sta salendo!!
speriamo che testi il programma con al max 10 - 12 punti se no addio
quelli che ci hanno messo 5min o meno che algoritmo avete usato?
provate con questo input
code:
c i -9 2 a i -8 2 b i -7 2 c i -6 2 d i -5 2 e i -4 2 f i -3 2 g i -2 2 h i -1 2 i i -9 -2 l i -8 -2 m i -7 -2 n i -6 -2 o i -5 -2 p i -4 -2 q i -3 -2 r i -2 -2 s i -1 -2 t i -10 1 u i 0 0 v s C
Caro maynard80 evidentemente l'unico modo per risolvere il problema del commesso viaggiatore è provare tutte le configurazioni possibili (che rispettino i vincoli del progetto e quindi sono meno rispetto a n! del commesso viaggiatore). I metodi euristici non portano mai alla soluzioni ottimale a meno di grandi quantità di punti. Realisticamente i test da fare non sono su centinaia di punti ma su 6/10 come negli esempi del prof.
Originally posted by sasaciric
Caro maynard80 evidentemente l'unico modo per risolvere il problema del commesso viaggiatore è provare tutte le configurazioni possibili (che rispettino i vincoli del progetto e quindi sono meno rispetto a n! del commesso viaggiatore). I metodi euristici non portano mai alla soluzioni ottimale a meno di grandi quantità di punti. Realisticamente i test da fare non sono su centinaia di punti ma su 6/10 come negli esempi del prof.
il trucco sta nel valutare il percorso se è valido non alla fine, ma durante la sua creazione. Se sto aggiungendo un punto che viola le condizioni, non costruisco tutto il cammino per vedere alla fine se è valido o meno ma mi blocco prima. così ne valuto molti meno e ottimizzo il tutto!
inoltre, anche valutando alla fine se è valido o meno, non sarebbe n! ma (n-1)! perchè quando tu scegli di partire da un elemento, non devi simulare di partire da tutti gli altri elementi perchè creeresti percorsi uguali. Es a 1,1 b 2,2 c 3,3
il percorso 1,1 2,2 3,3 1,1 è uguale a 2,2 3,3 1,1 2,2 quindi non serve testarlo 2 volte
Originally posted by sasaciric
il trucco sta nel valutare il percorso se è valido non alla fine, ma durante la sua creazione. Se sto aggiungendo un punto che viola le condizioni, non costruisco tutto il cammino per vedere alla fine se è valido o meno ma mi blocco prima. così ne valuto molti meno e ottimizzo il tutto!
inoltre, anche valutando alla fine se è valido o meno, non sarebbe n! ma (n-1)! perchè quando tu scegli di partire da un elemento, non devi simulare di partire da tutti gli altri elementi perchè creeresti percorsi uguali. Es a 1,1 b 2,2 c 3,3
il percorso 1,1 2,2 3,3 1,1 è uguale a 2,2 3,3 1,1 2,2 quindi non serve testarlo 2 volte
sul punto 2 potresti ottimizzare ( invece di valutare se è giusto alla fine) : quando aggiungi un nuovo elemento dovresti controllare se viola le regole, così non stai a calcolartelo tutto (anche non valido) per scartarlo alla fine
pensa se hai 10 punti e il terzo che hai aggiunto al cammino viola le regole, eviti di calcolarti tutte le permutazioni dei sette punti restanti
Originally posted by sasaciric
l'unico modo per risolvere il problema del commesso viaggiatore è provare tutte le configurazioni possibili
Originally posted by tandrea85
il mio con 20 punti l'ho fatto partire 10min fa e sta ancora andando
mi ha allocato 2gb di memoria e il processo per ora ne occupa 20mb e sta salendo!!
speriamo che testi il programma con al max 10 - 12 punti se no addio
quelli che ci hanno messo 5min o meno che algoritmo avete usato?
provate con questo input
code:
c i -9 2 a i -8 2 b i -7 2 c i -6 2 d i -5 2 e i -4 2 f i -3 2 g i -2 2 h i -1 2 i i -9 -2 l i -8 -2 m i -7 -2 n i -6 -2 o i -5 -2 p i -4 -2 q i -3 -2 r i -2 -2 s i -1 -2 t i -10 1 u i 0 0 v s C
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
anche la relazione è da consegnare domenica?
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Originally posted by mapenzi81
il mio ci mette 0.015 ma a volta sbaglia....
com'è il vostro output?
24:
a,(-9,2) <- u,(-10,1) -> v,(0,0)
u,(-10,1) <- a,(-9,2) -> b,(-8,2)
a,(-9,2) <- b,(-8,2) -> c,(-7,2)
b,(-8,2) <- c,(-7,2) -> d,(-6,2)
c,(-7,2) <- d,(-6,2) -> e,(-5,2)
d,(-6,2) <- e,(-5,2) -> f,(-4,2)
e,(-5,2) <- f,(-4,2) -> g,(-3,2)
f,(-4,2) <- g,(-3,2) -> h,(-2,2)
g,(-3,2) <- h,(-2,2) -> i,(-1,2)
h,(-2,2) <- i,(-1,2) -> v,(0,0)
u,(-10,1) <- v,(0,0) -> i,(-1,2)
Suggerimenti GENERA()
Ciao a tutti!
Sono riuscito a completare la funz. colonia() senza usare tecniche di grafi o TSP particolari, ho usato la geometria e una funz. del libro del Sedgewick Algoritmi in C che parla dei cammini chiusi semplici.
Il mio problema e' che i tempi di calcolo sono decenti, adesso non so se lo scopo del progetto fosse stato di usare qualche tecnica di grafi per la colonia...? o paura che la soluz. non sia quella che si aspetta il prof.
Di strutture ho usato 2 RB tree per memorizzare la Colonia(con chiave arctg ..trovate tutto sul libro del sedgewik) e i microorganismi (con chiave ascissa) e un BST per i microorganismo ordinati per nome
Per la funz. genera() devo cercare ancora un metodo, qlcuno l'ha gia' fatto e gentilmente puo darmi suggerimenti..?
In bocca al lupo a tutti..
karlost se guardi qualche post insietro trovi tutto....
cmq
calcoli la funzione della retta e per ogni x compresa tra i due punti guardi se la y corrispondente è un intero...
è normale che printf sotto linux aggiunga un carattere ^M ??
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Grazie 1000^n ....
^M a volte dipende dal terminale che usi, alcune shell tipo ksh o bash quando non sono in grado d'interpretare un tasto o una seq. di tasti ti restituiscono dei caratteri stranni.
O anche quando usi editor di testo non standard e poi tenti di aprire il file con un editor standard tipo VI alcuni caratteri che non è in grado d'interpretare te li rappresenta con ^M.
nessuno di voi ha usato l'algoritmo Approx-TSP-Tour che viene spiegato in uno dei paragrafi del capitolo ALGORITMI APPROSSIMATI sul nostro libro?
io stavo implementando quello, poi leggendo qui mi sono venuti forti dubbi.
__________________
"basta un paio de scarpe nove, e poi gira' tutto er munno"
>> www.javalab.it - www.jobcrawler.it - www.aboutdebian.com/install3.htm<<
Linux user #354593
no...anche io ho optato per una soluzione geometrica...
risolto il ^M
modificando la funzione read_word ora funziona...
la cosa simpatica è che sotto Win.....
sto incominciando a capire il perchè sotto Win le applicazioni sono alquanto instabili...
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
panico, scusate!
fino ad ora ho provato sempre le funzioni senza l'input da tastiera, ho finito ,ma proprio adessoc he devo prendere input da tastiera ho un problema!
la mia funzione
code:
searchtree *insert(searchtree *p, char *nome, int x, int y)
code:
char *nome="pincopallino"
code:
scanf("%d,%d,%s",&x,&y,&nome)
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
qualcuno ha voglia di fare un confronto su un test su 500 - 600 punti?
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Originally posted by mapenzi81
qualcuno ha voglia di fare un confronto su un test su 500 - 600 punti?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
ooook
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Originally posted by mapenzi81
qualcuno ha voglia di fare un confronto su un test su 500 - 600 punti?
azzzzzzzzzzzzzzzz
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Originally posted by mapenzi81
qualcuno ha voglia di fare un confronto su un test su 500 - 600 punti?
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
ragazzi ma nella mail dobbiamo consegnare solo il codice giusto? la relazione entro domani in busta, vero?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
codice sorgente E relazione...in più gli devi stampare la relazione e portargliela entro domani
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
domani il dipartimento è chiuso...la parte cartacea la si porta il 26
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Consegna entro domenica 23 aprile (compresa)
Poiché il giorno 24 aprile il dipartimento è chiuso, è possibile consegnare la documentazione cartacea il giorno 26 aprile.
code:
1. Inviare il codice del progetto per posta elettronica all'indirizzo fiorenti@dsi.unimi.it. La e-mail deve avere come subject \Progetto di Cognome Nome", il le sorgente deve essere allegato alla e-mail e deve chiamarsi cognome.c. Ad esempio, lo studente Mario Bianchi deve inviare una e-mail avente cme subject Progetto di Bianchi Mario e allegare il le bianchi.c contenente il codice. Nella e-mail e possibile segnalare le proprie preferenze per l'orale, come specicato sotto. Nel caso il progetto sia suddiviso in piu le, va allegato un le cognome.zip (oppure cognome.tar), contenente i le sorgente. In questo caso, i le devono rispettate le usuali convenzioni (ad esempio, i le con susso .h devono contenere solo denizioni, i le con susso .c non vanno inclusi in altri le). 2. Consegnare una copia stampata del codice e una sintetica relazione del progetto svolto. La relazione deve illustrare e motivare le strutture dati e i principali algoritmi utilizzati, analizzandone anche la complessita (il commento alle singole funzioni del programma va fatto all'interno del codice del programma). Tale materiale va consegnata al dr. Fiorentini entro luned 24 aprile (compreso), lasciandolo eventualmente nella sua casella postale presso il dipartimento in via Comelico (di anco alla portineria). La relazione e il codice devono riportare il proprio nome, cognome e matricola.
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
le consegne di fiorentini e aguzzoli sono diverse, aguzzoli dice espressamente che vuole per mail anche la relazione, il tutto in un unico file .zip che deve avere la denominazione cognome.zip
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
Quindi si poteva risolvere in O(n^2)? Siete sicuri che dia sempre la soluzione migliore l'algoritmo bitonico euclideo?
io ho fatto una cappellata...me ne sono accorto ora....
funziona quasi sempre in n^2 o anche meno....
ma nn è attendibile...aimè
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
valutazione progetto
Ank'io ho lo stesso problema, mi sono accorto adesso che con alcuni input il mio prog. va in segmentation fault... azzz...
Cmq qualcuno sà il peso che il prog. ha nel voto finale.. ?
2 - 4 punti....ho letto su qualche post vecchio...
mi domando se ci ammette all'orale anche con il prog che nn funziona a dovere
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
ma la relazione scritta dove bisogna dargliela? in via comelico nelle cassette della posta all'ingresso?
Originally posted by xeon
Quindi si poteva risolvere in O(n^2)? Siete sicuri che dia sempre la soluzione migliore l'algoritmo bitonico euclideo?
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
ma mi dite dove si trova questa soluzione sul libro??
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
non c'è la soluzione, il libro dà come come compito questo algoritmo e indica anche un piccolo suggerimento...cmq è verso la fine del capitolo sulla programmazione dinamica
edit: ho postato nell'area filez il mio progetto, lì se vuoi c'è una possibile implementazione secondo i suggerimenti del libro e altre pillole trovate qua e là in rete
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
darkAntAreS sei un grande, il tuo progetto è fatto davvero bene, l'ho provato con un input di circa 500, il tuo ci mette 5 secondi, il mio 120!
ma tu sei con fiorentini o goldrake?
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
sono con goldwurm...cmq 120 secondi al posto che 5 non cambia molto, almeno per quanto riguarda Aguzzoli conta più che altro "l'originalità" del progetto e se capisce che non hai messo lì il primo algoritmo che ti è venuto in mente ma ci hai pensato...
per Fiorentini/Torelli non so, ma nn penso cambi molto
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
Originally posted by darkAntAreS
sono con goldwurm...cmq 120 secondi al posto che 5 non cambia molto, almeno per quanto riguarda Aguzzoli conta più che altro "l'originalità" del progetto e se capisce che non hai messo lì il primo algoritmo che ti è venuto in mente ma ci hai pensato...
per Fiorentini/Torelli non so, ma nn penso cambi molto
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Ragazzi (Dott.House), qualcuno può postare nell'area filez l'input da 500 o giù di lì .. tanto per vedere come viaggia il mio? l'ho testato solo con pochi organismi e anche se ormai l'ho gia consegnato volevo avere un'idea del tempo di esecuzione ...
ragazzi, in teoria dopodomani iniziano gli orali, ma non si sa ancora nulla, oggi abbiamo consegnato le relazioni, ma non le ha ancora prese, e il track di lettura della mail contenente il codice non mi è arrivata (quindi in teoria non l'ha letta)
boh!
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
doppio post
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
novità? ho mandato un email anke al torelli per sapere se posso sostenere l'appello perke mi sono dimenticato di registrarmi sul sifa, ma nessuna risposta manco da lui..
bene a me Fiorentini ha risposto:
code:
Non capisco perche' abbia scelto di usare un algoritmo approssimato! Prima di fare una tale scelta, non in linea con quanto richiesto, avrebbe dovuto discuterne con me. Il progetto non e' accettato e la invito a passare dutante l'orario di ricevimento per discuterne saluti
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Tesst del progetto
Ho ricevuto una mail di Fiorentini comunicandomi che non riesce a testare il mio prog. perchè gli dà segmetation fault? ma il prog. prima di mandarlo l'ho testato con diversi input e non succedeva qto.
QUalcuno ha idea se per caso può dipendere dalla versione del gcc o del sistemaoperativo sul quale sta facendo i test.
Il mio prog. l'ho compilato con gcc4 e ho usato Ubuntu su un p4 32bit..
Che parto sto esame...
Originally posted by maynard80
bene a me Fiorentini ha risposto:
code:
Non capisco perche' abbia scelto di usare un algoritmo approssimato! Prima di fare una tale scelta, non in linea con quanto richiesto, avrebbe dovuto discuterne con me. Il progetto non e' accettato e la invito a passare dutante l'orario di ricevimento per discuterne saluti
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
il problema non è quello del commesso viaggiatore, è "simile" a quello del commesso viaggiatore...quello del progetto si può calcolare in tempo O(n^2), mentre quello del commesso viaggiatore è NP-difficile..
ora non so che algoritmo hai utilizzato, ma utilizzando una euristica produci un risultato che non sempre è ottimale, quindi in generale non trovi la soluzione richiesta...
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
Originally posted by darkAntAreS
il problema non è quello del commesso viaggiatore, è "simile" a quello del commesso viaggiatore...quello del progetto si può calcolare in tempo O(n^2), mentre quello del commesso viaggiatore è NP-difficile..
ora non so che algoritmo hai utilizzato, ma utilizzando una euristica produci un risultato che non sempre è ottimale, quindi in generale non trovi la soluzione richiesta...
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
Originally posted by maynard80
PS: la mia euristica trovava la soluzione giusta ed in n^2. [/B]
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
Originally posted by darkAntAreS
non lo metto in dubbio, ma solo per il fatto che è un'euristica, in generale non produce una soluzione ottima...magari l'ha prodotta per ogni prova che hai fatto e la produrrà per tante altre prove, ma ce ne saranno sempre tante altre per cui non potrà farlo
per la soluzione, non ce n'è una sola...se vuoi io ne ho implementata una, il codice è nell'area filez e insieme trovi la relazione con una breve spiegazione...quella è però UNA possibile implementazione, a me il prof. ne ha fatta vedere un'altra con un codice un po' più pulito, sempre con tempo O(n^2) (che però non ho ben capito, mi sono limitato ad annuire con una faccia convinta )...al max se vuoi chiarimenti sul mio codice posso darteli, per il resto posso solo ipotizzare
__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !
nel senso che giovedì 27 sono andato lì per alcuni chiarimenti e tanto che c'ero abbiamo parlato del progetto e mi ha mostrato una soluzione partendo dalla mia e ripulendo il codice
__________________
"Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul"
Orale torelli...
Curiosita chiede anche gli algoritmi sui grafi e anche l unione di insieme disgiunti?
__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.
Dave Edison
Originally posted by mapenzi81
Orale torelli...
Curiosita chiede anche gli algoritmi sui grafi e anche l unione di insieme disgiunti?
hahahah
Originally posted by maynard80
ancora non capisco perchè mi ha annullato il progetto, ho usato un approccio simile all'euristica costruttiva per il commesso viaggiatore denominata "nearest neighbor"
http://it.wikipedia.org/wiki/Proble...sso_viaggiatore
e funziona tranquillamente.
il prof dice che non in linea con quanto richiesto, ma che vuol dire??
All times are GMT. The time now is 00:47. | Pages (2): [1] 2 » Show all 152 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.