Iz E-študij, proste zakladnice študentskega znanja
//Stanje v prostoru reitev za problem trgovskega potnika
public class TSPsolutionState extends TSPstate implements SolutionSearchState {
public TSPsolutionState(TSPproblem pr) {
super(pr);
}
// successors with 2opt
public List next() {
List successors = new ListLinked() ;
int newWalk[] ;
TSPsolutionState newState ;
int i, j, k ;
// select two edges begining at i and j
for (i=0 ; i < walkLen ; i++)
for (j = i+2 ; j < walkLen ; j++) {
newState = new TSPsolutionState(p) ;
newState.walk = new int[p.size] ;
for (k=0 ; k <= i ; k++)
newState.walk[k] = walk[k] ;
for (k=i+1 ; k <= j ; k++)
newState.walk[k] = walk[j-(k-i-1)] ;
for (k=j+1 ; k < walkLen ; k++)
newState.walk[k] = walk[k] ;
newState.walkLen = walkLen ;
successors.insert(newState);
}
return successors ;
}
public void setRandom() {
walkLen = p.size ;
walk = new int[p.size] ;
int i, temp, rnd ;
for (i=0 ; i < p.size ; i++)
walk[i]= i ;
for (i=p.size-1 ; i > 0 ; i--) {
temp = walk[i];
rnd = (int)((i+1)*Math.random()) ;
walk[i] = walk[rnd] ;
walk[rnd] = temp ;
}
}
public boolean isConsistent() {
int i, j ;
for (i=0 ; i < walkLen ; i++) {
if (walk[i] < 0 || walk[i] > p.size)
return false ;
for (j=i+1 ; j < walkLen ; j++)
if (walk[j] == walk[i])
return false ;
}
return true ;
}
}