나는 알파 베타 제거의 기본 구현을 가지고 있지만 이동 순서를 개선하는 방법을 모른다. 나는 그것이 얕은 검색, 반복적 인 심화 또는 bestMoves to Transition 테이블을 가지고 수행 될 수 있다는 것을 읽었다.Alpha-beta move ordering
이 알고리즘에서 이러한 개선 사항 중 하나를 구현하는 방법에 대한 제안이 있으십니까? 얕은 검색을 재정렬
public double alphaBetaPruning(Board board, int depth, double alpha, double beta, int player) {
if (depth == 0) {
return board.evaluateBoard();
}
Collection<Move> children = board.generatePossibleMoves(player);
if (player == 0) {
for (Move move : children) {
Board tempBoard = new Board(board);
tempBoard.makeMove(move);
int nextPlayer = next(player);
double result = alphaBetaPruning(tempBoard, depth - 1, alpha,beta,nextPlayer);
if ((result > alpha)) {
alpha = result;
if (depth == this.origDepth) {
this.bestMove = move;
}
}
if (alpha >= beta) {
break;
}
}
return alpha;
} else {
for (Move move : children) {
Board tempBoard = new Board(board);
tempBoard.makeMove(move);
int nextPlayer = next(player);
double result = alphaBetaPruning(tempBoard, depth - 1, alpha,beta,nextPlayer);
if ((result < beta)) {
beta = result;
if (depth == this.origDepth) {
this.bestMove = move;
}
}
if (beta <= alpha) {
break;
}
}
return beta;
}
}
public int next(int player) {
if (player == 0) {
return 4;
} else {
return 0;
}
}
질문에 제공된 코드 샘플을 사용하면 가능한 구현 또는 정렬을 제공 할 수 있습니까? (따라서 정렬 및 재귀 적으로 정렬 된 목록 모두에서 호출) 나는 그것을 구현하는 방법에 대해 혼란스러워합니다. – FedericoCapaldo