Visualizzazione dei risultati da 1 a 2 su 2

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    17

    algoritmo di backtracking!

    mi aiutate a capire questo algoritmo di risoluzione di un problema attraverso il backtracking (in particolare dal punto marchiato con ***)? che utilizza i concetti di punto di scelta e scelta (applicabili a esempi quali colorazione di una mappa). grazie, anche qualche appunto su algoritmi simili
    codice:
    	/**
    	 * Metodo implementato che permette di risolvere un problema
    	 *  attraverso punto di scelta e scelta
    	 */
    	public void  risolvi(){ 
    		
    		P ps=primoPuntoDiScelta();
    		S s= primaScelta ( ps );
    		boolean  backtrack=false, fine=false;
    		 do{
    	         while(!backtrack && nr_soluzione<num_max_soluzioni){
    	             if(assegnabile(s, ps)){
    	                 assegna(s, ps);
    	                 if(ps.equals(ultimoPuntoDiScelta())){ // ***
    	                	 nr_soluzione++;
    	                     scriviSoluzione(nr_soluzione);
    	                     
    	                     deassegna(s, ps);
    	                     if(!s.equals(ultimaScelta(ps))) 
    	                    	 s=prossimaScelta(s);
    	                     else
    	                    	 backtrack=true;
    	                 }
    	                 else{ 
    	                	 ps=prossimoPuntoDiScelta(ps); 
    	                	 s=primaScelta(ps); }
    	             }else 
    	            	 if(!s.equals(ultimaScelta(ps)))
    	                 s=prossimaScelta(s);
    	             else
    	            	 backtrack=true;
    	         }
    	         fine=ps.equals(primoPuntoDiScelta()) || nr_soluzione==num_max_soluzioni;
    	         while(backtrack&&!fine){
    	             ps=precedentePuntoDiScelta(ps);
    	             s=ultimaSceltaAssegnataA(ps);
    	             deassegna(s, ps);
    	             if(!s.equals(ultimaScelta(ps))){
    	                 s=prossimaScelta(s);
    	                 backtrack=false;
    	             }
    	             else
    	            	 if(ps.equals(primoPuntoDiScelta()))
    	                 fine=true;
    	         }
    	      }while(!fine);
    	    }
    Ultima modifica di MItaly; 06-01-2014 a 17:16 Motivo: Tag CODE

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.