Algoritmo Minimax

ALGORITMO MINIMAX Historia Aunque existen evidencias de que Charles Babbage ya había trabajado antes sobre una idea simi

Views 47 Downloads 2 File size 402KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

ALGORITMO MINIMAX Historia Aunque existen evidencias de que Charles Babbage ya había trabajado antes sobre una idea similar,1 fue el matemático francés Émile Borel el primero en ofrecer en 1921 un tratamiento riguroso a los juegos competitivos y en estudiar las estrategias aplicables a los juegos de suma cero.23 Sin embargo suele atribuirse a John von Neumann el principal mérito de la concepción del principio minimax, ya que fue él quien, en su artículo de 1928 «Zur Theorie der Gesellschaftsspiele» («Sobre la teoría de los juegos de sociedad») publicado en la revista Mathematische Annalen,4 puso las bases de la moderna teoría de juegos y probó el teorema fundamental del minimax, por el que se demuestra que para juegos de suma cero con información perfecta entre dos competidores existe una única solución óptima.

MINIMAX ES:    

Algoritmo de decisión para minimizar la pérdida máxima aplicada en juegos de adversarios Información completa (cada jugador conoce el estado del otro) Elección del mejor movimiento para cada jugador, suponiendo que el contrincante escogerá el peor. El espacio de estados se representa mediante árboles alternados, donde:

1. Nodo: Representa una situación del juego. 2. Sucesores de un nodo: Situaciones del juego a las que se accede por movimientos legales aplicando sus reglas. 3. Nivel: Contiene todas las situaciones posibles para uno de los jugadores.  1. 2. 3. 4.

El algoritmo Minimax es un procedimiento recursivo y el corte de la recursión está dado por alguna de las siguientes condiciones: Gana algún jugador Se han explorado N capas, siendo N el límite establecido. Se ha agotado el tiempo de exploración. Se ha llegado a una situación estática donde no hay grandes cambios de un nivel a otro.

Pasos del algoritmo minimax: 1. Generación del árbol de juego. Se generarán todos los nodos hasta llegar a un estado terminal. 2. Cálculo de los valores de la función de utilidad para cada nodo terminal. 3. Calcular el valor de los nodos superiores a partir del valor de los inferiores. Según nivel si es MAX o MIN se elegirán los valores mínimos y máximos representando los movimientos del jugador y del oponente, de ahí el nombre de minimax. 4. Elegir la jugada valorando los valores que han llegado al nivel superior.

NetBeans es un entorno de desarrollo gratuito y de código abierto que en el momento de escribir este artículo está en su versión 7.4. Permite el uso de un amplio rango de tecnologías de desarrollo tanto para escritorio, como aplicaciones Web, o para dispositivos móviles. Da soporte a las siguientes tecnologías, entre otras: Java, PHP, Groovy, C/C++, HTML5, Además puede instalarse en varios sistemas operativos: Windows, Linux, Mac OS.

Historia Nos tenemos que remontar a 1996 e ir hasta Praga, en la república Checa, donde nace un proyecto llamado Xelfi en el ámbito universitario (Facultad de Matemáticas y Física). Se pretendía escribir un IDE para Java que se pareciera al que tenía el lenguaje Delphi (de ahí el nombre de Xelfi). El código fue escrito en Java, y se convirtió en el primero escrito en dicho lenguaje con la publicación de su primera pre-release en el año 1997.

Características Principales  







Asistentes para la creación y configuración de distintos proyectos, incluida la elección de algunos frameworks. Buen editor de código, multilenguaje, con el habitual coloreado y sugerencias de código, acceso a clases pinchando en el código, control de versiones, localización de ubicación de la clase actual, comprobaciones sintácticas y semánticas, plantillas de código, coding tips, herramientas de refactorización, y un largo etcétera. También hay tecnologías donde podemos usar el pulsar y arrastrar para incluir componentes en nuestro código. Simplifica la gestión de grandes proyectos con el uso de diferentes vistas, asistentes de ayuda, y estructurando la visualización de manera ordenada, lo que ayuda en el trabajo diario. Una vez que nos metemos en una clase java, por poner un ejemplo, se nos mostrarán distintas ventanas con el código, su localización en el proyecto, una lista de los métodos y propiedades (ordenadas alfabéticamente), también hay una vista que nos presenta las jerarquías que tiene nuestra clase y otras muchas opciones. Por supuesto personalizable según el gusto de cada usuario. Herramientas para depurado de errores: el debugger que incluye el IDE es bastante útil para encontrar dónde fallan las cosas. Podemos definir puntos de ruptura en la línea de código que nos interese, monitorizar en tiempo real los valores de propiedades y variables, se nos permite ir paso a paso, ejecutar un método de un tirón, o entrar dentro, en fin, las opciones típicas, pero que tan útiles son en el trabajo diario. Incluso podemos usar el debugger en caliente, conectándonos a él cuándo ya tenemos un proceso ejecutándose. Optimización de código: por su parte el Profiler nos ayuda a optimizar nuestras aplicaciones e intentar hacer que se ejecuten más rápido y con el mínimo uso de memoria. Podemos igualmente configurarlo a nuestro gusto, aunque por defecto, nos ofrece opciones bastante útiles. Lo importante es que podemos ver el comportamiento de nuestra aplicación y obtener indicadores e información de cómo y cuantos recursos







consume, cuantos objetos se crean, también podemos obtener capturas del estado del sistema en diferentes momentos (Snapshots) y compararlos entre sí. Acceso a base de datos: desde el propio Netbeans podemos conectarnos a distintos sistemas gestores de bases de datos, como pueden ser Oracle, MySql y demás, y ver las tablas, realizar consultas y modificaciones, y todo ello integrado en el propio IDE. Se integra con diversos servidores de aplicaciones, de tal manera que podemos gestionarlos desde el propio IDE: inicio, parada, arranque en modo debug, despliegues. Entre otros podemos usar Apache Tomcat, GlassFish, JBoss, WebLogic, Sailfin, Sun Java System Application Server. Es fácilmente extensible a través de plugins.