Monday, August 27, 2018

Gigachess: bases de datos y búsquedas regulares



El software que he escrito para parte del desarrollo de mi tesis de doctorado no es lo rápido que quisiera y en ocasiones me he puesto a pensar si es el  enfoque correcto. La idea va así: de mi base de partidas de ajedrez, estoy tomando 1 millón de ellas y las estoy procesando de forma que cada una contenga dos campos: el encabezado de la partida: quién contra quién jugó y en qué torneo (incluyendo fecha). Los demás datos como rating no me interesan realmente. El segundo campo contiene una imagen de cada posición que se dio en cada partida. La posición la represento como una línea de caracteres Forsyth, que es un formato en modo texto para representar posiciones de ajedrez. Por ejemplo, la posición:



se representa como: "4t1r1/p1p2pp1/1d1p3p/1P3P2/1P6 /2c1D3/PA4PP/4T1R1/". La posición en modo texto se representa leyendo el tablero de izquierda a derecha y de arriba a abajo. Las piezas blancas se representan con sus iniciales en mayúsculas y las negras con minúsculas. Así, "4t1r1" significa que en la octava fila (la primera del negro), hay 4 casillas vacías, una torre negra, otra casilla vacía, un rey negro y una casilla vacía más. Las diagonales "/" simplemente sirven para denotar que pasamos a la siguiente fila, pero pueden omitirse. Si se omiten tengo exactamente 64 letras o números máximo. Obviamente puedo poner "4t1r1" como "1111t1r1", pero poniendo la cifra de casillas vacías me ahorro espacios.

Imaginemos que tenemos ya una base de datos armada así y que quiero buscar si en alguna posición se tuvo un caballo  blanco en f6 y un rey negro en g8. Mi busqueda buscaría esta posición: "6r1/8/5C2/8/8/8/8/8". Evidentemente ignoro (o debería ignorar) si hay otras piezas en donde yo estoy diciendo que hay casillas vacías. Debo -pienso- definir si es vacía o no con alg{un símbolo en la búsqueda. Se me ocurre entonces que si busco que exista un caballo blanco en f6 y cualquier pieza en g8, debería poder buscar algo así: "6?1/*/5C??/...", donde el símbolo "?" es un comodín que sustituye al símbolo "?" por cualquier pieza o casilla vacía en el tablero. Esto, de hecho, no es un invento mío, sino que se ha definido hace muchos años en cómputo. Hablamos de las búsquedas regulares, las cuales buscan "patrones" en cadenas de caracteres. Es un sistema que es muy versátil y pienso que podría ser muy útil en lo que estoy trabajando.

Mi problema básicamente es que si proceso un millón de partidas tendré aproximadamente 80 millones de posiciones. ¿Cómo puedo buscar sobre una base de datos con expresiones regulares que sea muy rápido? La idea de generar todas las posiciones que es las búsquedas sean muy rápidas. Por ejemplo, Chessbase permite buscar posiciones, pero el sistema lee cada partida y hace la búsqueda sobre la base de datos de referencia que se le dé y esto puede llevarle minutos. No es mucho, lo sé, pero pienso que mi enfoque podría hacer que con búsquedas de expresiones regulares, en mucho menos tiempo que Chessbase, debería saber en qué partida ocurrió una posición determinada.

Hay que decir que tampoco etoy pidiendo algo imposible, porque por ejemplo, si se le piude a Google que busque "regular search", entrega el siguiente resultado:

Cerca de 1,260,000,000 resultados (0.45 segundos) 

Es decir, en su gigantesca base de datos halla 1,260 millones de resultados en menos de medio segundo. Sí, sé que Google usa cómputo distribuido y que tiene montones de algoritmos refinados para sus complejas bases de datos, por lo que me queda claro que lo que quiero hacer tampoco pretende ser algo del otro mundo.

Hay un sistema RegEx, que permite hacer más fácil el asunto de definir las búsquedas de expresiones regulares y hay muchas aplicaciones que permiten crear estas búsquedas casi visualmente.


Entiendo que Oracle permite hacer búsquedas de expresiones regulares en sus bases de datos, pero no tengo más información y no tengo idea de cómo hacerlo en esa plataforma de base de datos. ¿Alguna idea de mis cuatro lectores?

Wednesday, August 22, 2018

GigaChess: una base de datos de posiciones de ajedrez


Llevo tres años trabajando en el doctorado y parece ser que ya las cosas se están aclarando. Tengo un lenguaje de descripción de patrones y ahora el plan -entre otros- es hallar los patrones comunes en la base de partidas que hoy en día tiene más de 7 millones de estas.

Una idea que llevaba hace tiempo trabajando era la de buscar patrones en una base de datos de posiciones, lo cual debe ser mucho más rápido que el tener que buscar el patrón jugando cada partida. Además, si cambio de patrón, tendría que volver a "jugar" partida tras partida para ver si el patrón que busco existe.

Por otra parte, pienso que si guardo cada partida como "fotografías" de cada posición que se dio, puedo hacer las búsquedas más rápidamente. La primera pregunta es cuánto espacio necesito. Hagamos uns imple cálculo: 7 millones de partidas por 80 posiciones (asumiendo que en promedio una partida tiene 40 jugadas, 80 movimientos de blancas y negras). Esto da: 560,000,000 posiciones en total. Si necesito un registro de al menos 64 casillas para guardar una posición (en formato Forsyth), esto nos dará 35,840,000,000 bytes, es decir, unos 35 gigabytes de almacenamiento. Hay que guardar, desde luego, el encabezado de cada partida y hacer el sistema que buisque los patrones. Vamos, hay trabajo por hacer.

35 Gigabytes no parece mucho espacio hoy en día, en donde tenemos discos con 1 o 2 terabytes de almacenamiento.


Así pues, el primer problema es generar las posiciones y ya escribí hace tiempo un programa que hace esta tarea. Cada partida, en la máquina que tengo, se procesa en promedio, en 5 segundos (veces menos).  Eso da, para 7 millones de partidas un total de 35,000,000 segundos, lo cual en días es equivalente a 405 días, como un año y tres meses...

Denasiado tiempo. Así que he reeducido a un millón de partidas, quizás menos. Por otra parte, AMD me donó una computadora mucho más rápida que la que uso normalmente y espero que esto baje el tiempo de procesamiento aún más. Con un millón de partidas, más o menos tardaré: 57 días, unos 2 meses...

Pronto seguiré dando avances sobre esta idea, la cual -después de mucho pensarlo- me parece más útil para la cuestión de programación de computadoras que para el ajedrecista que usa programas para apoyar su estudio.



Monday, August 20, 2018

Cuando el descaro no tiene límite



Hace unos seis años, quizás un poco menos, el entrante gobierno de Peña pretendía hacer un sinfín de reformas: la energética, la educativa, etcétera y se supone entonces que eso "movería a México". Para implementar la reforma educativa, con un supuesto nuevo modelo con el cual -ahora sí- los alumnos aprenderían, tenía el gobierno mexicano que hacer a un lado a la lideresa a perpetuidad del Sindicato de Maestros, la "maestra Elba Esther Gordillo". Y para ello, no se les ocurrió mejor idea que detenerla, fincarle cargos por lavado de dinero, por delincuencia organizada, por fraude al fisco, etcétera. La cosa era que una vez muerto el perro se acabaría la rabia.

Pero la reforma educativa tuvo otros inconvenientes. Una facción de Oaxaca no se sometió a la misma y hubo muchos conflictos. Finalmente la reforma -a seis años de gobierno- parece haber fracasado y hora que se va este gobierno por demás fallido, están haciendo como que nadie vio, nadie dijo nada, para salir lo menos raspados posibles. Fue claro que no es tan fácil oponerse a inercias del pasado, muy antiguas, que hacen que los cambios simplemente no se puedan hacer.

Pero regresando a la señora Gordillo, hay que decir que la llevaron presa y entonces comenzó el largo trámite de abogados defensores y acusadores. Curiosamente la maestra Gordillo de pronto enfermó y fue trasladada a algun hospital privado, en donde es mejor que a cualquier cárcel de este país. Ante argumentos como su edad, por ejemplo, eventualmente se le dictó prisión en su casa. y bueno, la ley a veces hace este tipo de cosas por compasión ante una edad avanzada.

Parecía pues que la maestra Gordillo, bien que mal, había sido eliminada de la política mexicana. Cabe señalar que nadie en su sano juicio podría defender a esta señora por los cargos que el imputaban. Una maestra de primaria, como ella, tenía una casa en San Diego, otra propiedad en Polanco, una zona costosa en la Ciudad de México y además, la sra. hacía gala de sus vestidos costosísimos y de sus bolsas de marca de más de 30 mil pesos. Así pues, es evidente para todos que esa señora tiene que haber hecho algo que no parece muy legal para poder tener esas propiedades lujosas y ese trebn de vida.

Pero algo pasó: la Procuraduría General de la República, después de seis años, no pudo acreditar los cargos que le imputaban a la sra. Gordillo y ésta fue puesta en libertad, aunque de nuevo, ya estaba de alguna manera libre pues no estaba físicamente en la cárcel, sino en prisión domiciliaria.

Y entonces, ahora que fue liberada, la maestra, la exlideresa del poderoso sindicato magisterial, se fue de vacaciones para hoy salir públicamente y decir todo lo que piensa. Y he aquí el discurso de una mujer que no tiene vergüenza, que ha vivido robando al magisterio, que ha sobornado a sus líderes locales regalándoles Hummers o más bien, dizque rifándolos.

Pero vean el descaro de la sra. Gordillo, que ahora le ha regresado la fuerza, se le acabarons sus múltiples enfermedades y está dispuesta "esta guerrera", como se autonombra, a regresar a la política mexicana. Triste asunto, triste país y lamentable política.


Lo dejo aquí. No tengo ya calificativos para ver que este país no ha cambido ni cambiará.

Sunday, August 19, 2018

Las diatribas de Fernández Noroña



Por años el político Gerardo Fernández Noroña ha sido muy activo. Cuando fue diputado federal se lucía en la tribuna poniendo en su lugar a cuanto funcionario que se presentaba. Les decía sus verdades aunque esto no pasaba de ser un show, porque estos funcionarios eventualmente ignoraban "el troleo" de este diputado.

También Fernández Noroña ha salido continuamente en canales de YouTube con sus diatribas contra unos y otros. Cuando no le gusta algo lo evidencia con sus discursos aunque de nuevo, no le haga nadie caso. Hubo incluso un momento que se sentía presidenciable aunque después cedió su idea para apoyar a López Obrador.

Ahora que ya es de nuevo diputado electo, más de uno lo ha apuntado con índice de fuego al verlo salir del salón VIP de un aeropuerto, me parece en Tijuana. Pero como Fernández Noroña es muy rijoso, discutió con el que ahora lo acusaba de una gran vida a quien se denomina "hijo del pueblo". Poco después salió otro video en donde una señora le dijo piojoso, cosa que se sale de las mínimas costumbres del respeto que se deben tener las personas, pero así la cosas.

Fernández Noroña, he visto en Twitter, parece que para evitar más agravios, ha empezado a bloquear cuentas de los que lo atacan de alguna manera. Eso tampoco es una buena idea aunque claro, está en su derecho. El problema con personajes como éste es que se sienten con la verdad absoluta y si partimos de esa base, pues no hay nada que discutir. Nunca podrá nadie dar un argumento válido contra los que pueda escribir el nuevo diputado electo.

Lo que parece que no se da cuenta Fernández Noroña es que la gente está harta de los abusos de quien detenta el poder, siendo diputado federal, jefe de gobierno, o incluso presidente. Por eso probablemente ganó Morena de forma apabullante, porque de verdad, este país está harto de tanto abuso por parte de la familia política y Fernández Noroña también cae en este rubro.

Y si el señor se presenta en una sala VIP de un aeropuerto no es para hacer drama, pero es poco inteligente de parte del nuevo diputado. Vamos, andamos con la piel muy sensible, queremos que los políticos vivan más como todos y de inmediato vemos todo lo contrario. Una sala VIP del aeropuerto no es la gran cosa pero evidentemente no todos pueden estar en ella, sino dejaría de ser VIP (Very Important Person, me dicen que significan sus siglas).

Y ojo, ser de la clase política no significa que vivas en la inmundicia. No. Lo que no se vale es usar grandes camionetas, tener bonos de telefonía, viajes, gasolina y seguro de gastos médicos privados, pagados todos por el Estado. Porque eso insulta a la mayoría de los mexicanos y aunque Fernández Noroña lo sabe, cuando ve la oportunidad, entonces se va a una sala VIP y se "pone en la foto" de los medios para demostrar que con darle "tantito" poder, el tipo cree que es de otra estirpe.

Es una pena, porque Gerardo Fernández Noroña, a pesar que no coincido muchas veces con sus juicios de valor, no me caía mal. Ahora con su defensa mediática de las galletas importadas que come o de los chocolates que consiguió aquí pero que probó en Francia, nomás habla de que l dieron un gramo de poder y se volvió loco.

Así las cosas.