SlideShare uma empresa Scribd logo
1 de 88
Baixar para ler offline
Análisis y Simulación
                  de Decisiones
               José Enrique Alvarez Estrada




Basado en un material elaborado por el Prof. Luigi Ceccaroni
Juegos
La teoría de juegos es un área de la matemática
aplicada que utiliza modelos para estudiar
interacciones en estructuras formalizadas de
incentivos (los llamados juegos) y llevar a cabo
procesos de decisión
Juegos
• Los juegos más simples que se estudian en
  Toma de Decisiones son aquellos:
  – De suma cero (lo que uno gana, el otro lo pierde y
    viceversa)
  – De dos jugadores (jugador MAX, jugador MIN)
  – Por turnos
  – De información perfecta (ajedrez, damas, tres en raya,
    etc.)
  – O de información imperfecta (poker, stratego, bridge...)
  – Deterministas
Juegos
• Los juegos son interesantes porque son
  demasiado difíciles de resolver.
• El ajedrez, por ejemplo, tiene un factor de
  ramificación promedio de 35 y los juegos van a
  menudo a 50 movimientos por cada jugador:
  – grafo de búsqueda: aproximadamente 1040 nodos
    distintos
  – árbol de búsqueda: 35100 o 10154 nodos
• Como en el mundo real, se requiere de tomar
  alguna decisión (la jugada) cuando es infactible
  calcular la decisión óptima.
Decisiones óptimas en juegos
• Un juego puede definirse formalmente
  mediante:
  – Un estado inicial
  – Una función sucesor, que devuelve una lista
    de pares (movimiento, estado)
  – Una prueba terminal, que determina cuándo
    termina el juego (por estructura o
    propiedades o función utilidad)
  – Una función utilidad

                                         5
Búsqueda exhaustiva
Búsqueda exhaustiva
• Aproximación trivial: generar todo el árbol
  de jugadas.
• Se etiquetan las jugadas terminales,
  dependiendo de si gana MAX o MIN, con un
  valor de utilidad de, por ejemplo, “+1” o “-1”.
• El objetivo es encontrar un conjunto de
  movimientos accesible que dé como ganador
  a MAX.
• Se propagan los valores de las jugadas
  terminales de las hojas hasta la raíz.
• Incluso un juego simple como tic-tac-toe es
  demasiado complejo para dibujar el árbol
  completo
Búsqueda exhaustiva
Búsqueda exhaustiva
Búsqueda exhaustiva
• Aproximación heurística: definir una
  función que nos indique lo cerca que
  estamos de una jugada ganadora (o
  perdedora).
• En esta función interviene información
  del dominio.
• Esta función no representa ningún
  coste, ni es una distancia en pasos.
• El algoritmo busca con profundidad
  limitada.
• Cada nueva decisión por parte del
  adversario implicará repetir parte de la
  búsqueda.
Ejemplo: tic-tac-toe
                               e = PMAX - PMIN
donde:
   – e = función utilidad
   – PMAX = número de filas, columnas y diagonales completas disponibles
       para MAX
   – PMIN = número de filas, columnas y diagonales completas disponibles
       para MIN
• MAX juega con ✘ y desea maximizar e
• MIN juega con O y desea minimizar e
• Valores absolutos altos de e: buena posición para el que tiene que mover
• Controlar las simetrías
• Utilizar una profundidad de parada (en el ejemplo: 2)
tic-tac-toe: jugada #1
tic-tac-toe: jugada #1

juega MAX
tic-tac-toe: jugada #1




        juega MIN

6-5=1
tic-tac-toe: jugada #1




6-5=1   5-5=0
tic-tac-toe: jugada #1




6-5=1   5-5=0   6-5=1
tic-tac-toe: jugada #1




6-5=1   5-5=0   6-5=1   5-5=0
tic-tac-toe: jugada #1




6-5=1   5-5=0   6-5=1   5-5=0   4-5=-1
tic-tac-toe: jugada #1


                        MIN = -1




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1
tic-tac-toe: jugada #1


                                          juega MAX
                        MIN = -1




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1
tic-tac-toe: jugada #1


                        MIN = -1

                                          juega MIN


6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1         5-4=1
tic-tac-toe: jugada #1


                        MIN = -1




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1   6-4=2
tic-tac-toe: jugada #1


                        MIN = -1                  MIN = 1




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1   6-4=2
tic-tac-toe: jugada #1


                                                            juega MAX

                        MIN = -1                  MIN = 1




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1   6-4=2
tic-tac-toe: jugada #1


                        MIN = -1                  MIN = 1
                                                            juega MIN



6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1   6-4=2     5-6=-1
tic-tac-toe: jugada #1


                        MIN = -1                  MIN = 1




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1   6-4=2     5-6=-1   6-6=0
tic-tac-toe: jugada #1


                        MIN = -1                  MIN = 1




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1   6-4=2     5-6=-1   6-6=0   6-6=0
tic-tac-toe: jugada #1


                        MIN = -1                  MIN = 1




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1   6-4=2     5-6=-1   6-6=0   6-6=0   5-6=-1
tic-tac-toe: jugada #1


                        MIN = -1                  MIN = 1




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1   6-4=2     5-6=-1   6-6=0   6-6=0   5-6=-1   4-6=-2
tic-tac-toe: jugada #1


                        MIN = -1                  MIN = 1                            MIN = -2




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1   6-4=2     5-6=-1   6-6=0   6-6=0   5-6=-1   4-6=-2
tic-tac-toe: jugada #1


                        MIN = -1                  MIN = 1                            MIN = -2




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1   6-4=2     5-6=-1   6-6=0   6-6=0   5-6=-1   4-6=-2
tic-tac-toe: jugada #1

                                          MAX = 1



                        MIN = -1                    MIN = 1                            MIN = -2




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1     6-4=2     5-6=-1   6-6=0   6-6=0   5-6=-1   4-6=-2
tic-tac-toe: jugada #1

                                          MAX = 1



                        MIN = -1                    MIN = 1                              MIN = -2




                                                              Por tanto, la mejor
6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1     6-4=2     jugada de MAX es
                                                                    5-6=-1 6-6=0 6-6=0   5-6=-1   4-6=-2
tic-tac-toe: jugada #1

                                          MAX = 1



                        MIN = -1                    MIN = 1                                 MIN = -2




6-5=1   5-5=0   6-5=1    5-5=0   4-5=-1   5-4=1     6-4=2          5-6=-1   6-6=0   6-6=0   5-6=-1   4-6=-2


                                                              tras lo cual MIN
                                                                debería jugar
tic-tac-toe: jugada #2
tic-tac-toe: jugada #2
  juega
   MAX
tic-tac-toe: jugada #2
4-2=2
        juega
         MIN
tic-tac-toe: jugada #2
4-2=2



3-2=1
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3



2-2=0
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3



2-2=0



4-2=2
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3



2-2=0



4-2=2



3-2=1
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0



4-2=2



3-2=1
tic-tac-toe: jugada #2
4-2=2



3-2=1
                  juega
5-2=3
                   MAX
        MIN = 0
2-2=0



4-2=2



3-2=1
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0


          juega
4-2=2      MIN

3-2=1
          4-3=1
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0



4-2=2



3-2=1
          4-3=1   3-3=0
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0



4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0



4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0



4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0   4-3=1
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0



4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0   4-3=1   4-3=1
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0
                          MIN = 0

4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0   4-3=1   4-3=1
tic-tac-toe: jugada #2
4-2=2
                                          juega
                                           MAX
3-2=1



5-2=3
        MIN = 0
2-2=0
                          MIN = 0

4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0   4-3=1   4-3=1
tic-tac-toe: jugada #2
4-2=2



3-2=1


                                            juega
5-2=3
                                             MIN
        MIN = 0
2-2=0
                          MIN = 0
                                          4-2=2
4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1   4-3=1
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2
4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2    5-2=3
4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2    5-2=3   3-2=1
4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2    5-2=3   3-2=1   4-2=2
4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
4-2=2



3-2=1



5-2=3
        MIN = 0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2    5-2=3   3-2=1   4-2=2   4-2=2
4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
4-2=2



3-2=1


                                                                MIN = 1
5-2=3
        MIN = 0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2    5-2=3   3-2=1   4-2=2   4-2=2
4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
                                                                                            4-3=1
4-2=2                               MAX = 1



3-2=1


                                                                MIN = 1
5-2=3
        MIN = 0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2    5-2=3   3-2=1   4-2=2   4-2=2
4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
                                                                                            4-3=1
4-2=2                               MAX = 1


                                                                                            4-3=1
3-2=1


                                                                MIN = 1
5-2=3
        MIN = 0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2    5-2=3   3-2=1   4-2=2   4-2=2
4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
                                                                                            4-3=1
4-2=2                               MAX = 1


                                                                                            4-3=1
3-2=1


                                                                MIN = 1                     3-3=0
5-2=3
        MIN = 0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2    5-2=3   3-2=1   4-2=2   4-2=2
4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
                                                                                            4-3=1
4-2=2                               MAX = 1


                                                                                            4-3=1
3-2=1


                                                                MIN = 1                     3-3=0
5-2=3
        MIN = 0
                                                                                            3-3=0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2    5-2=3   3-2=1   4-2=2   4-2=2
4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
                                                                                            4-3=1
4-2=2                               MAX = 1


                                                                                            4-3=1
3-2=1


                                                                MIN = 1                     3-3=0
5-2=3
        MIN = 0
                                                                                            3-3=0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2    5-2=3   3-2=1   4-2=2   4-2=2
                                                                                            3-3=0
4-2=2



3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
                                                                                            4-3=1
4-2=2                               MAX = 1


                                                                                            4-3=1
3-2=1


                                                                MIN = 1                     3-3=0
5-2=3
        MIN = 0
                                                                                            3-3=0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2    5-2=3   3-2=1   4-2=2   4-2=2
                                                                                            3-3=0
4-2=2


                                                                                            3-3=0
3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
                                                                             MIN = 0        4-3=1
4-2=2                               MAX = 1


                                                                                            4-3=1
3-2=1


                                                                MIN = 1                     3-3=0
5-2=3
        MIN = 0
                                                                                            3-3=0
2-2=0
                          MIN = 0
                                          4-2=2    4-2=2    5-2=3   3-2=1   4-2=2   4-2=2
                                                                                            3-3=0
4-2=2


                                                                                            3-3=0
3-2=1
          4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1
tic-tac-toe: jugada #2
                                                                                              MIN = 0     4-3=1
4-2=2                                           MAX = 1


                                                                                                          4-3=1
3-2=1


                                                                            MIN = 1                       3-3=0
5-2=3
                   MIN = 0
                                                                                                          3-3=0
2-2=0
                                      MIN = 0
                                                      4-2=2    4-2=2    5-2=3   3-2=1    4-2=2    4-2=2
                                                                                                          3-3=0
4-2=2


                                                                                                          3-3=0
3-2=1
                      4-3=1   3-3=0   5-3=2   3-3=0    4-3=1    4-3=1

                                      0                                                 0 0
La mejor jugada de MAX es pues        X   tras lo cual MIN podría jugar                 X
                                  X                                                X
Ejemplo: tic-tac-toe
                                               X 0 0
                                                 X                               X 0 0
                    0 0                                                                   2-1=1
                                               X                                 0 X
                    X
                                                MIN = 1                          X
               X

         MAX = 1                               0 0
                                             XX                                  X 0 0
                                             X                                     X
                                                                                          3-1=2
                                             MIN = -∞∞                           X 0

                                      0 0                                X 0 0
                                      X                                    X
              0 0                    XX                                  X 0
                                         MIN = -∞∞           X 0 0                2-1=1
              XX           0 0
                           X                                   X 0
          X                                                  X
                          X X                                        3-1=2
                                 MIN = -∞∞
        MIN = -∞∞




                                                     X 0 0
           La mejor jugada de MAX es pues:             X
                                                     X

• Por convención:
  – las jugadas ganadoras se evalúan a “+∞∞”
  – las jugadas perdedoras se evalúan a “-∞∞”
Minimax




• Valor-Minimax(n): utilidad para MAX de
  estar en el estado n asumiendo que
  ambos jugadores jueguen óptimamente.
Minimax




• Valor-Minimax(n):
  – Utilidad(n), si n es un estado terminal
  – maxs∈Sucesores(n) Valor-Minimax(s), si n es un estado MAX
  – mins∈Sucesores(n) Valor-Minimax(s), si n es un estado MIN
Algoritmo minimax
• Calcula la decisión minimax del estado
  actual.
• Usa un cálculo simple recurrente de los
  valores minimax de cada estado sucesor.
• La recursión avanza hacia las hojas del
  árbol.
• Los valores minimax retroceden por el
  árbol cuando la recursión se va
  deshaciendo.
Algoritmo minimax
                        A




          B




• El algoritmo primero va hacia abajo a los
  tres nodos izquierdos y utiliza la función
  Utilidad para descubrir que sus valores
  son 3, 12 y 8.
Algoritmo minimax
                       A




          B




• Entonces el algoritmo toma el mínimo de
  estos valores, 3, y lo devuelve como el
  valor del nodo B.
Algoritmo minimax
• Realiza una exploración primero en
  profundidad completa del árbol de juegos.
• Si la profundidad máxima del árbol es m, y hay
  b movimientos legales en cada punto, entonces
  la complejidad :
  – en tiempo es O(bm);
  – en espacio es
     • O(bm) si se generan todos los sucesores a la vez;
     • O(m) si se generan los sucesores uno por uno.
• Juegos reales: los costos de tiempo son
  inaceptables, pero este algoritmo sirve como
  base para el primer análisis matemático y para
  algoritmos más prácticos.
Algoritmo minimax
función Decisión-Minimax(estado) devuelve una acción
  variables de entrada: estado, estado actual del juego
  v ← Max-Valor(estado)
  devolver la acción de Sucesores(estado) con valor v

función Max-Valor(estado) devuelve un valor utilidad
  si Test-Terminal(estado) entonces devolver Utilidad (estado)
  v ← -∞
  para un s en Sucesores(estado) hacer
    v ← Max(v, Min-Valor(s))
  devolver v

función Min-Valor(estado) devuelve un valor utilidad
  si Test-Terminal(estado) entonces devolver Utilidad (estado)
  v←∞
  para un s en Sucesores(estado) hacer
    v ← Min(v, Max-Valor(s))
  devolver v
Poda alfa-beta
• Problema de la búsqueda minimax: el número
  de estados que tiene que examinar es
  exponencial con el número de movimientos.
• El exponente no se puede eliminar, pero se
  puede dividir en la mitad.
• Es posible calcular la decisión minimax correcta
  sin mirar todos los nodos en el árbol.
• La poda alfa-beta permite eliminar partes
  grandes del árbol, sin influir en la decisión final.
Minimax con poda α-β
         a                                                                     a



 b       c                                                        b            c
             e = min(-1, ?) = -1
                                                           0.03
                                        e= max (-0.1, -0.05) = -0.05
                                                                       d           g
 -1 (gana MIN)             ?                                                           ?

 No tiene sentido seguir                                      e            f
 buscando los otros                                        -0.1            -0.05
 descendientes de c.
                                   En c: e= min(-0.05, v(g)) por lo tanto en a:
                                   e = max(0.03, min(-0.05, v(g))) = 0.03
                                   Se pueden pues podar los nodos bajo g; no aportan
                                   nada.
El valor de la raíz y la decisión minimax son
independientes de los valores de las hojas podadas.
Minimax con poda α-β
max
                                a         e(e) = min(-0.1,v(g))
                                          Como la rama b ya da un 0.03,
min                                       Cualquier cosa peor no sirve
                    b           c
                                          => No hay que explorar g
             0.03
                                          e(d) = max(e(e), h)
max
                            d       i     => Sí hay que explorar h
                                          ...
min
             e              h           La búsqueda minimax es
                                        primero en profundidad: en
max     f               g               cualquier momento sólo se
      -0.1
                                        consideran los nodos a lo
                                        largo de un camino del
                                        árbol.
Poda alfa-beta
• Los dos parámetros alfa y beta describen los
  límites sobre los valores que aparecen a lo largo
  del camino:
  – α = el valor de la mejor opción (el más alto) que se
    ha encontrado hasta el momento en cualquier punto
    del camino, para MAX
  – β = el valor de la mejor opción (el más bajo) que se
    ha encontrado hasta el momento en cualquier punto
    del camino, para MIN
• La búsqueda alfa-beta actualiza el valor de α y β
  según se va recorriendo el árbol y termina la
  recursión cuando encuentra un nodo peor que el
  actual valor α o β correspondiente.
Poda alfa-beta: ejemplo
Poda alfa-beta: ejemplo
Poda alfa-beta: ejemplo
Poda alfa-beta: ejemplo
Poda alfa-beta: ejemplo
Poda alfa-beta

       MAX      {α, β}
                                        Si Vi ≥ β poda β
                                        Si Vi > α modificar α
         Vi
                                        Retornar α



     MIN      {α, β}
                                       Si Vi ≤ α poda α
                                       Si Vi < β modificar β

       Vi                              Retornar β

Las cotas α y β se transmiten de padres a hijos de 1 en 1 y en el
orden de visita de los nodos.
Minimax con poda α-β
Funcion valorMax (g,α,β) retorna entero    Funcion valorMin (g,α,β) retorna entero
 Si estado_terminal(g) entonces             Si estado_terminal(g) entonces
  retorna(evaluacion(g))                     retorna(evaluacion(g))
 si no                                      si no
  Para cada mov en movs_posibles(g)          Para cada mov en movs_posibles(g)
   α=max(α,valorMin(aplicar(mov,g),α,β))      β=min(β,valorMax(aplicar(mov,g),α,β))
  si α≥β entonces retorna(β)                 si α≥β entonces retorna(α)
  fPara                                      fPara
  retorna(α)                                 retorna(β)
 fsi                                        fsi
fFuncion                                   fFuncion


 El recorrido se inicia llamando a la función valorMax con
 α=-∞ y β=+∞.
 En la función valorMax α es el valor que se actualiza.
 En la función valorMin β es el valor que se actualiza.
A       {alpha = -∞, beta = +∞}
                                                                A     {3, +∞}
                                                                    {-∞, +∞}
{-∞, 3}         B       C                        3
{-∞, +∞}                                                B       C
                                              {-∞, 3}

    D               E                             D         E
   3                                              3         5
                            A   {3, +∞}


            3   B                        C   {3, +∞}

                            {3, +∞}
        D                            F   G    H



            {3, +∞}     I            J                      Se puede podar I
                                                            ya que es un nodo min y
                K
                0
                                 L
                                                            el valor de
                                                            v(K) = 0 es < α = 3
A   {3, +∞}

                                                                                         A   {3, +∞}
    B                             C       {3, +∞}
        3
                                                                         B                            C   {3, 5}
                  5       F       G        H                                 3
D
            {3, +∞}
                                                                                 5   F       {3, 5}   G    H
                                                                     D
                          J
                      5
                                           4                             5   J               M   7    N
                                      A

                                                                   Podemos podar G pues es
                                                   C   4
                      B
                          3                                        un nodo max y el valor de
              D
                                      5        F           H   4
                                                                   M (7) > β = 5

                      5       J

Mais conteúdo relacionado

Mais procurados

Búsqueda Primero el Mejor
Búsqueda Primero el MejorBúsqueda Primero el Mejor
Búsqueda Primero el MejorTutor4uDev
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacionJaime amambal
 
El problema del agente viajero resuelto por fuerza, programación dinámica y v...
El problema del agente viajero resuelto por fuerza, programación dinámica y v...El problema del agente viajero resuelto por fuerza, programación dinámica y v...
El problema del agente viajero resuelto por fuerza, programación dinámica y v...Luis Alfredo Moctezuma Pascual
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++compumet sac
 
Método de los multiplicadores
Método de los multiplicadoresMétodo de los multiplicadores
Método de los multiplicadoressamantharisa
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamientoLalo Chooper
 
automatas finitos
 automatas finitos automatas finitos
automatas finitosAnel Sosa
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda HashBlanca Parra
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensambladoreveTalavera
 
Arreglos en PSeInt
Arreglos en PSeIntArreglos en PSeInt
Arreglos en PSeIntJerry
 
Los lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingLos lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingJonathan Bastidas
 

Mais procurados (20)

Calculadora con operaciones básicas en java
Calculadora con operaciones básicas en javaCalculadora con operaciones básicas en java
Calculadora con operaciones básicas en java
 
Búsqueda Primero el Mejor
Búsqueda Primero el MejorBúsqueda Primero el Mejor
Búsqueda Primero el Mejor
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacion
 
El problema del agente viajero resuelto por fuerza, programación dinámica y v...
El problema del agente viajero resuelto por fuerza, programación dinámica y v...El problema del agente viajero resuelto por fuerza, programación dinámica y v...
El problema del agente viajero resuelto por fuerza, programación dinámica y v...
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++
 
Arboles multicamino
Arboles  multicaminoArboles  multicamino
Arboles multicamino
 
Guía de ejercicios de normalizacion
Guía de ejercicios de normalizacionGuía de ejercicios de normalizacion
Guía de ejercicios de normalizacion
 
Metodo simplex
Metodo simplexMetodo simplex
Metodo simplex
 
Método de los multiplicadores
Método de los multiplicadoresMétodo de los multiplicadores
Método de los multiplicadores
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
automatas finitos
 automatas finitos automatas finitos
automatas finitos
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
Problema de las 8 reinas
Problema de las 8 reinasProblema de las 8 reinas
Problema de las 8 reinas
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensamblador
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Arreglos en PSeInt
Arreglos en PSeIntArreglos en PSeInt
Arreglos en PSeInt
 
Enfoques.
Enfoques.Enfoques.
Enfoques.
 
Los lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingLos lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turing
 

Destaque

Maximax, maximin y Minimax
Maximax, maximin y MinimaxMaximax, maximin y Minimax
Maximax, maximin y Minimaxdecisiones
 
Proyecto tres en raya electrónico
Proyecto tres en raya electrónicoProyecto tres en raya electrónico
Proyecto tres en raya electrónicomtcarda
 
Algoritmo minimax
Algoritmo minimaxAlgoritmo minimax
Algoritmo minimaxJeffoG92
 
busqueda a profundidad dsf
busqueda a profundidad dsfbusqueda a profundidad dsf
busqueda a profundidad dsfjurgenmtz
 
3. arboles de busqueda
3. arboles de busqueda3. arboles de busqueda
3. arboles de busquedanorma8avila
 
Busqueda entre adversarios
Busqueda entre adversariosBusqueda entre adversarios
Busqueda entre adversariosgvnyps
 
Mundelein il appliance repair
Mundelein il appliance repairMundelein il appliance repair
Mundelein il appliance repairjamesdolbeare
 
Minimax paraconecta4
Minimax paraconecta4Minimax paraconecta4
Minimax paraconecta4EL ESTAFADOR
 
Diagrama de flujo de trabajo avanzado
Diagrama de flujo de trabajo avanzadoDiagrama de flujo de trabajo avanzado
Diagrama de flujo de trabajo avanzadoEdgardo
 
Recorrido de grafos 2da parte
Recorrido de grafos 2da parteRecorrido de grafos 2da parte
Recorrido de grafos 2da parteSergio Ormeño
 
Explicación algoritmo
Explicación algoritmoExplicación algoritmo
Explicación algoritmoarmbadajoz
 
Ejercicios IA - PSR & Poda alfa-beta
Ejercicios IA - PSR & Poda alfa-betaEjercicios IA - PSR & Poda alfa-beta
Ejercicios IA - PSR & Poda alfa-betaLiliana Pacheco
 

Destaque (20)

Tic tac toe code
Tic tac toe codeTic tac toe code
Tic tac toe code
 
Juego Tres En Raya
Juego Tres En RayaJuego Tres En Raya
Juego Tres En Raya
 
Arboles min max
Arboles min maxArboles min max
Arboles min max
 
PODA ALFA-BETA
PODA ALFA-BETAPODA ALFA-BETA
PODA ALFA-BETA
 
Maximax, maximin y Minimax
Maximax, maximin y MinimaxMaximax, maximin y Minimax
Maximax, maximin y Minimax
 
Proyecto tres en raya electrónico
Proyecto tres en raya electrónicoProyecto tres en raya electrónico
Proyecto tres en raya electrónico
 
Algoritmo minimax
Algoritmo minimaxAlgoritmo minimax
Algoritmo minimax
 
Poda Alfa-Beta
Poda Alfa-BetaPoda Alfa-Beta
Poda Alfa-Beta
 
Minimax
MinimaxMinimax
Minimax
 
busqueda a profundidad dsf
busqueda a profundidad dsfbusqueda a profundidad dsf
busqueda a profundidad dsf
 
3. arboles de busqueda
3. arboles de busqueda3. arboles de busqueda
3. arboles de busqueda
 
Busqueda entre adversarios
Busqueda entre adversariosBusqueda entre adversarios
Busqueda entre adversarios
 
Mundelein il appliance repair
Mundelein il appliance repairMundelein il appliance repair
Mundelein il appliance repair
 
Minimax paraconecta4
Minimax paraconecta4Minimax paraconecta4
Minimax paraconecta4
 
Diagrama de flujo de trabajo avanzado
Diagrama de flujo de trabajo avanzadoDiagrama de flujo de trabajo avanzado
Diagrama de flujo de trabajo avanzado
 
Recorrido de grafos 2da parte
Recorrido de grafos 2da parteRecorrido de grafos 2da parte
Recorrido de grafos 2da parte
 
Montecarlo en matlab
Montecarlo en matlabMontecarlo en matlab
Montecarlo en matlab
 
Explicación algoritmo
Explicación algoritmoExplicación algoritmo
Explicación algoritmo
 
Teoría de Juegos
Teoría de JuegosTeoría de Juegos
Teoría de Juegos
 
Ejercicios IA - PSR & Poda alfa-beta
Ejercicios IA - PSR & Poda alfa-betaEjercicios IA - PSR & Poda alfa-beta
Ejercicios IA - PSR & Poda alfa-beta
 

Mais de José Enrique Alvarez Estrada

Elon Musk: el verdadero Ironman [detrás de Tesla Motors, SpaceX y SolarCity]
Elon Musk: el verdadero Ironman [detrás de Tesla Motors, SpaceX y SolarCity]Elon Musk: el verdadero Ironman [detrás de Tesla Motors, SpaceX y SolarCity]
Elon Musk: el verdadero Ironman [detrás de Tesla Motors, SpaceX y SolarCity]José Enrique Alvarez Estrada
 
Utilidad e impacto de las redes sociales versión 1.5
Utilidad e impacto de las redes sociales versión 1.5Utilidad e impacto de las redes sociales versión 1.5
Utilidad e impacto de las redes sociales versión 1.5José Enrique Alvarez Estrada
 
¡Crea tu propio Lab de Ciencias con tu Computadora o Smartphone!
¡Crea tu propio Lab de Ciencias con tu Computadora o Smartphone!¡Crea tu propio Lab de Ciencias con tu Computadora o Smartphone!
¡Crea tu propio Lab de Ciencias con tu Computadora o Smartphone!José Enrique Alvarez Estrada
 
De aventón... Una historia de TERROR en [y con] el transporte público
De aventón... Una historia de TERROR en [y con] el transporte públicoDe aventón... Una historia de TERROR en [y con] el transporte público
De aventón... Una historia de TERROR en [y con] el transporte públicoJosé Enrique Alvarez Estrada
 
De ingeniero a hacker... ¡y de hacker a maker! La necesidad de más práctica e...
De ingeniero a hacker... ¡y de hacker a maker! La necesidad de más práctica e...De ingeniero a hacker... ¡y de hacker a maker! La necesidad de más práctica e...
De ingeniero a hacker... ¡y de hacker a maker! La necesidad de más práctica e...José Enrique Alvarez Estrada
 

Mais de José Enrique Alvarez Estrada (20)

Video Mapping con Open Source
Video Mapping con Open SourceVideo Mapping con Open Source
Video Mapping con Open Source
 
Video Mapping con Open Source
Video Mapping con Open SourceVideo Mapping con Open Source
Video Mapping con Open Source
 
BAT 2 CLI, CLI 2 COW, COW 2 GUI
BAT 2 CLI, CLI 2 COW, COW 2 GUIBAT 2 CLI, CLI 2 COW, COW 2 GUI
BAT 2 CLI, CLI 2 COW, COW 2 GUI
 
Clubes de ciencia
Clubes de cienciaClubes de ciencia
Clubes de ciencia
 
Elon Musk: el verdadero Ironman [detrás de Tesla Motors, SpaceX y SolarCity]
Elon Musk: el verdadero Ironman [detrás de Tesla Motors, SpaceX y SolarCity]Elon Musk: el verdadero Ironman [detrás de Tesla Motors, SpaceX y SolarCity]
Elon Musk: el verdadero Ironman [detrás de Tesla Motors, SpaceX y SolarCity]
 
Cómo el Open Source Cambió mi Vida
Cómo el Open Source Cambió mi VidaCómo el Open Source Cambió mi Vida
Cómo el Open Source Cambió mi Vida
 
Breve historia de la propiedad industrial
Breve historia de la propiedad industrialBreve historia de la propiedad industrial
Breve historia de la propiedad industrial
 
Utilidad e impacto de las redes sociales versión 1.5
Utilidad e impacto de las redes sociales versión 1.5Utilidad e impacto de las redes sociales versión 1.5
Utilidad e impacto de las redes sociales versión 1.5
 
Taller "Small Data con SQL"
Taller "Small Data con SQL"Taller "Small Data con SQL"
Taller "Small Data con SQL"
 
De profesor a emprendedor
De profesor a emprendedorDe profesor a emprendedor
De profesor a emprendedor
 
¡Crea tu propio Lab de Ciencias con tu Computadora o Smartphone!
¡Crea tu propio Lab de Ciencias con tu Computadora o Smartphone!¡Crea tu propio Lab de Ciencias con tu Computadora o Smartphone!
¡Crea tu propio Lab de Ciencias con tu Computadora o Smartphone!
 
Las sinrazones de la Educación Superior
Las sinrazones de la Educación SuperiorLas sinrazones de la Educación Superior
Las sinrazones de la Educación Superior
 
De aventón... Una historia de TERROR en [y con] el transporte público
De aventón... Una historia de TERROR en [y con] el transporte públicoDe aventón... Una historia de TERROR en [y con] el transporte público
De aventón... Una historia de TERROR en [y con] el transporte público
 
Grammars and Syntax
Grammars and SyntaxGrammars and Syntax
Grammars and Syntax
 
Pensamiento STEM Guiado por Datos
Pensamiento STEM Guiado por DatosPensamiento STEM Guiado por Datos
Pensamiento STEM Guiado por Datos
 
De ingeniero a hacker... ¡y de hacker a maker! La necesidad de más práctica e...
De ingeniero a hacker... ¡y de hacker a maker! La necesidad de más práctica e...De ingeniero a hacker... ¡y de hacker a maker! La necesidad de más práctica e...
De ingeniero a hacker... ¡y de hacker a maker! La necesidad de más práctica e...
 
Las apps en el Sector Educativo
Las apps en el Sector EducativoLas apps en el Sector Educativo
Las apps en el Sector Educativo
 
Pirámide organizacional
Pirámide organizacionalPirámide organizacional
Pirámide organizacional
 
De homo sapiens a homo deus
De homo sapiens a homo deusDe homo sapiens a homo deus
De homo sapiens a homo deus
 
Inducción al Sistema de Posgrado y MIGA
Inducción al Sistema de Posgrado y MIGAInducción al Sistema de Posgrado y MIGA
Inducción al Sistema de Posgrado y MIGA
 

El Juego TicTacToe (Gato) mediante Arboles de Decisiones

  • 1. Análisis y Simulación de Decisiones José Enrique Alvarez Estrada Basado en un material elaborado por el Prof. Luigi Ceccaroni
  • 2. Juegos La teoría de juegos es un área de la matemática aplicada que utiliza modelos para estudiar interacciones en estructuras formalizadas de incentivos (los llamados juegos) y llevar a cabo procesos de decisión
  • 3. Juegos • Los juegos más simples que se estudian en Toma de Decisiones son aquellos: – De suma cero (lo que uno gana, el otro lo pierde y viceversa) – De dos jugadores (jugador MAX, jugador MIN) – Por turnos – De información perfecta (ajedrez, damas, tres en raya, etc.) – O de información imperfecta (poker, stratego, bridge...) – Deterministas
  • 4. Juegos • Los juegos son interesantes porque son demasiado difíciles de resolver. • El ajedrez, por ejemplo, tiene un factor de ramificación promedio de 35 y los juegos van a menudo a 50 movimientos por cada jugador: – grafo de búsqueda: aproximadamente 1040 nodos distintos – árbol de búsqueda: 35100 o 10154 nodos • Como en el mundo real, se requiere de tomar alguna decisión (la jugada) cuando es infactible calcular la decisión óptima.
  • 5. Decisiones óptimas en juegos • Un juego puede definirse formalmente mediante: – Un estado inicial – Una función sucesor, que devuelve una lista de pares (movimiento, estado) – Una prueba terminal, que determina cuándo termina el juego (por estructura o propiedades o función utilidad) – Una función utilidad 5
  • 7. Búsqueda exhaustiva • Aproximación trivial: generar todo el árbol de jugadas. • Se etiquetan las jugadas terminales, dependiendo de si gana MAX o MIN, con un valor de utilidad de, por ejemplo, “+1” o “-1”. • El objetivo es encontrar un conjunto de movimientos accesible que dé como ganador a MAX. • Se propagan los valores de las jugadas terminales de las hojas hasta la raíz. • Incluso un juego simple como tic-tac-toe es demasiado complejo para dibujar el árbol completo
  • 10. Búsqueda exhaustiva • Aproximación heurística: definir una función que nos indique lo cerca que estamos de una jugada ganadora (o perdedora). • En esta función interviene información del dominio. • Esta función no representa ningún coste, ni es una distancia en pasos. • El algoritmo busca con profundidad limitada. • Cada nueva decisión por parte del adversario implicará repetir parte de la búsqueda.
  • 11. Ejemplo: tic-tac-toe e = PMAX - PMIN donde: – e = función utilidad – PMAX = número de filas, columnas y diagonales completas disponibles para MAX – PMIN = número de filas, columnas y diagonales completas disponibles para MIN • MAX juega con ✘ y desea maximizar e • MIN juega con O y desea minimizar e • Valores absolutos altos de e: buena posición para el que tiene que mover • Controlar las simetrías • Utilizar una profundidad de parada (en el ejemplo: 2)
  • 14. tic-tac-toe: jugada #1 juega MIN 6-5=1
  • 17. tic-tac-toe: jugada #1 6-5=1 5-5=0 6-5=1 5-5=0
  • 18. tic-tac-toe: jugada #1 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1
  • 19. tic-tac-toe: jugada #1 MIN = -1 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1
  • 20. tic-tac-toe: jugada #1 juega MAX MIN = -1 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1
  • 21. tic-tac-toe: jugada #1 MIN = -1 juega MIN 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1
  • 22. tic-tac-toe: jugada #1 MIN = -1 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2
  • 23. tic-tac-toe: jugada #1 MIN = -1 MIN = 1 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2
  • 24. tic-tac-toe: jugada #1 juega MAX MIN = -1 MIN = 1 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2
  • 25. tic-tac-toe: jugada #1 MIN = -1 MIN = 1 juega MIN 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2 5-6=-1
  • 26. tic-tac-toe: jugada #1 MIN = -1 MIN = 1 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2 5-6=-1 6-6=0
  • 27. tic-tac-toe: jugada #1 MIN = -1 MIN = 1 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2 5-6=-1 6-6=0 6-6=0
  • 28. tic-tac-toe: jugada #1 MIN = -1 MIN = 1 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2 5-6=-1 6-6=0 6-6=0 5-6=-1
  • 29. tic-tac-toe: jugada #1 MIN = -1 MIN = 1 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2 5-6=-1 6-6=0 6-6=0 5-6=-1 4-6=-2
  • 30. tic-tac-toe: jugada #1 MIN = -1 MIN = 1 MIN = -2 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2 5-6=-1 6-6=0 6-6=0 5-6=-1 4-6=-2
  • 31. tic-tac-toe: jugada #1 MIN = -1 MIN = 1 MIN = -2 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2 5-6=-1 6-6=0 6-6=0 5-6=-1 4-6=-2
  • 32. tic-tac-toe: jugada #1 MAX = 1 MIN = -1 MIN = 1 MIN = -2 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2 5-6=-1 6-6=0 6-6=0 5-6=-1 4-6=-2
  • 33. tic-tac-toe: jugada #1 MAX = 1 MIN = -1 MIN = 1 MIN = -2 Por tanto, la mejor 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2 jugada de MAX es 5-6=-1 6-6=0 6-6=0 5-6=-1 4-6=-2
  • 34. tic-tac-toe: jugada #1 MAX = 1 MIN = -1 MIN = 1 MIN = -2 6-5=1 5-5=0 6-5=1 5-5=0 4-5=-1 5-4=1 6-4=2 5-6=-1 6-6=0 6-6=0 5-6=-1 4-6=-2 tras lo cual MIN debería jugar
  • 43. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 4-2=2 3-2=1
  • 44. tic-tac-toe: jugada #2 4-2=2 3-2=1 juega 5-2=3 MAX MIN = 0 2-2=0 4-2=2 3-2=1
  • 45. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 juega 4-2=2 MIN 3-2=1 4-3=1
  • 46. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 4-2=2 3-2=1 4-3=1 3-3=0
  • 47. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2
  • 48. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0
  • 49. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1
  • 50. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 51. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 MIN = 0 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 52. tic-tac-toe: jugada #2 4-2=2 juega MAX 3-2=1 5-2=3 MIN = 0 2-2=0 MIN = 0 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 53. tic-tac-toe: jugada #2 4-2=2 3-2=1 juega 5-2=3 MIN MIN = 0 2-2=0 MIN = 0 4-2=2 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 54. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 MIN = 0 4-2=2 4-2=2 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 55. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 56. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 3-2=1 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 57. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 3-2=1 4-2=2 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 58. tic-tac-toe: jugada #2 4-2=2 3-2=1 5-2=3 MIN = 0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 3-2=1 4-2=2 4-2=2 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 59. tic-tac-toe: jugada #2 4-2=2 3-2=1 MIN = 1 5-2=3 MIN = 0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 3-2=1 4-2=2 4-2=2 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 60. tic-tac-toe: jugada #2 4-3=1 4-2=2 MAX = 1 3-2=1 MIN = 1 5-2=3 MIN = 0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 3-2=1 4-2=2 4-2=2 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 61. tic-tac-toe: jugada #2 4-3=1 4-2=2 MAX = 1 4-3=1 3-2=1 MIN = 1 5-2=3 MIN = 0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 3-2=1 4-2=2 4-2=2 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 62. tic-tac-toe: jugada #2 4-3=1 4-2=2 MAX = 1 4-3=1 3-2=1 MIN = 1 3-3=0 5-2=3 MIN = 0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 3-2=1 4-2=2 4-2=2 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 63. tic-tac-toe: jugada #2 4-3=1 4-2=2 MAX = 1 4-3=1 3-2=1 MIN = 1 3-3=0 5-2=3 MIN = 0 3-3=0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 3-2=1 4-2=2 4-2=2 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 64. tic-tac-toe: jugada #2 4-3=1 4-2=2 MAX = 1 4-3=1 3-2=1 MIN = 1 3-3=0 5-2=3 MIN = 0 3-3=0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 3-2=1 4-2=2 4-2=2 3-3=0 4-2=2 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 65. tic-tac-toe: jugada #2 4-3=1 4-2=2 MAX = 1 4-3=1 3-2=1 MIN = 1 3-3=0 5-2=3 MIN = 0 3-3=0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 3-2=1 4-2=2 4-2=2 3-3=0 4-2=2 3-3=0 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 66. tic-tac-toe: jugada #2 MIN = 0 4-3=1 4-2=2 MAX = 1 4-3=1 3-2=1 MIN = 1 3-3=0 5-2=3 MIN = 0 3-3=0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 3-2=1 4-2=2 4-2=2 3-3=0 4-2=2 3-3=0 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1
  • 67. tic-tac-toe: jugada #2 MIN = 0 4-3=1 4-2=2 MAX = 1 4-3=1 3-2=1 MIN = 1 3-3=0 5-2=3 MIN = 0 3-3=0 2-2=0 MIN = 0 4-2=2 4-2=2 5-2=3 3-2=1 4-2=2 4-2=2 3-3=0 4-2=2 3-3=0 3-2=1 4-3=1 3-3=0 5-3=2 3-3=0 4-3=1 4-3=1 0 0 0 La mejor jugada de MAX es pues X tras lo cual MIN podría jugar X X X
  • 68. Ejemplo: tic-tac-toe X 0 0 X X 0 0 0 0 2-1=1 X 0 X X MIN = 1 X X MAX = 1 0 0 XX X 0 0 X X 3-1=2 MIN = -∞∞ X 0 0 0 X 0 0 X X 0 0 XX X 0 MIN = -∞∞ X 0 0 2-1=1 XX 0 0 X X 0 X X X X 3-1=2 MIN = -∞∞ MIN = -∞∞ X 0 0 La mejor jugada de MAX es pues: X X • Por convención: – las jugadas ganadoras se evalúan a “+∞∞” – las jugadas perdedoras se evalúan a “-∞∞”
  • 69. Minimax • Valor-Minimax(n): utilidad para MAX de estar en el estado n asumiendo que ambos jugadores jueguen óptimamente.
  • 70. Minimax • Valor-Minimax(n): – Utilidad(n), si n es un estado terminal – maxs∈Sucesores(n) Valor-Minimax(s), si n es un estado MAX – mins∈Sucesores(n) Valor-Minimax(s), si n es un estado MIN
  • 71. Algoritmo minimax • Calcula la decisión minimax del estado actual. • Usa un cálculo simple recurrente de los valores minimax de cada estado sucesor. • La recursión avanza hacia las hojas del árbol. • Los valores minimax retroceden por el árbol cuando la recursión se va deshaciendo.
  • 72. Algoritmo minimax A B • El algoritmo primero va hacia abajo a los tres nodos izquierdos y utiliza la función Utilidad para descubrir que sus valores son 3, 12 y 8.
  • 73. Algoritmo minimax A B • Entonces el algoritmo toma el mínimo de estos valores, 3, y lo devuelve como el valor del nodo B.
  • 74. Algoritmo minimax • Realiza una exploración primero en profundidad completa del árbol de juegos. • Si la profundidad máxima del árbol es m, y hay b movimientos legales en cada punto, entonces la complejidad : – en tiempo es O(bm); – en espacio es • O(bm) si se generan todos los sucesores a la vez; • O(m) si se generan los sucesores uno por uno. • Juegos reales: los costos de tiempo son inaceptables, pero este algoritmo sirve como base para el primer análisis matemático y para algoritmos más prácticos.
  • 75. Algoritmo minimax función Decisión-Minimax(estado) devuelve una acción variables de entrada: estado, estado actual del juego v ← Max-Valor(estado) devolver la acción de Sucesores(estado) con valor v función Max-Valor(estado) devuelve un valor utilidad si Test-Terminal(estado) entonces devolver Utilidad (estado) v ← -∞ para un s en Sucesores(estado) hacer v ← Max(v, Min-Valor(s)) devolver v función Min-Valor(estado) devuelve un valor utilidad si Test-Terminal(estado) entonces devolver Utilidad (estado) v←∞ para un s en Sucesores(estado) hacer v ← Min(v, Max-Valor(s)) devolver v
  • 76. Poda alfa-beta • Problema de la búsqueda minimax: el número de estados que tiene que examinar es exponencial con el número de movimientos. • El exponente no se puede eliminar, pero se puede dividir en la mitad. • Es posible calcular la decisión minimax correcta sin mirar todos los nodos en el árbol. • La poda alfa-beta permite eliminar partes grandes del árbol, sin influir en la decisión final.
  • 77. Minimax con poda α-β a a b c b c e = min(-1, ?) = -1 0.03 e= max (-0.1, -0.05) = -0.05 d g -1 (gana MIN) ? ? No tiene sentido seguir e f buscando los otros -0.1 -0.05 descendientes de c. En c: e= min(-0.05, v(g)) por lo tanto en a: e = max(0.03, min(-0.05, v(g))) = 0.03 Se pueden pues podar los nodos bajo g; no aportan nada. El valor de la raíz y la decisión minimax son independientes de los valores de las hojas podadas.
  • 78. Minimax con poda α-β max a e(e) = min(-0.1,v(g)) Como la rama b ya da un 0.03, min Cualquier cosa peor no sirve b c => No hay que explorar g 0.03 e(d) = max(e(e), h) max d i => Sí hay que explorar h ... min e h La búsqueda minimax es primero en profundidad: en max f g cualquier momento sólo se -0.1 consideran los nodos a lo largo de un camino del árbol.
  • 79. Poda alfa-beta • Los dos parámetros alfa y beta describen los límites sobre los valores que aparecen a lo largo del camino: – α = el valor de la mejor opción (el más alto) que se ha encontrado hasta el momento en cualquier punto del camino, para MAX – β = el valor de la mejor opción (el más bajo) que se ha encontrado hasta el momento en cualquier punto del camino, para MIN • La búsqueda alfa-beta actualiza el valor de α y β según se va recorriendo el árbol y termina la recursión cuando encuentra un nodo peor que el actual valor α o β correspondiente.
  • 85. Poda alfa-beta MAX {α, β} Si Vi ≥ β poda β Si Vi > α modificar α Vi Retornar α MIN {α, β} Si Vi ≤ α poda α Si Vi < β modificar β Vi Retornar β Las cotas α y β se transmiten de padres a hijos de 1 en 1 y en el orden de visita de los nodos.
  • 86. Minimax con poda α-β Funcion valorMax (g,α,β) retorna entero Funcion valorMin (g,α,β) retorna entero Si estado_terminal(g) entonces Si estado_terminal(g) entonces retorna(evaluacion(g)) retorna(evaluacion(g)) si no si no Para cada mov en movs_posibles(g) Para cada mov en movs_posibles(g) α=max(α,valorMin(aplicar(mov,g),α,β)) β=min(β,valorMax(aplicar(mov,g),α,β)) si α≥β entonces retorna(β) si α≥β entonces retorna(α) fPara fPara retorna(α) retorna(β) fsi fsi fFuncion fFuncion El recorrido se inicia llamando a la función valorMax con α=-∞ y β=+∞. En la función valorMax α es el valor que se actualiza. En la función valorMin β es el valor que se actualiza.
  • 87. A {alpha = -∞, beta = +∞} A {3, +∞} {-∞, +∞} {-∞, 3} B C 3 {-∞, +∞} B C {-∞, 3} D E D E 3 3 5 A {3, +∞} 3 B C {3, +∞} {3, +∞} D F G H {3, +∞} I J Se puede podar I ya que es un nodo min y K 0 L el valor de v(K) = 0 es < α = 3
  • 88. A {3, +∞} A {3, +∞} B C {3, +∞} 3 B C {3, 5} 5 F G H 3 D {3, +∞} 5 F {3, 5} G H D J 5 4 5 J M 7 N A Podemos podar G pues es C 4 B 3 un nodo max y el valor de D 5 F H 4 M (7) > β = 5 5 J