| 
 |  
            | 
 | 
           
        
       
  | 
 |   |   
  | 
           ivanbag | 
        
                
                
                |   Immaginavo che BI e NI fossero da applicare alle c ... | 
                  09-07-2009 08:14 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	ivanbag  | 
       
     
	.amico. 
	 
     
	
    Registered: Jul 2005 
	Posts: 29 (0.00 al dì) 
	Location:  
	Corso: Informatica 
	Anno: 1123571219315081 
Time Online: 12:25:34 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           Lallac10 | 
        
                
                
                |   in pratica annerisci e non_annerire richiamano ris ... | 
                  09-07-2009 09:05 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	Lallac10  | 
       
     
	.primate. 
	
     
	
    Registered: Mar 2006 
	Posts: 73 (0.01 al dì) 
	Location: Rho(mi) 
	Corso: Informatica 
	Anno: 3 
Time Online: 18:55:37 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           ivanbag | 
        
                
                
                |   Cosa intendi per "passare le coordinate"?
 ... | 
                  09-07-2009 09:40 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	ivanbag  | 
       
     
	.amico. 
	 
     
	
    Registered: Jul 2005 
	Posts: 29 (0.00 al dì) 
	Location:  
	Corso: Informatica 
	Anno: 1123571219315081 
Time Online: 12:25:34 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           Lallac10 | 
        
                
                
                |   si ok ora mi sorge un'altra domanda....la chiamata ... | 
                  09-07-2009 09:44 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	Lallac10  | 
       
     
	.primate. 
	
     
	
    Registered: Mar 2006 
	Posts: 73 (0.01 al dì) 
	Location: Rho(mi) 
	Corso: Informatica 
	Anno: 3 
Time Online: 18:55:37 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           ivanbag | 
        
                
                
                |   Ok...
 ... | 
                  09-07-2009 10:46 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	ivanbag  | 
       
     
	.amico. 
	 
     
	
    Registered: Jul 2005 
	Posts: 29 (0.00 al dì) 
	Location:  
	Corso: Informatica 
	Anno: 1123571219315081 
Time Online: 12:25:34 [...] 
Status: Offline
     
    	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   
 
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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           Lallac10 | 
        
                
                
                |   ok quindi tu per ogni euristica richiami rispettiv ... | 
                  09-07-2009 10:51 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	Lallac10  | 
       
     
	.primate. 
	
     
	
    Registered: Mar 2006 
	Posts: 73 (0.01 al dì) 
	Location: Rho(mi) 
	Corso: Informatica 
	Anno: 3 
Time Online: 18:55:37 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           ivanbag | 
        
                
                
                |   [QUOTE][i]Originally posted by Lallac10 [/i]
 ... | 
                  09-07-2009 10:55 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	ivanbag  | 
       
     
	.amico. 
	 
     
	
    Registered: Jul 2005 
	Posts: 29 (0.00 al dì) 
	Location:  
	Corso: Informatica 
	Anno: 1123571219315081 
Time Online: 12:25:34 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           garfa84 | 
        
                
                
                |   [QUOTE][i]Originally posted by ivanbag [/i]
 ... | 
                  09-07-2009 13:55 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	garfa84  | 
       
     
	.precettore. 
	
     
	
    Registered: Jan 2006 
	Posts: 92 (0.01 al dì) 
	Location:  
	Corso:  
	Anno:  
Time Online: 3 Days, 3:04:58 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           Lallac10 | 
        
                
                
                |   [QUOTE][i]Originally posted by ivanbag [/i]
 ... | 
                  09-07-2009 14:06 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	Lallac10  | 
       
     
	.primate. 
	
     
	
    Registered: Mar 2006 
	Posts: 73 (0.01 al dì) 
	Location: Rho(mi) 
	Corso: Informatica 
	Anno: 3 
Time Online: 18:55:37 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           garfa84 | 
        
                
                
                |   si perchè non annerire lo eseguo fin tanto che pu ... | 
                  09-07-2009 14:16 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	garfa84  | 
       
     
	.precettore. 
	
     
	
    Registered: Jan 2006 
	Posts: 92 (0.01 al dì) 
	Location:  
	Corso:  
	Anno:  
Time Online: 3 Days, 3:04:58 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           ivanbag | 
        
                
                
                |   [QUOTE][i]Originally posted by garfa84 [/i]
 ... | 
                  09-07-2009 14:38 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	ivanbag  | 
       
     
	.amico. 
	 
     
	
    Registered: Jul 2005 
	Posts: 29 (0.00 al dì) 
	Location:  
	Corso: Informatica 
	Anno: 1123571219315081 
Time Online: 12:25:34 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           Lallac10 | 
        
                
                
                |   io per la regola 3 ho trattato la matrice come se  ... | 
                  09-07-2009 14:44 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	Lallac10  | 
       
     
	.primate. 
	
     
	
    Registered: Mar 2006 
	Posts: 73 (0.01 al dì) 
	Location: Rho(mi) 
	Corso: Informatica 
	Anno: 3 
Time Online: 18:55:37 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           garfa84 | 
        
                
                
                |   si lo esegue SB ma non ci sono valori per cui stam ... | 
                  09-07-2009 15:06 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	garfa84  | 
       
     
	.precettore. 
	
     
	
    Registered: Jan 2006 
	Posts: 92 (0.01 al dì) 
	Location:  
	Corso:  
	Anno:  
Time Online: 3 Days, 3:04:58 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           Lallac10 | 
        
                
                
                |   il primo passo è il controllo di 00 se è nero in ... | 
                  09-07-2009 15:09 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	Lallac10  | 
       
     
	.primate. 
	
     
	
    Registered: Mar 2006 
	Posts: 73 (0.01 al dì) 
	Location: Rho(mi) 
	Corso: Informatica 
	Anno: 3 
Time Online: 18:55:37 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           garfa84 | 
        
                
                
                |   si ma il PI non_annerisce il 4 e non ci sono 4 sul ... | 
                  09-07-2009 15:14 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	garfa84  | 
       
     
	.precettore. 
	
     
	
    Registered: Jan 2006 
	Posts: 92 (0.01 al dì) 
	Location:  
	Corso:  
	Anno:  
Time Online: 3 Days, 3:04:58 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |   
  | 
	
	
	
	
		| All times are GMT. The time now is 06:41. | 
                
 | 
                   | 
		  | 
		   | 
		  | 
	 
	 
	
	 | 
 
 
 |   
 |   |   
    
	
 
 
	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
	 | 
 
 
 |  
  | 
	
	 
	 | 
 
 
 
 | 
 
 
   |