secret-of-blackjack

Los juegos de mesa son muchas veces la cama de pruebas para los programas de computadora. Por ejemplo, el ajedrez lleva unos 60 años de trabajo en cómputo, partiendo del artículo de Shannon del año 1950, en donde se planteaba lo que un programador debía hacerse para escribir un programa que jugara al ajedrez adecuadamente. Es increíble ese artículo porque en ese tiempo prácticamente nadie tenía computadoras accesibles y por otro, no podía nadie imaginarse la capacidad que las máquinas, incluso las caseras, llegarían a tener. Claude Shannon era un visionario.

Sin embargo, el ajedrez no es el único juego que se ha intentado resolver por computadora. Ya las damas están resueltas. El programa Chinook tiene una base de posiciones que contempla todas las posibles jugadas de ambos bandos. Las damas se resolvieron en el 2007 y si ambos jugadores hacen las mejores jugadas, el resultado final será el empate.

Otros juegos han llamado la atención de los investigadores, sobre todo aquellos en donde hay un elemento azaroso (y no como en el ajedrez y damas, en donde se trata de juegos de información cero, es decir, toda la información está en el tablero y no hay elementos externos a considerar), como por ejemplo el Backgammon o el Blackjack. En este caso, la situación cambia porque los dados, o las cartas, se dan en términos azarosos y entonces, hallar las estrategias adecuadas para ganar parece ser mucho más complejop en cierta medida.

Brian Benchoff ha trabajado mucho tiempo con algoritmos evolutivos, los cuales tratan por ejemplo, de generar oraciones usando letras al azar o colocando pixeles en una ventana para crear el cuadro de la Monalisao. Con esta idea ha escrito su propio algoritmo evolutivo para el blackjack. La idea es optimizar las decisiones que se toman y el blackjack es una buena idea por el número limitado de manos que se pueden dar aun jugador (32) y el número más limitado que el que reparte las cartas (dealer) puede tener (10).

Pero incluso con este bajo número de condiciones iniciales para el jugador y dealer, hay todavía 4.562 x 10^192 posibles combinaciones de manos, por lo que forzar a través de fuerza bruta una estrategia requeriría del poder de cómputo de muchísimas computadoras. Una manera más sencilla de atacar el problema es como Benchoff lo intentó, con algoritmos evolutivos, usando la biblioteca de Java Watchmaker.

Para cada generación (en el programa de Brian) se genera una malla de 32×10, en donde cada célula de la posible mano del jugador se confronta contra la mano del dealer. En cada celda la computadora pone ‘hit’, ‘stay’, o ‘double down’, jugando así miles de manos con esta estrategia. La mejor estrategia eventualmente aparece y es la que el propio Brian ha reconocido como una buena estrategia para jugar blackjack. De acuerdo a sus cálculos, con su estrategia podría ir a los casinos y salir con el 96% del dinero apostado.

Referencias:

graphsandwords blog