Dsy Network www | forum | my | didattica | howto | wiki | el goog | stats | blog | dona | rappresentanti
Homepage
 Register   Calendar   Members  Faq   Search  Logout 
.dsy:it. : Powered by vBulletin version 2.3.1 .dsy:it. > Didattica > Corsi A - F > Algoritmi e strutture dati > progetto Hitori
Pages (8): « First ... « 2 3 4 5 [6] 7 8 »   Last Thread   Next Thread
Author
Thread    Expand all | Contract all    Post New Thread    Post A Reply
Collapse
ivanbag
.amico.

User info:
Registered: Jul 2005
Posts: 29 (0.00 al dì)
Location:
Corso: Informatica
Anno: 1123571219315081
Time Online: 12:25:34 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Immaginavo che BI e NI fossero da applicare alle celle non ancora controllate, mi mancano solo loro e poi ho implementato tutto. Devo solo farlo funzionare... ahahaha

Io T l'ho implementata più o meno così:
se mat[0][0].num == mat[2][0].num && mat[0][1].num == mat[3][1].num ... ovviamente questo è solo uno dei tanti if (all'interno dei for) del trapezio, per esempio devo controllare che che gli indici durante i for di controllo non escano dalla matrice, oppure "il senso" del trapezio, perché, per come l'ho interpretato io, può essere "girato" in modi diversi... E adesso che ci penso non ho provato a farlo con i due vicini in basso ed i diagonali in alto O_O , corro ssssubito ad aggiungere quella parte!

annerire e non_annerire io le ho implementate per comodità, ma effettivamente possono non essere obbligatorie. Le ho trovate comode perché le implementi una volta sola e le riusi spesso, in più al loro interno è facile inserire le chiamate alle euristiche che applichi solo quando annerisci o non annerisci una cella... In questo modo con una funzione le chiami tutte ;)

Originally posted by garfa84

Quello che mi chiedo come faccio a memorizzare la supposizione?
e per la verifica che il 2 non rimanga chiuso bisogna applicare la regola 3 non close_edge, perchè nel caso specifico vabe ma in altri casi potrebbe non andare bene!!!quindi come faccio a verificarlo???


Me lo chiedo anch'io... Oggi ragiono per bene alla terza regola, vediamo se ne cavo fuori qualcosa...

Ivan

__________________
Tecum sunt, quae fugis... Seneca

Last edited by ivanbag on 09-07-2009 at 08:26

09-07-2009 08:14
Click Here to See the Profile for ivanbag Click here to Send ivanbag a Private Message Find more posts by ivanbag Add ivanbag to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Lallac10
.primate.

User info:
Registered: Mar 2006
Posts: 73 (0.01 al dì)
Location: Rho(mi)
Corso: Informatica
Anno: 3
Time Online: 18:55:37 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

in pratica annerisci e non_annerire richiamano rispettivamente:
NV A e non_annerire, mentre non annerire richiama SB e annerisci.
Il mio dubbio resta su come gli passo le coordinate su cui eseguire annerisci e non annerire quando non è la prima chiamata? Oppure devo inserire nelle euristiche le chiamate alle due funzioni ricorsive?
a me mancano queste due e NI BI poi ovviamente farlo funzionare

Last edited by Lallac10 on 09-07-2009 at 09:09

09-07-2009 09:05
Click Here to See the Profile for Lallac10 Click here to Send Lallac10 a Private Message Find more posts by Lallac10 Add Lallac10 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
ivanbag
.amico.

User info:
Registered: Jul 2005
Posts: 29 (0.00 al dì)
Location:
Corso: Informatica
Anno: 1123571219315081
Time Online: 12:25:34 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Cosa intendi per "passare le coordinate"?
Io annerisci l'ho strutturata così:

code:
void annerire( matrice m[M][M], int x, int y ) { if( ... ) { ... nv( m, x, y ); a( m ); } else ... }

Dove x e y sono riga e colonna della cella da annerire...
nv prende gli stessi x e y e fa i suoi controlli all'interno, mentre a non avevo voglia di sbattermi a farla per singolo angolo, quindi ogni volta che annerisco qualcosa me li controlla tutti e 4, anche perché ho notato che se le euristiche funzionano è facile che per reazione a catena si arrivi agli angoli, quindi è meglio controllarli spesso...

Spero di aver capito la domanda ed esserti stato utile :)
Ciau
Ivan

__________________
Tecum sunt, quae fugis... Seneca

09-07-2009 09:40
Click Here to See the Profile for ivanbag Click here to Send ivanbag a Private Message Find more posts by ivanbag Add ivanbag to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Lallac10
.primate.

User info:
Registered: Mar 2006
Posts: 73 (0.01 al dì)
Location: Rho(mi)
Corso: Informatica
Anno: 3
Time Online: 18:55:37 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

si ok ora mi sorge un'altra domanda....la chiamata ricorsiva a annerisci o non annerisci avrà dei parametri che saranno la matrice e le due coordinate o x e y come le hai chiamate tu su cui eseguire le euristiche.... per quello che mi chiedevo se le chiamate ricorsive devono essere all'interno delle euristiche....è questo il mio problema! o almeno uno dei tanti:)

Last edited by Lallac10 on 09-07-2009 at 09:47

09-07-2009 09:44
Click Here to See the Profile for Lallac10 Click here to Send Lallac10 a Private Message Find more posts by Lallac10 Add Lallac10 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
ivanbag
.amico.

User info:
Registered: Jul 2005
Posts: 29 (0.00 al dì)
Location:
Corso: Informatica
Anno: 1123571219315081
Time Online: 12:25:34 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Ok...

Allora, ti porto il mio esempio per CS. Al suo interno, una volta eseguiti i controlli, passo ad annerire la matrice e le coordinate della cella. Da annerire chiamo:

- NV che a sua volta chiama non_annerire passando matrice e cella e con gli stessi parametri chiama anche SB. SB a sua volta chiama annerire. Qui ho avuto il primo problema, perché come noterai rischia di continuare il giro all'inifinito, per fare questo ho fatto in modo che nv controlli con un if le celle vicine, se sono già state "toccate" non fa partire SB, al contrario, se non sono state "toccate" SB parte. Ovvio che al primo giro parte e al secondo no.
- A che, come dicevo prima, controlla tutti gli angoli, quindi gli passo solo la matrice. Al suo interno richiama solo non_annerire. Non ho ancora deciso se far partire SB anche all'interno di A, questo mi creerebbe qualche casino con l'impostazione che ho dato.

E' importante mettere uno "stop" forzato alle continua chiamate o ti perdi in un bel loop... Ieri mattina ho cristato parecchio perché non capivo come fare... Spero di essere stato chiaro, è abbastanza un casino a parole, parla meglio il codice, ma non posso metterlo :P

Ciau
Ivan

EDIT: per BI e NV mi è venuto in mente che posso sfruttare l'impostazione che ho dato. All'interno della matrice di strutture che ho creato ho un int che contiene il numero e ho un int che fa da "tag" per le celle già controllate. Quelle ancora non controllate hanno un determinato "tag". Una volta terminate le euristiche è facile scorrere la matrice alla ricerca delle celle non visitate. Da qui si può scegliere se lavorarci direttamente oppure crearsi una struttura esterna ed applicare BI e NV ed eventuali altri controlli...

__________________
Tecum sunt, quae fugis... Seneca

Last edited by ivanbag on 09-07-2009 at 10:50

09-07-2009 10:46
Click Here to See the Profile for ivanbag Click here to Send ivanbag a Private Message Find more posts by ivanbag Add ivanbag to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Lallac10
.primate.

User info:
Registered: Mar 2006
Posts: 73 (0.01 al dì)
Location: Rho(mi)
Corso: Informatica
Anno: 3
Time Online: 18:55:37 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

ok quindi tu per ogni euristica richiami rispettivamente o annerire o non annerire giusto? non voglio vedere il tuo codice ma cercare di capirne un pò di più:)

09-07-2009 10:51
Click Here to See the Profile for Lallac10 Click here to Send Lallac10 a Private Message Find more posts by Lallac10 Add Lallac10 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
ivanbag
.amico.

User info:
Registered: Jul 2005
Posts: 29 (0.00 al dì)
Location:
Corso: Informatica
Anno: 1123571219315081
Time Online: 12:25:34 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Originally posted by Lallac10
ok quindi tu per ogni euristica richiami rispettivamente o annerire o non annerire giusto? non voglio vedere il tuo codice ma cercare di capirne un pò di più:)


Esatto, per ogni euristica richiamo annerire e/o non_annerire. Come dicevo annerire a sua volta richiama euristiche... Un bel macello ^^

Ivan

__________________
Tecum sunt, quae fugis... Seneca

09-07-2009 10:55
Click Here to See the Profile for ivanbag Click here to Send ivanbag a Private Message Find more posts by ivanbag Add ivanbag to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
garfa84
.precettore.

User info:
Registered: Jan 2006
Posts: 92 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 3 Days, 3:04:58 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Originally posted by ivanbag

EDIT: per BI e NV mi è venuto in mente che posso sfruttare l'impostazione che ho dato. All'interno della matrice di strutture che ho creato ho un int che contiene il numero e ho un int che fa da "tag" per le celle già controllate. Quelle ancora non controllate hanno un determinato "tag". Una volta terminate le euristiche è facile scorrere la matrice alla ricerca delle celle non visitate. Da qui si può scegliere se lavorarci direttamente oppure crearsi una struttura esterna ed applicare BI e NV ed eventuali altri controlli...


Ok , anch'io avevo pensato di usare l'int della struct per vedere i numeri che mi rimangono da decidere, i e j che sono gli indici della matrice[i][j] li ho per identificare il numero in questione...in base a questo devo fare la supposizione che sia nero, ma dove la metto sta supposizione????....:?

e non ho ancora capito come fare x la componente connessa, cioè il prof mi ha detto che andrebbe verificata ogni volta che devo decidere se annerire o no una cella.....

09-07-2009 13:55
Click Here to See the Profile for garfa84 Click here to Send garfa84 a Private Message Find more posts by garfa84 Add garfa84 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Lallac10
.primate.

User info:
Registered: Mar 2006
Posts: 73 (0.01 al dì)
Location: Rho(mi)
Corso: Informatica
Anno: 3
Time Online: 18:55:37 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Originally posted by ivanbag
Esatto, per ogni euristica richiamo annerire e/o non_annerire. Come dicevo annerire a sua volta richiama euristiche... Un bel macello ^^

Ivan


ora ho un'altra domanda...sull'esempio fornito viene richiamato più volte e di seguito PI che nn rientra nelle euristiche inserite nelle funzioni ricorsive annerire o no

09-07-2009 14:06
Click Here to See the Profile for Lallac10 Click here to Send Lallac10 a Private Message Find more posts by Lallac10 Add Lallac10 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
garfa84
.precettore.

User info:
Registered: Jan 2006
Posts: 92 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 3 Days, 3:04:58 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

si perchè non annerire lo eseguo fin tanto che può essere applicato e siccome nell'esempio quelle chiamate a PI richiamo non_annerire che a sua volta richiama solo una bianco, ma questo non trova niente a annerire, riesegue PI fin quando trova valori che soddisfano l'euristica!!

09-07-2009 14:16
Click Here to See the Profile for garfa84 Click here to Send garfa84 a Private Message Find more posts by garfa84 Add garfa84 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
ivanbag
.amico.

User info:
Registered: Jul 2005
Posts: 29 (0.00 al dì)
Location:
Corso: Informatica
Anno: 1123571219315081
Time Online: 12:25:34 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Originally posted by garfa84
Ok , anch'io avevo pensato di usare l'int della struct per vedere i numeri che mi rimangono da decidere, i e j che sono gli indici della matrice[ i ][ j ] li ho per identificare il numero in questione...in base a questo devo fare la supposizione che sia nero, ma dove la metto sta supposizione????....:?


Potresti crearti all'interno della struct (se usi una struct ovvio) una variabile apposita che, se diversa da zero, stai supponendo la cella nera... Ovviamente adattandola al tuo caso.

Originally posted by garfa84
e non ho ancora capito come fare x la componente connessa, cioè il prof mi ha detto che andrebbe verificata ogni volta che devo decidere se annerire o no una cella.....


Ecco, questo è il punto dolente... Le verifiche delle proprietà 1 e 2 sono facili, ma questa... Io sto provando ora a metterle giu tramite grafo... Non ho trovato ancora una soluzione migliore... Se una qualche cella, coppia di celle o insieme di celle non è connessa al resto del grafo la regole 3 non è verificata... Solo è da implementare...

Ciau
Ivan

__________________
Tecum sunt, quae fugis... Seneca

09-07-2009 14:38
Click Here to See the Profile for ivanbag Click here to Send ivanbag a Private Message Find more posts by ivanbag Add ivanbag to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Lallac10
.primate.

User info:
Registered: Mar 2006
Posts: 73 (0.01 al dì)
Location: Rho(mi)
Corso: Informatica
Anno: 3
Time Online: 18:55:37 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

io per la regola 3 ho trattato la matrice come se fosse un grafo testando le prime 2 celle se sono nere e per la prima che non lo è guardo gli adiacenti a croce cioè dx sx su giù e metto le coordinate in una coda poi fino a quando la coda non è vuota faccio lo stesso per tutti gli adiacenti. per capire se ho toccato tutti i nodi ho 2 contatori che mi contano le celle nere e le celle bianche che ho visitato se la loro somma è diversa dal numero di celle totali della griglia allora la griglia non è connessa


EDIT: ho provato a eseguire manualmente la catena di euristiche e arrivati al punto no (2,3)PI li dovrebbe poi applicare SB non di nuovo PI.....se non è così allora non ci ho ancora capito molto

Last edited by Lallac10 on 09-07-2009 at 14:58

09-07-2009 14:44
Click Here to See the Profile for Lallac10 Click here to Send Lallac10 a Private Message Find more posts by Lallac10 Add Lallac10 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
garfa84
.precettore.

User info:
Registered: Jan 2006
Posts: 92 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 3 Days, 3:04:58 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

si lo esegue SB ma non ci sono valori per cui stampa il messaggio no (x,x) : SB...l'esecuzione avviene sempre dopo non_annerire ma non sempre trova valori!!!

io per la regola 3 ho trattato la matrice come se fosse un grafo testando le prime 2 celle se sono nere e per la prima che non lo è guardo gli adiacenti a croce cioè dx sx su giù e metto le coordinate in una coda poi fino a quando la coda non è vuota faccio lo stesso per tutti gli adiacenti. per capire se ho toccato tutti i nodi ho 2 contatori che mi contano le celle nere e le celle bianche che ho visitato se la loro somma è diversa dal numero di celle totali della griglia allora la griglia non è connessa


ma la regola la controlli sempre?
ma quindi cosa fa nel primo passo vede 0,1 non nera e mette nella coda (0,2)(0,0)(1,0)..e poi controlla i valori nella coda

09-07-2009 15:06
Click Here to See the Profile for garfa84 Click here to Send garfa84 a Private Message Find more posts by garfa84 Add garfa84 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Lallac10
.primate.

User info:
Registered: Mar 2006
Posts: 73 (0.01 al dì)
Location: Rho(mi)
Corso: Informatica
Anno: 3
Time Online: 18:55:37 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

il primo passo è il controllo di 00 se è nero incremento il contatore nero, e setto 1 il visitato di 00, poi passo a 01 e quello se è bianco controllo a croce e metto quelli non neri nella coda
e così via incrementando per ogni bianco il contatore bianco

non capisco la tua risposta però.....ci sono due numeri uguali su quella riga....eppure la considera dopo molto....boh

09-07-2009 15:09
Click Here to See the Profile for Lallac10 Click here to Send Lallac10 a Private Message Find more posts by Lallac10 Add Lallac10 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
garfa84
.precettore.

User info:
Registered: Jan 2006
Posts: 92 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 3 Days, 3:04:58 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

si ma il PI non_annerisce il 4 e non ci sono 4 sulla stessa riga o colonna..no?!

09-07-2009 15:14
Click Here to See the Profile for garfa84 Click here to Send garfa84 a Private Message Find more posts by garfa84 Add garfa84 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
All times are GMT. The time now is 06:41.    Post New Thread    Post A Reply
Pages (8): « First ... « 2 3 4 5 [6] 7 8 »   Last Thread   Next Thread
Show Printable Version | Email this Page | Subscribe to this Thread | Add to Bookmarks

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
 

Powered by: 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
Pagina generata in 0.055 seconds (69.24% PHP - 30.76% MySQL) con 23 query.