# Otelo en computadoras

Otelo en Computadoras se refiere a un sistema computacional que incluye hardware y software capaz de jugar Otelo.

## Viabilidad

Existen muchos programas de Otelo como NTest, Saio, Edax, Cassio, Pointy Stone, Herakles, WZebra y Logistello que pueden ser descargados gratuitamente de Internet y que ejecutados en una Computadora personal actual pueden derrotar fácilmente a los mejores jugadores humanos. Los mejores programas pueden prever hasta 30 movimientos antes de cada jugada (dado un tiempo razonable) en una computadora personal común.

## Estrategias de Búsqueda

Los programas de Otelo buscan los posibles movimientos legales en un Árbol de Juego.. En teoría examina todas las posiciones/nodos, donde cada movimiento de un jugador es llamado una jugada ("ply"). Esta búsqueda continúa hasta que se alcance cierta profundidad máxima o hasta que el programa determine que una posición final “hoja” ha sido alcanzada. Una implementación muy simple de esta aproximación, conocida como Minimax o Negamax, solo puede buscar a una profundidad pequeña en un tiempo razonable, por tanto se han elaborado varios métodos para acelerar la búsqueda de buenos movimientos. Estos se basan en Poda alfa-beta, Negascout, MTD-f, NegaC*. Para reducir el tamaño del árbol de búsqueda también se utilizan varias heurísticas como: ordenamiento de los tableros hijos, tablas de transposición, y búsqueda selectiva. Para acelerar la búsqueda en máquinas con múltiples procesadores o núcleos, se puede implementar una “búsqueda en paralelo”. Se han realizado varios experimentos con el juego Otelo, como pueden ser o APHID. En programas recientes, el YBWC parece ser la aproximación preferida.

## Técnicas de Evaluación

Existen 3 paradigmas diferentes para crear funciones de evaluación.

### Tablas de Posiciones (Disk-Square tables)

Las casillas tienen diferentes valores. Por ejemplo, las esquinas son buenas y las casillas adyacentes a las esquinas son malas. Sin tener en cuenta la simetría, existen 10 posiciones diferentes en el tablero, y a cada una de ellas se le asigna un valor para cada una de las tres posibilidades: disco negro, disco blanco y vacío. Una aproximación más sofisticada es asignar diferentes valores a cada posición durante las diferentes etapas del juego; por ejemplo, las esquinas son más importantes en la apertura y en el principio del medio-juego que en el final.

### Basadas en movilidad (Mobility-based)

La mayoría de los jugadores humanos se esfuerzan por maximizar la movilidad (número de movimientos posibles) y minimizar los discos frontera (discos adyacentes a una casilla vacía). Tanto la movilidad del jugador como la del oponente, así como la movilidad potencial son fácilmente calculadas, y estas incrementan considerablemente la robustez en juego del jugador. La mayoría de los programas tienen conocimientos sobre configuraciones de bordes y esquinas, y tratan de minimizar el número de discos durante el principio del medio-juego, estrategia también usada por jugadores humanos.

### Basadas en Patrones (Pattern-based / Pattern coefficients)

La maximización de la movilidad y la minimización de la frontera se pueden separar en configuraciones locales que pueden unificarse luego; la implementación usual es evaluar cada configuración de fila, columna, diagonal y esquina por separado y luego unificar los valores, muchos patrones diferentes deben ser evaluados. El proceso de asignar valores a cada configuración se realiza manteniendo una extensa base de datos de juegos entre jugadores expertos y calculando estadísticas de cada configuración en cada una de las etapas de cada juego almacenado. La opción más común para predecir la diferencia de discos final, utiliza una medida ponderada de la diferencia de discos donde el ganador recibe un plus correspondiente a un número de discos.

## Libro de aperturas

Los libros de aperturas ayudan a los programas proveyéndolos de aperturas consideradas buenas para contrarrestar a aperturas pobres. Todos los programas fuertes usan libros de aperturas y los actualizan automáticamente después de cada juego. Consiste en revisar todas las posiciones de todos los juegos en la base de datos y determinar la mejor jugada no utilizada en ninguno de los juegos de la base de datos. Las tablas de transposición se utilizan para almacenar las posiciones previamente revisadas para evitar revisarlas nuevamente. Esto consume tiempo puesto que se debe realizar una búsqueda en profundidad por cada posición, pero una vez hecho, actualizar el libro sobre la marcha es sencillo. Después de cada juego todas las nuevas posiciones son revisadas en busca de la mejor desviación.

## Otras optimizaciones

Mejor hardware y procesadores adicionales pueden mejorar las habilidades de los programas que juegan Otelo, como mismo las búsquedas más profundas conllevan a programas más fuertes.

## Resolviendo Othello

Completamente resuelto para tableros de 4x4 y 6x6, con jugadores infalibles el segundo jugador (blancas) siempre gana. Aunque no ha sido resuelto matemáticamente, está prácticamente resuelto para el tablero de 8x8 (el estándar). Aunque el análisis computacional muestra miles de formas de quedar en tablas, ninguna de ellas ha sido completamente demostrada.

### Otelo 4 x 4

Otelo 4x4 tiene un árbol de juego considerablemente pequeño y ha sido resueltos en menos de un segundo por varios de los programas más simples de Otelo que utilizan Minimax, y que generan todas las posibles posiciones (casi 10 millones). Los juegos perfectos siempre terminan con en segundo jugador (blancas) ganando por 8.

### Otelo 6 x 6

Ha sido resuelto en menos de 100 horas por los programas más simples que utiliza minimax, generando las casi 3.6 millones de posiciones posibles. Los juegos perfectos siempre terminan con el segundo jugador (blancas) ganando por 4.

### Otelo 8 x 8

El tamaño del árbol de juego se estima sea de 10$^{54}$ nodos y el número de posiciones legales menos de 10$^{28}$. Aunque no ha sido matemáticamente resuelto aún, se podría encontrar una solución utilizando cómputo intensivo con los mejores programas en hardware paralelizado, o a través de cómputo distribuido. Algunos de los mejores programas llevan años expandiendo sus libros en un conjunto de computadoras. Como resultado, muchas líneas son en la práctica tablas, o gana alguno de los jugadores. Sobre los 3 aperturas principales: diagonal, perpendicular y paralela; al parecer las aperturas perpendicular y diagonal conllevan a tablas, mientras que la paralela conlleva a una victoria de las negras. La apertura en paralelo da una fuerte ventaja a las negras para ganar siempre. Aunque aún no ha sido probado, prácticamente el juego acaba en tablas si ambos jugadores juegan perfecto. En juegos estándares, usando sus libros de aperturas, los mejores programas pierden en menos de 1% de las ocasiones.

### Otelo 10 x 10

Tiene un medio-juego más largo y el primer jugador (negras) tiene más posibilidades de ganar. El análisis computacional muestra que es muy probable que el juego termine en tablas si ambos jugadores juegan perfectamente, sin embargo es considerablemente poco profundo y se necesitan más cálculos. La complejidad del árbol de juego es muy alta, se estima que sea de 10$^{90}$, con un estimado de posiciones legales de 10$^{44}$.

## Cronología de Otelo en Computadoras

1978: Nintendo lanza el Videojuego Computer Othello en arcade.
1980: El programa Otelo Moor (escrito por by Mike Reeve y David Levy) ganó uno de los 6 juegos de un Torneo contra el campeón mundial Hiroshi Inoue.
Early 1980s: Paul Rosenbloom desarrolló el programa Otelo IAGO. Cuando IAGO de enfrentó a The Moor, IAGO result major capturando piezas permanentemente, y limitando la movilidad del oponente
Late 1980s: Kai-Fu Lee y Sanjoy Mahajan crearon el programa Otelo BILL, que era similar a IAGO pero incorporaba aprendizaje Bayesiano. BILL indiscutiblemente derrotó a IAGO.
1992: Michael Buro comenzó a trabajar en el programa Otelo Logistello. Las técnicas de búsqueda, función de evaluación, y la base de conocimiento de patrones de Logistello eran mejores que la de los programas anteriores. Logistello perfeccionó su juego jugando 100,000 juegos contra sí mismo.
1997: Logistello ganó todos los juegos de un torneo de 6 contra el campeón mundial Takeshi Murakami. Aunque no existía mucha duda de que los programas Otelo eran mejores que los humanos, habían pasado 17 años desde el último enfrentamiento entes una computadora y un campeón mundial actual. Después de 1997 se disipó la duda: Logistello era significativamente mejor que cualquier jugador humano.
1998: Michael Buro retiró Logistello. El interés investigativo disminuyó un tanto, pero algunos programas como Ntest, Saio, Edax, Cassio, WZebra y Herakles, continuaron desarrollándose.
2004: Ntest se convirtió en el mejor programa, significativamente mejor que Logistello.
2005: Ntest, Saio, Edax, Cyrano y WZebra, ya eran significativamente mejores que Logistello. Ntest y WZebra se retiraron.
2011: Saio, Edax and Cyrano, llegaron a ser mucho más rápidos que Logistello y otros programas.

## Lista de los principales programas de Otelo/Reversi

* Saio (Saio) por Benedetto Romano
* Cyrano por Bruno Causse
* Edax (Edax Archivado el 6 de abril de 2013 en Wayback Machine.) por Richard Delorme
* Cassio (Cassio) por Stéphane Nicolet
* Ymatioun por Youri Matiounine
* Pirate por Roger H. Hughston
* NTest (Ntest) por Chris Welty
* WZebra (WZebra) por Gunnar Andersson
* Logistello por Michael Buro
* Pointy Stone (Pointy Stone) por Jonathan Kreuzer
* Herakles (Herakles) por Kostas Tournavitis - el mejor programa de Otelo para 10x10
* Tothello (Tothello) por F. Pittner - el mejor programa de Otelo para 4x4 y 6x6
* Iagno (Iagno) GNOME-Versión de Reversi (Open-Source)
* Daisy Reversi (Daisy Reversi) por Pavel Matlash - el mejor programa de Otelo para 12x12, 14x14, 16x16, 18x18, 20x20, 22x22 y 24x24
* Cyrano (Cyrano java applet) por Bruno Causse

## Sitios relacionados

* Ajedrez por computadora