.dsy:it. Pages (13): « First ... « 6 7 8 9 [10] 11 12 13 »
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 "DIE HARD" (http://www.dsy.it/forum/showthread.php?threadid=39661)


Posted by ste182 on 24-01-2010 21:35:

cmq generare tutte le possibili combinazioni e salvarle in una struttura è l'unico modo(o almeno credo).. al massimo si può ottimizzare la parte in cui fai i calcoli per generare tutte le combinazioni

__________________
Live Fast, Die Fun


Posted by Utopia on 24-01-2010 21:39:

Ragazzi come avete risolto il problema della ricerca di un configurazione nel grafo?

esempio: come faccio a sapere che strada prendere per raggiunge la configurazione 3[3],4[5] dalla radice ? cosi a caso, esploro tutte le possibili... o avete messo delle chiavi ?


Posted by francescoo on 25-01-2010 07:25:

ciao,
ho un paio di domandine:
1)per deallocare un matrice ad esempio la matrice **mat,basta fare free(mat)?o la devo mettere dentro un for?

2)io ho la mia lista v,per scorrerla e pero tenere cmq un riferimento alla testa della lista uso un altro puntatore di tipo lista che chiamo l1, e quindi pongo l1=v, ora questo l1 all'inizio devo fare l1=malloc....?penso di no..perchè va a puntare la lista gia creata e quindi non gli devo allocare spazio giusto?

3) per chi ha gia fatto l'orale con torelli..cosa chiede all'orale?

grazie mille


Posted by palaz on 25-01-2010 08:19:

allora per la domanda 2 non devi allocare l1 perche punta a una porzione di memoria gia esistente... quindi hai ragione :D
per la prima domanda... se è un doppio puntatore prima devi deallocare tutti i nodi puntati poi puoi deallocare mat;
infine.. all'orale torellli fa tre domande.. una sulla prima parte, cioè algoritmi di ordinamento, una sulla seconda ad es tabelle hash e una sulla parte finale, a me è capitata la domanda sulla differenza tra algoritmi greedy e programmazione dinamica.... detto cosi sembra una cazzata ma vuole sapere le cose molto nel particolare, anche se ti da una mano e ti fa ragionare


Posted by francescoo on 25-01-2010 13:33:

@palaz:
ma quindi te la teoria dove l'hai studiata?sulla dispensa di algoritmi o su altre fonti?
e lui vuole sapere anche i tempi di calcolo p cmq le cose nel specifico?
perchè io per ora sto guardando quello che lui ha scritto sul suo sito e studiando dalla dispensa..
pero non sapevo(anche perchè è molto difficile) se imparare proprio a memoria tutti i logaritmi,tempi di calcolo ecc..


Posted by palaz on 25-01-2010 13:37:

beh studi dal libro anche...
tipo: la mia prima domanda è stata: parlami del merge sort... sono partito con lo spiegare come è l'algoritmo...e lui appena ha visto che lo sapevo mi ha fermato e ha iniziato a chiedermi tempi... se ci sono problemi con la memoria.. di quanto cresce.. se è asintotico e perche..
insomma cose di questo tipo...


Posted by plafo on 25-01-2010 15:48:

Originally posted by palaz
beh studi dal libro anche...
tipo: la mia prima domanda è stata: parlami del merge sort... sono partito con lo spiegare come è l'algoritmo...e lui appena ha visto che lo sapevo mi ha fermato e ha iniziato a chiedermi tempi... se ci sono problemi con la memoria.. di quanto cresce.. se è asintotico e perche..
insomma cose di questo tipo...



quanto tempo ci vuole, secondo te, per studiare in modo decente la teoria?


Posted by palaz on 25-01-2010 20:35:

eh tanto.. io me la sono vista prima e dopo il progetto e in ogni caso ho fatto un orale di merda!


Posted by francescoo on 26-01-2010 07:22:

@palaz:
quindi se ho capito bene per deallocare la matrice:
ad esempio ho una matrice di 2 righe e n colonne io l'ho allocata cosi:
matr = malloc ( 2 * sizeof ( int * ) );
for ( r = 0; r < 2; r++ )
{
*(m+r) = malloc ( n * sizeof ( int ) );
}

quindi per deallocarla:

if(mat!=NULL)
{
for ( r = 0; r < 2; r++ )
{
free(mat+r);
}
free(mat);
}

giusto?e un modo per verificare se l'ho deallocata?


Posted by palaz on 26-01-2010 08:25:

penso sia giusto... per verificare .. no so.. prova a stampare dopo che l'hai allocata i valori che conteneva prima della deallocazione...


Posted by ste182 on 26-01-2010 23:55:

Originally posted by francescoo
@palaz:
quindi se ho capito bene per deallocare la matrice:
ad esempio ho una matrice di 2 righe e n colonne io l'ho allocata cosi:
matr = malloc ( 2 * sizeof ( int * ) );
for ( r = 0; r < 2; r++ )
{
*(m+r) = malloc ( n * sizeof ( int ) );
}

quindi per deallocarla:

if(mat!=NULL)
{
for ( r = 0; r < 2; r++ )
{
free(mat+r);
}
free(mat);
}

giusto?e un modo per verificare se l'ho deallocata?

si è giusto; prima allochi un vettore per le righe, poi per ogni riga allochi un vettore per la colonna.
la deallocazione è giusta.. solo una cosa: perchè usi la notazione con i cast? non che sia errato ma trattandosi di una matrice, quindi accessibile tramite indici, non ti viene più comodo usare una cosa del tipo:
//allocazione
matrice=(int**)malloc(2*sizeof(int*));
for(i=0;i<2;i++)
matrice[i] = (int*)malloc(n*sizeof(int));

//deallocazione
for(i=0;i<2:i++)
free(matrice[i]);
free(matrice)

ovviamente per accedere agli elementi userai matrice[i][j].
ps: se vuoi ottimizzare un minimo il codice evita il for se hai solo 2 righe.. puoi fare direttamente:
matrice[0]= malloc....
matrice[1]= malloc..
in questo modo eviti l'inizializzazione del contatore, il test su di esso e il suo incremento
:cool:

__________________
Live Fast, Die Fun


Posted by willyrs on 27-01-2010 14:09:

Ragazzi, ma come l'avete fatto mosse(k)? Io ho fatto un grafo orientato e non pesato, e sia Prim che Dijkstra richiedono il peso...

__________________
Nel mondo esistono 10 tipi di persone: quelle che conoscono il linguaggio binario e quelle che non lo conoscono


Posted by francescoo on 27-01-2010 17:33:

@ste182:
mi sta venendo un dubbio:

io ho fatto piu o meno come avevi detti tu alla pagina 6..intendo per trovare tutte le possibili configurazioni..
il mio grafo pero alla fine è una lista contenente tutte le configurazioni, ed è come se avessi fatto una visita per ampiezza.
pero non sono liste di adiacenza è un unica lista che ha tutte le configurazioni quindi ad es se io parto da 0[3]0[5] la mia lista sarà composta cosi:
0[3]0[5] ->3[3]0[5]->0[3]5[5]->3[3]5[5]->0[3]3[5]->...
in ogni campo della lista oltre alla matrice con la configurazione relative ci sono due campi int num e int padre quindi poi cosi riesco a trovare secondo le varie richieste anche di stampare il cammino ecc..
funziona tutto perfettamente..
pero secondo te è accettabile?questo puo definirsi come grafo?


Posted by ste182 on 27-01-2010 21:17:

Originally posted by francescoo
@ste182:
mi sta venendo un dubbio:

io ho fatto piu o meno come avevi detti tu alla pagina 6..intendo per trovare tutte le possibili configurazioni..
il mio grafo pero alla fine è una lista contenente tutte le configurazioni, ed è come se avessi fatto una visita per ampiezza.
pero non sono liste di adiacenza è un unica lista che ha tutte le configurazioni quindi ad es se io parto da 0[3]0[5] la mia lista sarà composta cosi:
0[3]0[5] ->3[3]0[5]->0[3]5[5]->3[3]5[5]->0[3]3[5]->...
in ogni campo della lista oltre alla matrice con la configurazione relative ci sono due campi int num e int padre quindi poi cosi riesco a trovare secondo le varie richieste anche di stampare il cammino ecc..
funziona tutto perfettamente..
pero secondo te è accettabile?questo puo definirsi come grafo?

sinceramente non so dirti se si può considerare un grafo in quel modo.. però credo di no perchè un grafo per definizione è un insieme di vertici collegati fra loro con archi.
mettendo tutto su un unica lista è un pò come se dicessi che il primo nodo è adiacente direttamente a tutti gli altri.. però potrebbe anche andare bene eh.. non saprei..

__________________
Live Fast, Die Fun


Posted by ste182 on 27-01-2010 21:19:

Originally posted by willyrs
Ragazzi, ma come l'avete fatto mosse(k)? Io ho fatto un grafo orientato e non pesato, e sia Prim che Dijkstra richiedono il peso...

orientato? quindi duplichi i nodi contenenti configurazioni uguali?
in quanto ai pesi non servono, ogni arco ha peso 1, quindi il cammino minimo si trova con una visita in ampiezza che ti genera il sottografo dei cammini

__________________
Live Fast, Die Fun


All times are GMT. The time now is 12:04. Pages (13): « First ... « 6 7 8 9 [10] 11 12 13 »
Show all 185 posts from this thread on one page

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