(En espera de edición ampliada y revisada: pendiente de publicación)

 

 

 

 

 

 

COMO PROGRAMAR Y JUGAR

CONTRA

EL AJEDREZ CIBERNÉTICO

 

 

&&&&&&&

&&&&&

&&

&

 

 

 

José Luis González Sanz

 

 

 

 

 

 

 

 

COMO  PRÓGRAMAR Y JUGAR CONTRA EL AJEDREZ CIBERNETICO

 

 

Autor:   José Luis González Sanz

 

 

 

 

 

I N D I C E :

 

 

 

1.-Introducción.

2.-Leyenda e historia de las maquinas pensantes.

            2.1.- El Turco

            2.2.- La maquina de Torres Quevedo

            2.3.-Las primeras computadoras de ajedrez

            2.4.-Las modernas computadoras de ajedrez

            2.5.-Los programas modernos de ajedrez

            2.6.-El reto de Deep Blue

 

3.-Los genios que hicieron posible un sueño:

            3.1.-Introducción

            3.2.-Blas Pascal

            3.3.-Gottfried Wilhelm Leibnitz       

            3.4.-Charles Babbage

            3.5.-John Von Neumann

            3.6.-Norbert Wiener

            3.7.-Alan Turing

            3.8.-Kurt Godel

 

4.-La ciencia como base fundamental:

            4.1.-Los sistemas de numeración

            4.2.-La lógica

            4.3.-Teoría de Juegos

            4.4.-Inteligencia Artificial

            4.5.-Mecánica cuántica

 

5.- Conocimientos básicos sobre el juego

            5.1.- Introducción

            5.2.- Tablero, notación y posición inicial

            5.3.- Las piezas y sus movimientos

            5.4.- Movimientos especiales

            5.5.- Objetivo y finalización del juego

 

 

 

6.-Programación en Inteligencia Artificial: Simulando el pensamiento

            6.1.- Introducción

            6.2.- Herramientas y conocimientos básicos:

                        6.2.1.- Elección del lenguaje: Introducción a C++

                        6.2.2.- Compilador

                        6.2.3.- Técnicas básicas:

                                   6.2.3.1-Algoritmia

                                               6.2.3.1.1.-Búsqueda y Ordenación

                                               6.2.3.1.2.-Minimax

                                               6.2.3.1.3.-Alfa-Beta

                                   6.2.3.2.- Mejoras del Alfa-Beta

                                               6.2.3.2.1.- Primero el mejor

                                               6.2.3.2.2.- Ordenación de movimientos

            6.3.- Iniciación del proyecto:

                        6.3.1.- Ingeniería del software

                        6.3.2.- Diseñando el interfaz

                                   6.3.2.1.- Introducción

                                   6.3.2.2.- Salida gráfica

                                   6.3.2.3.- Respuesta a eventos

                        6.3.3.- Elección de estructuras

                        6.3.4.- Generador de movimientos

                        6.3.5.- Hacer y volver movimientos

                        6.3.6.- Función de juego blanco

                        6.3.7.- Función de juego negro

                        6.3.8.- Función de juego global

                        6.3.9.- Función de evaluación estática

                        6.3.10.- Elección del proceso de búsqueda: Profundidad vs Amplitud

                        6.3.11.- Aperturas   

                        6.3.12.- Finales       

                        6.3.13.- Control de tiempo

                        6.3.14.- Optimizando los algoritmos:

                                   6.3.14.1.- Extensiones selectivas

                                   6.3.14.2.- Extensiones singulares

                                   6.3.14.3.- NegaScout

                                   6.3.14.4.- Movimiento nulo

                                   6.3.14.5.- Movimiento asesino

                                   6.3.14.6.- Tablas Hash

                                   6.3.14.7.- Pensamiento profundo

           

 

7.- El problema de la evaluación

            7.1.-Introducción

            7.2-¿Son ciencia los juegos-ciencia?

                        7.2.1.-Introducción

                        7.2.2.-Base axiomática

                        7.2.3.-Campo de aplicación

                        7.2.4.-Lógica interna

                        7.2.5.-Errores psicológicos:

                                   7.2.5.1.-Aceptar como regla lo excepcional

                                   7.2.5.2.-La creencia en la exactitud

                        7.2.6.-Martingalas matemáticas

                                   7.2.6.1.-Teoría de Ramsey

                                   7.2.6.2.-La falacia numérica

                                   7.2.6.3.-El Teorema de Godel

            7.3.-¿Es posible la evaluación perfecta?

            7.4-¿Dependerán siempre los juegos-ciencia de la evaluación estática?

 

 

8.- Escollos de la I.A. aplicada a juegos:

            8.1.-Introducción

            8.2.- Efecto horizonte

            8.3.- Excesivo optimismo

            8.4.- Falta de picardía

            8.5.- Falta de preparación especifica

            8.6.- El problema del aprendizaje

            8.7.- Dependencia del hardware

            8.8.-¿Hacia la igualdad de los programas?

 

 

9.- Como jugar contra los computadores

            9.1.- Introducción

            9.2.- Preguntas básicas

                        9.2.1-¿Qué hacen mejor los humanos?

                        9.2.2.-¿Qué hacen mejor las maquinas?

            9.3.- “Agujeros” en el software

                        9.3.1.-Libro de aperturas

                        9.3.2.-Errores conceptuales

                        9.3.3.-Búsqueda de errores

                        9.3.4.-Aprovechamiento de errores: el banco de pruebas del software

            9.4.-La estrategia

                        9.4.1.-Elección de la apertura

                                   9.4.1.2.-No forzar la salida del libro

                                   9.4.1.3.-Elegir según plan a priori

                        9.4.2.-Simplificar la posición

                        9.4.3.-Eliminar piezas fuertes

                        9.4.4.-Aprovechando el “efecto horizonte”: la estructura de peones

                        9.4.5.-No ceder tiempo de pensamiento

                        9.4.6.-Búsqueda del equilibrio ¡que se arriesgue la maquina!

 

 

10.-  Una mirada al futuro

            10.1.-Otros caminos:

                        10.1.1.-Sistemas expertos

                        10.1.2.-Circuitos neuronales

            10.2.- Computación cuántica

            10.3.- ¿Podrán jugar las maquinas un ajedrez perfecto?

            10.4.- ¿Podrán pensar las maquinas?

                        10.4.1.-Introducción

                        10.4.2.-El test de Turing

                        10.4.3.-Más allá del test de Turing

            10.4.4.-Nuevamente Godel

            10.4.5.-¿Qué significa “pensar”?

            10.4.6.- La evolución orgánica

                        10.4.7.- La evolución cibernética

 

 

 

 

11.- Enfrentamientos hombre-maquina

            11.1.- Relación de los mas importantes encuentros

            11.2.- Kaspavov-Deep Blue (Filadelfia-1996)

            11.3.- Kasparov-Deep Blue (Nueva York-1997)

            11.4.-Van der Wiel-Rebel (2001)

            11.5.- Van Welly-Rebel (2002)

            11.6.- Gulko-Programas ChessBase (2002)

            11.7.- Smirin-Programas Chessbase (2002)

            11.8.- Selección Suiza-Shredder (2002)

            11.9.- El banco de pruebas de los programas: partidas varias

            11.10.- Los aficionados también cuentan

            11.11.- Los futuros encuentros

 

 

12.- Enfrentamientos maquina-maquina

            12.1.-Campeonato Mundial de Computadoras ICGA 2001

            12.2.-Campeonato Mundial de Computadoras ICGA 2002

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.- Introducción:

 

            Nos encontramos en los albores del siglo XXI y ha llegado el momento de repasar con cierta profundidad campos de grandes expectativas en el siglo pasado y ver hasta donde se han cumplido o si estos sueños han resultado quiméricos.

            El tema que nos ocupará en este libro es el siempre apasionante ajedrez y sus aplicaciones computerizadas. La Inteligencia Artificial ha encontrado en los juegos un campo de pruebas excelente y el ajedrez ha sido el principal objetivo de estos trabajos, sin duda por ser el juego mas extendido en el mundo y uno de los más complejos.

            Con la aparición de los primeros microprocesadores ya se entrevió la posibilidad de llevar a cabo el extraordinario proyecto de dotar a una máquina de la “facultad” de jugar a algo complejo y que hasta entonces se consideraba creativo y propio de seres  humanos.

            Desde el principio también existieron sus detractores, que pensaban que esto jamás podría suceder, y sus entusiastas que creían inminente la llegada de estos ingenios que tratasen de tu a tu, e incluso superasen al ser humano.

            ¿Qué es lo que realmente ha sucedido? ¿Qué resumen histórico podemos realizar en la actualidad? ¿Se han cumplido los pronósticos de unos o de otros? ¿En qué situación nos encontramos? ¿Qué nos depara el futuro?

            De todo esto y mucho más trataré en este libro; veremos el devenir histórico de las maquinas que han intentado emular el pensamiento humano, repasaremos los hombres que han hecho posible el desarrollo científico necesario para este empeño y la ciencia básica que se aplica en estos desarrollos.

            También desarrollaremos desde el inicio un proyecto de Inteligencia Artificial aplicada al ajedrez en el que se verán algunas de las principales estrategias que se utilizan para la realización de estos programas. Este proyecto aunque complejo dejará al aficionado mucha libertad para, basándose en lo aquí desarrollado, introducir su propia evaluación e incluso intentar mejoras en los distintos algoritmos.

            En muchos de los desarrollos algorítmicos se sugerirán ideas para su mejora y la adopción de otros caminos distintos a los aquí planeados. Todo desarrollo es susceptible de ser realizado por muchos caminos y el software de ajedrez no es una excepción; en ello radica la diferencia entre programas, que pueden ser más o menos rápidos, evaluar mejor unas u otras posiciones, etc.

            Veremos por tanto las dificultades intrínsecas a este tipo de desarrollos, los conocimientos básicos y los puntos fuertes y débiles de estos programas. Ello nos dará pie para incidir en como deberíamos jugar contra ellos, las tácticas y estrategias mas relevantes a poner en práctica.

            Finalmente repasaré temas candentes y relacionados con lo que el futuro nos pueda deparar en cuanto al pensamiento computerizado, aunque los temas que se tratarán en esos epígrafes son de importancia general en cuanto a la ciencia y el pensamiento.

            Todos los capítulos pueden leerse por separado ya que nos es estrictamente necesaria la lectura secuencial, pero es recomendable incluso por perspectiva histórica. El código y programa desarrollado se encuentra suministrado en soporte informático en este mismo libro.

            El programa es freeware y el código, a pesar de ser propiedad del autor se puede retocar, aunque se ruega la mención del programa original en cualquier desarrollo al que sirva de base o inspiración. Los gráficos no se pueden retocar por ser propiedad intelectual registrada del autor y no dar consentimiento en este caso.

            Y ahora, sin más dilación, entremos en este apasionante mundo donde la ciencia y el ajedrez se dan la mano mostrándonos el camino hacia el futuro.

           

 

 

…………………………………………………

……………………………

…….

.