Ich entwerfe ein 3D-Tic-Tac-Toe-Spiel und finde Zeit, um eine Grenze dafür zu setzen, wie tief mein Minimax-Algorithmus gehen kann. Während Tiefen bis zu 6 in der Zeit vernachlässigbar sind (< 1s), dauert es für höhere Tiefen etwas Zeit.Threading innerhalb des Minimax-Algorithmus
>Depth 7 = 6 seconds
>Depth 8 = 49 seconds
>Depth 9 = 314 seconds
Ich habe nicht die Zeit (hah!), Höhere Tiefen zu überprüfen. Die maximale Tiefe ist 22, was meine KI jeden möglichen Spielzustand von Move 1 analysieren lässt und niemals zu einem User-Gewinn führt.
Ich möchte Threading in meiner Minimax-Funktion implementieren, bin aber relativ neu im Threading. Meine Minimax Funktion ist wie folgt:
//player is -1 for human, +1 for AI
function minimax(board_state, depth, player)
if depth <= 0 or board == full //full board means no further states
return score * player
bestScore = -1000;
foreach possible move
if valid move
/* */
make_move()
bestScore = max(bestScore, minimax(board_state, depth-1, -player)
undo_move()
/* */
return bestScore
ich etwas möchte, wo die Bits zwischen /* */
neue Themen sind, aber ein Problem: auch bei depth = 1
, dass 8 Threads ist. Für depth = 8
sind das 16534863 Threads. Was sind die Beschränkungen für Threads? Ist es verknüpft mit wie vielen physischen Kernen hat meine CPU?
Wie ist die Frage zu C++? –
Mein Programm selbst ist in C++. – gator
Betrachten Sie die Implementierung eines [Thread-Pool] (https://en.wikipedia.org/wiki/Thread_pool) –