pseudcode para el algoritmo MinMax

votos
3

Quiero conseguir el pseudocódigo para el algoritmo MinMax. Tengo que hacer 2 funciones, def maxAgent (gamestate, profundidad) y minAgent. ¿Hay alguna cuerpo que tiene el derecho y fácil pseudocódigo para ello.

Publicado el 29/07/2010 a las 05:13
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
2

El algoritmo MinMax trata de maximizar la puntuación para el jugador A y minimizar la puntuación para el jugador B. Dado un nodo, puede encontrar el resultado final del juego óptimo tomando el máximo (para A) o minutos (para B) de la banda sonora de nodos sucesores.

Suponiendo que los nodos hoja tienen un ganador asignado (1 de A, -1 para B), mientras que todos los demás nodos tienen una puntuación de 0. A continuación, puede calcular el resultado final de victoria de un con algo como

  getMaxScore(node) {
    score = node.score;
    for each child node 
       score = max(score, getMaxScore(node))  
    next

    return score;
  }

Este es el algoritmo básico. Usted puede cortocircuitar la evaluación en cuanto la puntuación se convierte en 1, entonces tienen una victoria conocida para A.

El algoritmo es el mismo para B, getMinScore, sólo se utiliza la función min, y si cortocircuitos, busca -1.

Respondida el 29/07/2010 a las 05:43
fuente por usuario

votos
2

Dos jugadores, A y B, se turnan para jugar.

Se nos da una función de puntuación f que evalúa una posición del tablero dado, P. Los valores más grandes de f (P) son mejores para A y peor para B (es decir, f (P) es una estimación de la "buena" P es para una sin hacer ningún tipo de búsqueda hacia delante más).

Considere una posición en el tablero P.

Si P es un nodo hoja (es decir, P es una posición ganadora o hemos buscado con la antelación que queremos), entonces volvemos f (P) como la puntuación para este nodo.

De lo contrario P no es un nodo de hoja y tiene hijos C1, ..., Cn. Nos recursiva calcular las puntuaciones para los niños, dando S1, ..., Sn.

Si A juega en P entonces la puntuación de P es max {S1, ..., Sn} ya que A siempre jugar para maximizar su beneficio.

Si B juega en P entonces la puntuación de P es min {S1, ..., Sn} ya que B será siempre juegan para minimizar las ventajas de una.

Eso debería ser suficiente para convertir en código.

Una vez que hayas hecho esto, echar un vistazo a la poda alfa-beta, que debe (drásticamente) reducir la cantidad de búsqueda que tiene que hacer. la poda alfa-beta se basa en la idea de que si A deduce que B puede jugar a la fuerza máxima ventaja de que A sea H, entonces no hay punto de considerar cualquier subárbol cuya puntuación es mayor que M ya que B nunca permitirá Un esa opción!

Respondida el 29/07/2010 a las 07:39
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more