Java'da bir oyun için bir minimax algoritması yazıyorum ve hız amaçları için, karar ağacında yinelemeli olarak çalışırken oyun durumunu mutasyona sokuyorum. Ancak, bu, üzerinde yinelemeye başladığım hamlelerin listesini değiştirmeyi içerir.Her yinelemeden sonra özgün durumuna dönerse, yinelemeyi sürdürdüğüm bir diziyi güvenli bir şekilde değiştirebilir miyim?
public int minimax(int currentDepth) {
if (currentDepth == depth || board.legalMoves.isEmpty()) {
int eval = board.eval();
board.takeBack(1);
return eval;
}
int x = Integer.MIN_VALUE;
for (Tuple move : board.legalMoves) {
board.move(move);
x = max(x, -1*minimax(currentDepth+1));
board.takeBack(1);
}
return x
}
board.move()
yöntem ArrayList legalMoves
mutasyona uğrar, fakat takeBack(1)
geri orijinal haline getirir. Bu herhangi bir soruna neden olabilir mi?
Sadece umulan ağacın üzerinden birden fazla iş parçacığınız yok ... – Reactormonk
Neden burada bir döngü kullanıyorsunuz? Metodu döndürdüğünüz için * asla * başlangıç öğesinin ötesine geçmez. – Vulcan
Yukarıda adı geçen "dönüş" de "board.takeBack (1)" işlevini, sorgunun amacını bir şekilde öldüren ölü kod olarak gösterir. – Vulcan