Inteligencia Artificial Búsqueda entre adversarios Primavera 2008 profesor: Luigi Ceccaroni.

Slides:



Advertisements
Presentaciones similares
INGENIERIA INFORMATICA Y BUSQUEDAS CON ADVERSARIOS
Advertisements

Búsqueda en árboles de juego
INTELIGENCIA ARTIFICIAL
Teoría de juegos: Tema 1 Rafael Salas febrero de 2013
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Inteligencia Artificial
Inteligenica Artificial I Alejandro Permingeat Inteligencia Artificial de Russell y Norving 1° edición 1996 Parte II Capítulo V.
IBD Clase 7.
Tema 3: Juegos bipersonales
Conceptos Hoja de cálculo. Concepto.
Inteligencia Artificial Búsqueda informada y exploración
Inteligencia Artificial
ESTRUCTURAS DE DATOS AVANZADAS
Cap 4 Búsqueda Heurística
Búsqueda Informada Heurísticas.
Inteligencia Artificial Búsqueda informada y exploración
Inteligencia Artificial Búsqueda entre adversarios
M.C. Juan Carlos Olivares Rojas
BUSQUEDA EN JUEGOS DE ADVERSARIO Sección 1-4
Solución de problemas por búsqueda inteligente
Equipo # 1 Norma Pimentel Wendy Hernandez Julisa Javier Mario Tristán.
Inteligencia Artificial Resolver problemas mediante búsqueda
UNIVERSIDAD COMPLUTENSE DE MADRID D epartamento de Fundamentos del Análisis Económico I Teoría de juegos: Tema 2 Rafael Salas febrero de 2005.
Inteligencia Artificial Resolver problemas mediante búsqueda
Decisiones bajo Incertidumbre Teoría de Juegos
Estructuras de Datos MC Beatriz Beltrán Martínez.
Trabajo presentado por: LUIS FERNANDO OBANDO ING
Optimización Combinatoria usando Algoritmos Evolucionistas Problemas de Optimización. Idea: Encontrar una solución "factible" y "óptima" de acuerdo a algún.
Capítulo 4 BUSQUEDA INFORMADA.
EL PODER DE SOLVER.
Solución de problemas por Búsqueda
Problemas de Decisión y Optimización
Agentes de resoluciones d problemas Parte I. Un agente puede adoptar una meta o un propósito para satisfacer.
Estructura de Datos y Algoritmos
Diseño y análisis de algoritmos
Parte I. Estructuras de Datos.
Diseño y análisis de algoritmos
Parte II. Algorítmica. 3. Algoritmos voraces.
complejidad de un problema.
Algoritmo Poda Alpha-Beta
METODOS DE BUSQUEDA INFORMADOS CAPITULO 5
Sistemas Inteligentes Distribuidos Sistemas Inteligentes Distribuidos Sesión 13 L. Enrique Sucar / Marco López Sesión 13 L. Enrique Sucar / Marco López.
Sistemas Inteligentes Distribuidos Sistemas Inteligentes Distribuidos Sesión 8 Eduardo Morales / L. Enrique Sucar Sesión 8 Eduardo Morales / L. Enrique.
Backtracking 1. Método general. 2. Análisis de tiempos de ejecución.
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
1 Introducción a la Computación para Biólogos, Bioquímicos, Médicos, etc.
Programación Lineal Entera Antonio H. Escobar Z Universidad Tecnológica de Pereira – Colombia Posgrado en Ingeniería Maestría en Ingeniería Eléctrica.
Parte I. Estructuras de Datos.
Análisis y Diseño de Algoritmos
TPE 1 - Sistemas de Producción: Rolling Cubes Sistemas de Inteligencia Artifcial Bergez, Brasca y García.
Estructura de Datos M.C. José Andrés Vázquez Flores FCC/BUAP
. Juegos.
Parte I. Estructuras de Datos.
INTRODUCCIÓN A JUEGOS (BÚSQUEDA CON ADVERSARIOS)
Toribio Sarmiento Miguel Sesarego Cruz Rosmery. Desde la aparición de las civilizaciones, los juegos han ocupado la atención de las facultades intelectuales.
UNIDAD 2 Grafos Árboles abarcadores mínimos Caminos más cortos.
ARBOLES GENERALIZADOS
Resolución Gráfica de PPL
Inteligencia Artificial
Resolución de Problemas Método Gráfico
Aplicación JAVA implementando Arboles de Decisión
Árboles Equilibrados Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015.
TEMA: DECISIONES BAJO RIESGO –TEORIA DE JUEGOS Ing. Larry D. Concha B.
Matemáticas Discretas MISTI
 Consiste en la elección del mejor movimiento para cada jugador, es decir la máquina para quien programaremos el sistema tratará de maximizar las oportunidades.
Búsqueda de ascensión de colinas (BLv)
Búsqueda con Adversarios Capítulo 6 Sección 1 – 4.
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.
Transcripción de la presentación:

Inteligencia Artificial Búsqueda entre adversarios Primavera 2008 profesor: Luigi Ceccaroni

2 Juegos En los entornos multiagente (cooperativos o competitivos), cualquier agente tiene que considerar las acciones de otros agentes. La imprevisibilidad de estos otros agentes puede introducir muchas contingencias en el proceso de resolución de problemas. Los entornos competitivos, en los cuales los objetivos de los agentes están en conflicto, dan ocasión a problemas de búsqueda entre adversarios, a menudo conocidos como juegos.

3 Juegos La teoría matemática de juegos, una rama de la economía, ve a cualquier entorno multiagente como un juego. Los “juegos” que se tratan en IA son una clase más especializada: –de suma cero –de dos jugadores (jugador MAX, jugador MIN) –por turnos –de información perfecta (ajedrez, damas, tres en raya...) vs. información imperfecta ( poker, stratego, bridge...) –deterministas 3

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 nodos distintos –árbol de búsqueda: o nodos Los juegos, como el mundo real, requieren la capacidad de tomar alguna decisión (la jugada) cuando es infactible calcular la decisión óptima. 4

5 Decisiones óptimas en juegos Un juego puede definirse formalmente como una clase de problemas de búsqueda con los componentes siguientes: –El estado inicial –Una función sucesor, que devuelve una lista de pares (movimiento, estado) –Un test terminal, que determina cuándo termina el juego (por estructura o propiedades o función utilidad) –Una función utilidad 5

Búsqueda entre adversarios

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 de juegos entero.

Búsqueda entre adversarios

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 (función utilidad) = número de filas, columnas y diagonales completas disponibles para MAX - número de filas, columnas y diagonales completas disponibles para MIN MAX juega con X y desea maximizar e MIN juega con  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) X X X0X0 X0X0 X 0 X 0 X X 0 X 0 0 X X 0 X 0 X 0 X 0 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 MIN = -1 MIN = 1MIN = -2 MAX = 1 La mejor jugada de MAX es pues tras lo cual MIN podría jugar X 0 X

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

0 0 X 0 0 X X X X 0 0 X 0 0 X 0 0 X 0 0 X X X X X 0 0 X X 0 X 0 0 X X 0 X 0 0 X 0 X 2-1=1 3-1=2 2-1=1 3-1=2 MIN = 1 MIN = - ∞  MIN = -  ∞ MIN = - ∞  MAX = 1 La mejor jugada de MAX es pues: X 0 0 X Ejemplo: tic-tac-toe 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 –max s ∈ Sucesores(n) Valor-Minimax(s), si n es un estado MAX –min s ∈ 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 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. A B

Algoritmo minimax Entonces el algoritmo toma el mínimo de estos valores, 3, y lo devuelve como el valor del nodo B. A 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(b m ); –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 cb e = min(-1, ?) = (gana MIN) ? No tiene sentido seguir buscando los otros descendientes de c. acbgfde e= max (-0.1, -0.05) = 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.

a cb id 0.03 he gf -0.1 max min max min max e(e) = min(-0.1,v(g)) Como la rama b ya da un 0.03, Cualquier cosa peor no sirve => No hay que explorar g e(d) = max(e(e), h) => Sí hay que explorar h... La búsqueda minimax es primero en profundidad: en cualquier momento sólo se consideran los nodos a lo largo de un camino del árbol. Minimax con poda α-β

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

MAX ViVi {α, β} Si Vi ≥ β poda β Si Vi > α modificar α Retornar α {α, β} Si Vi ≤ α poda α Si Vi < β modificar β Retornar β MIN ViVi Las cotas α y β se transmiten de padres a hijos de 1 en 1 y en el orden de visita de los nodos. Poda alfa-beta

Minimax con poda α-β Funcion valorMax (g,α,β) retorna entero Si estado_terminal(g) entonces retorna(evaluacion(g)) si no Para cada mov en movs_posibles(g) α=max(α,valorMin(aplicar(mov,g),α,β)) si α≥β entonces retorna(β) fPara retorna(α) fsi fFuncion Funcion valorMin (g,α,β) retorna entero Si estado_terminal(g) entonces retorna(evaluacion(g)) si no Para cada mov en movs_posibles(g) β=min(β,valorMax(aplicar(mov,g),α,β)) si α≥β entonces retorna(α) fPara retorna(β) fsi 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 CB ED 3 {-∞, +∞} A CB ED {-∞, 3} A CB D 3 HF {3, +∞} G JI LK 0 Se puede podar I ya que es un nodo min y el valor de v(K) = 0 es < α = 3 {alpha = -∞, beta = +∞} {-∞, 3} {-∞, +∞} {3, +∞}

AC B D 3 HF GJ 5 5 A C BD 3 HF GJ {3, 5} 5 5 NM 7 Podemos podar G pues es un nodo max y el valor de M (7) > β = 5 A C BD 3 HF 4 J 4 {3, 5} 5 5 4