Monday, October 19, 2015

¿Pueden tener las computadoras intuición en el ajedrez?



El tema de la intuición siempre nos lleva por caminos misteriosos porque de alguna manera, quien por intuición, sin tener toda la información sobre un problema, halla la solución, nos asombra y no podemos explicar cómo es que lo hizo. Hay jugadores de ajedrez que desde muy pequeños saben dónde deben ir las piezas. Capablanca era uno de ellos. Kaspárov también desde chico mostró habilidades notables al respecto. Muchos otros jugadores de altísimo nivel nos han enseñado que desde pequeños tuvieron esa capacidad impresionante para jugar bien.

Uno podría preguntarse si la intuición se puede aprender. Yo estoy convencido que sí y además, explico qué hay que hacer en mi librito publicado por Chessy "Desarrolla la Intuición en Ajedrez". Pero más allá de eso, ¿Puede aprenderse la intuición de forma que pueda ser programada en un motor de ajedrez? ¿Cómo se podría hacer esto? Pues bien, hallé un estupendo librito "Chess and Machine Intuition" (1998), de George W. Atkinson. En él hace un desarrollo bastante completo del "estado del arte" en el tema del ajedrez, las computadoras y la intuición. Fragmentos del libro pueden hallarse en Google y dan una buena idea del contenido si no se quiere comprar el libro físico, que cuesta unos 30 dólares.  Atkinson hace un interesante viaje por los primeros programas de computadora, los errores, los fracasos y al final de cuentas, los avances que se empezaron a ver después de que los científicos estudiaron el problema por alrededor de unos 50 años, llegando a la postre a derrotar al Campeón Mundial Garry Kaspárov, en un encuentro a seis partidas.


Y aunque el libro se lee casi de una sentada, para decirlo de manera coloquial, el capítulo 10 y 11 (los dos últimos), son extraordinarios. En el capítulo 10 Atkinson se pregunta cómo es que aprendemos y de hecho, pone ejemplos de sistemas que buscan aprender. Habla de perceptrones, de su boom inicial para después ser destrozado por la crítica científica. Y ese capítulo en particular es del que quiero hablar aquí. Atkinson se pregunta cómo es que los seres humanos llegamos a sintetizar información, a clasificarla. Y además, pone ejemplos de cómo las máquinas y sus programadores han intentado emular esta cuestión. Realmente el asunto lo lleva incluso a hablar de Hollander y de su sistema de "algoritmo genético", fundamental en el desarrollo de la "Vida Artificial" (como en el librito que escribí de ese tema y que está publicado como libro electrónico en Kindle/Amazon bajo el título "Jugando a ser Dios").

Entonces Atkinson y sus argumentos me dejaron pensando. ¿Podría haber manera no de clasificar patrones o configuraciones ganadoras en ajedrez, a partir de los conocimientos humanos sino que, al contrario, la propia máquina tuviese alguna manera de hallar los elementos que hacen de una combinación ganadora? Es una pregunta que simplemente por el momento no puedo contestar. Me gustaría decir que sí, que se puede, pero francamente no se me ocurre ninguna idea para empezar a trabajar sobre ello. ¿Habrá que crear quizás una serie de primitivas (algo así como si fuesen axiomas), para pasar a este posible nivel de abstracción donde la computadora reconoce posiciones favorables? ¿Cómo hacer eso? Misterio.

Por lo pronto aquí dejo las cosas. En la medida que se me vayan ocurriendo ideas, las plasmaré en este blog.

Tuesday, October 13, 2015

Compresión de imágenes: Codificación/decodificación RLE (Parte II)


En el artículo pasado hablamos de una manera sencilla de comprimir imágenes en tonos de gris. Desde luego que esta idea es limitada y finalmente no funciona de forma muy adecuada para las imágenes en color. Pero antes de discutir el caso de las imágenes en color, debemos considerar otras alternativas que pueden usarse para comprimir imágenes en tonos de gris. Uno de los algoritmos más usados es el llamado RLE (Rule Length Encoding). La idea funciona así: sabemos que una imagen en tonos de gris contiene una serie de números que se repiten, en particular tripletas de pixeles (en sus componentes R, G y B), los cuales son el mismo color. Si tenemos regiones en donde se repiten estos valores R, G y B, bien podríamos pensar en sustituirlos por el byte que hemos leído y un contador que nos indique cuantas veces se repite el mismo. Esto es básicamente el RLE.
Supongamos que tenemos una imagen de puntos al azar, de todos los posibles tonos de gris. Si son al azar, probablemente no tengamos secuencias largas de un solo tono de gris, por lo que por ejemplo, si la imagen original contiene los siguientes bytes (en hexadecimal):

de de de de de de de de 98 98 98 98 98 98 ff ff 01

podríamos crear un nuevo archivo que tuviese los siguiente valores:

de 08 98 06 ff 02 01 01

Lo cual nos diría que tendríamos 08 bytes con el valor de, 06 bytes con el valor 98, 2 bytes con el valor ff y finalmente un byte con el valor 01.

Cabe señalar que el esquema RLE bien podría usarse para comprimir no solamente imágenes, sino cualquier archivo, aunque muchos no son muy susceptibles de sacar ventaja de la repetición de símbolos. Por ejemplo, sería mala idea usar RLE para comprimir textos, pues estos no tienen repeticiones de letras contíguas. Por ende, no es el mejor de los esquemas para archivos de esa naturaleza.

Los algoritmos básicos de codificación y decodificación son los siguientes

CODIFICACIÓN RLE:



DECODIFICACIÓN:



Nótese que este par de rutinas funcionan con todo el archivo que se desea procesar, lo cual no necesariamente es la mejor idea. Lo más sensato es usar el "canvas" (en donde reside la imagen en un eventual software de procesamiento de imágenes) y aplicar RLE a los pixeles. De hecho, si se procesa, como en este caso, un archivo completo, estamos intentando también comprimir el encabezado que muchos formatos gráficos tienen, incluso los archivos BMP. De nuevo, se advierte que esto es simplemente una idea y el artículo muestra una primera implementación general para ilustrar lo que hay que hacer.

En pruebas hechas con estos algoritmos se halló que una imagen en tonos de grises (que contenía simplemente un bloque en un solo tono de gris), que ocupaba originalmente 212 Kbytes, se redujo a 3Kbytes. Para saber el factor de compresión, dividimos (3K / 212K) * 100, lo cual entrega 1.415, es decir, el archivo comprimido ocupa menos del 2% del archivo original. Desde luego, las imágenes cotidianas no son tan buenas para la compresión. Sin embargo, en casos como en el del ejemplo, es espectacular la compresión de las imágenes.

Si por ejemplo, usásemos este algoritmo para procesar una imagen en tonos de gris que están al azar en una imagen, pudiese no tener ni remotamente los resultados mencionados. Utilizando la siguiente imagen



hallamos que la compresión llego a 141 KBytes, cuando la imagen original fue de 212 KB. Es decir, 66.50 % de compresión sobre la imagen original.

Sunday, October 11, 2015

Introducción a los algoritmos de compresión de imágenes


En el curso que doy de Proceso Digital de Imágenes (PDI), es siempre importante hablar de un tema que muchas veces es difícil de abordar. Se trata del de la compresión de archivos, en particular, del de la compresión de imágenes, el cual en alguna medida permite que las mismas ocupen menos espacio en los medios de almacenamiento y mejor aún, que la transmisión de las imágenes y fotos sea más rápido. Por ejemplo, si puede reducir una imagen al 10% de su tamaño en bytes, pues puedo, en principio, enviar diez imágenes por el precio de una, para decirlo de manera coloquial. Así, la compresión ayuda muchas veces a ser más eficientes en lo que se refiere al uso del ancho de banda por Internet. Por otra parte, la compresión permite usar menos espacio de almacenamiento.

Hay básicamente dos esquemas usados en este tema:

  • Compresión sin pérdida de información (losseless)
  • Compresión con pérdida de información (lossy)


En la primera, la compresión y descompresión del archivo (para convertir la imagen comprimida y podamos verla), no pierde información del archivo original. Vamos, al descomprimir la imagen es estrictamente igual a la original. La segunda compresión, en cambio, pierde información y el efecto de comprimir quizás no lo note el ojo humano al descomprimir y mostrar la imagen, pero si vemos a detalle veremos que habremos perdido información de la imagen original.

Cabe decir que a cambio de ahorrar bytes en el archivo original de almacenamiento, la versión comprimida debe descomprimirse y eso finalmente lleva tiempo. En cómputo no existe ningún procedimiento ganar-ganar. Si ganamos en espacio perdemos en tiempo y viceversa. Esto es un buen ejemplo de ello.

Los esquemas de compresión de imágenes son variados y los más usados son JPG o TIFF. Hace unos años, más de 20, el formato PCX, del cual hablaré en otro artículo próximamente, era uno de los más usados y simples, pero cayó en desuso ante sofisticados esquemas de compresión como los que plantean TIFF o JPG.

Pensando en cómo ejemplificar la compresión de imágenes, como una primera aproximación al problema, se me ocurrió que podía reducir a una tercera parte cualquier imagen que estuviese en tonos de grises. La razón de ello es simple: en 24 bits de color tenemos 8 bits para el rojo, 8 para el verde y otros 8 para el azul. Así, tenemos más de 16 millones de posibles colores con combinación de bytes R,G,B, que es el modelo conocido precisamente como RGB. Pero en tonos de gris tenemos solamente 256 tonos posibles. Cada tripleta R,G,B contiene R=G=B, es decir, las componentes de color en RGB son idénticas entre sí. Por ello, tenemos el tono de gris más oscuro (el negro), como (0,0,0), un poco menos negro será (1,1,1), menos negro aún será (2,2,2) y así sucesivamente. El blanco será (255,255,255).

Si esto es así, una imagen en tonos de gris puede reducirse a la tercera parte de su tamaño original leyendo una sola componente (el R, el G o el B de cada pixel de la imagen) y escribiendo en un archivo de bytes esa componente de cada pixel en la imagen. La idea es muy simple de programar y el algoritmo es éste:


(dar click en la imagen para verla más grande)

Cabe decir que cuando tengo la imagen que voy a procesar, primero la paso a tonos de gris tomando las componentes R, G y B, sumándolas y dividiendo de manera entera entre 3, es decir:

Gris := (R + G + B) div 3;

Así me aseguro que la imagen es de tonos de gris. De hecho, al convertir de color a tonos de gris ya perdemos información de color de la imagen, pero en este caso no es el asunto que discutimos.

Ahora bien, ¿cómo podríamos mostrar la compresión lossy, que es donde sí se pierde información al recuperar la imagen comprimida? Una idea sencilla resultó ésta: Tomemos una imagen en color y entonces revisemos las componentes de color (R,G,B). Tomemos el Rojo, la R y listo, digamos que ése es el tono de gris. Por lo tanto la imagen final en cada pixel tendrá el componente (R,R,R) en donde había antes un (R,G,B). ¿Qué tanto podría cambiar la imagen original en blanco y negro usando solamente la componente R de cada pixel?

He aqui dos imágenes. La de la derecha es la imagen en tonos de gris original. La de la izquierda es utilizando solamente la componente R(ed) para formar el tono de gris.



Tonos de gris vs Lossy (usando la coordenada R)

La diferencia visual quizás no es muy notable, pero de alguna manera, si nos fijamos con cuidado, veremos que la imagen "lossy" es un poco más oscura. Si en lugar de usar la componente R usáramos la B, encontraríamos un resultado "lossy" más obvio:


Tonos de gris vs Lossy (usando la coordenada B)

De hecho, se me ha ocurrido hacer un experimento más: Tomemos la imagen original en tonos de gris y saquemos los tres componentes de color, R, G y B, tomando uno de ellos al azar para formar el pixel correspondiente como (R,R,R), (G,G,G) o (B,B,B). Tal vez así, al elegir consistentemente el R, el G o el B de forma que se distribuyan esos tonos de gris formados con una sola componente, el resultado final podría ser mejor. Hice la prueba, pero me llevé una sorpresa inesperada:



Tonos de gris vs Lossy al azar (entre coordenadas R,G y B)

En resumen, usar una sola componente parece que no es tan descabellado si es que usamos la componente R o la G. Con la componente B la descompresión si muestra que se ha perdido mucha información de la imagen original. Probablemente la coordenada R sea la mejor opción en este caso.

El esquema mostrado reduce las imágenes a un 33% del tamaño original, lo cual quizás no puede considerarse malo, peor por ejemplo, esta misma imagen en JPG se reduce dos veces lo que podemos lograr con esta idea.

Aún así, no hay ninguna mejora con respecto al tamaño de la imagen comprimida. Digamos que es independiente de la componente elegida aunque para fines ilustrativos, usar el tono de gris calculado antes de procesar la imagen nos da una imagen resultante en donde no se pierde información de la imagen original.

Quien quiera mi programa de demostración, pídamelo a morsa@la-morsa.com y a vuelta de correo lo recibirá de manera gratuita.

Saturday, October 10, 2015

El Bachoco fue a la "estética"


Jorge es un muy buen amigo. Por algún tiempo, aparte de sus actividades deportivas (nadador consumado que en el 2013 cruzó el canal de la mancha en relevos), se dedica a tener los automóviles impecables. Pronto va a abrir un negocio en Queretaro, una especie de "estética" para que los autos que le manden se vean no limpios, sino limpísimos, sin mancha alguna. El otro día me dijo Pilar que regresara antes de las cino de la tarde a casa porque Jorge iba a pasar por mi coche para "llevarlo a la estética". Me hizo gracia la puntada y ahí estuve.

Jorge se llevó mi coche y pensé mientras se iba "¿pues qué tanto puede cambiar al 'Bachoco', que ha dado tantos años de fiel servicio?". Con 16 años de vida, mi Chevy -pensaba- quedaría relativamente limpio pero no mucho más allá de mis expectativas. Pero la sorpresa vino cuando Jorge me mandó las fotos del proceso realizado. Sólo tengo una palabra: ¡Sorprendente!

Agradezco las atenciones para con el Bachoco. Quedó como dicen en la TV: "Rechinando de limpio".











___
(*) Se puede dar click a las imágenes para verlas en su tamaño real

Friday, October 09, 2015

Fallece Alejandro Preve



El artífice del Torneo Carlos Torre, que se lleva a cabo cada diciembre en Mérida, Yucatán, falleció este 9 de octubre. Físico de profesión, habiendo nacido un 23 de abril, pero diez años antes que yo, dedicó un gran esfuerzo por hacer del Torneo en memoria del Gran Maestro mexicano Carlos Torre, uno de los mejores del mundo. Por sus ediciones, que creo se cuentan fácil más de 20, desfilaron jugadores de la talla de Leinier Domínguez, Vassily Ivanchuk, Milov, Vera, Bruzón, Miles, Gilberto Hernández. José González, etcétera. Preve le dio un empuje al Torre extraordinario y sé de primera mano que muchas veces tuvo que poner dinero de su bolsa para pagar premios y para que no hubiese nada que manchara este enorme esfuerzo.

Alejandro Preve, además de ser uno de los organizadores de ajedrez más importantes en nuestro México, era un hombre extremadamente bondadoso. Preve probablemente logró que Yucatán se colocara como un ejemplo a seguir para que niños y jóvenes dedicaran su tiempo al ajedrez. Difícil hallar alguien con ese empuje. Como buen yucateco, era amable con todos y diría yo, demasiado amable. Lo vamos a extrañar y esperamos que la familia de Alejandro encuentre consuelo, aunque eso sé que siempre es difícil. Descanse en paz el buen amigo.

Monday, October 05, 2015

Las reglas del ajedrez competitivo


En la pasada Copa Mundial, que acaba de ganar Sergey Karjakin, surgió un problema entre el representante estadounidense y número 2 del mundo, Hikaru Nakamura, y su contrario Ian Nepomniachtchi. En una de las partidas del desempate, Nakamura tocó simultáneamente el rey y la torre para enrocarse. La regla dice que si se va a enrocar, primero se mueve el rey y después se desplaza la torre a su nueva posición. Nepomniachtchi perdió esa partida y fue eliminado de la Copa Mundial. Posteriormente, el gran maestro derrotado presentó una protesta indicando que los jueces debieron haber detenido el encuentro y obligar a Nakamura a mover la torre impidiéndole el enroque. De hecho, el encuentro se estaba grabando en video y se puede ver que por fracciones de segundo, Nakamura toca primero la torre.

Pero ningún juez hizo nada y el propio Nepomniachtchi tampoco. Hay muchas razones para no hacer nada. No lo notó en su momento y después, cuando vio el video, se dio cuenta de ello. No dijo nada porque su rival es el número 2 del mundo y resulta feo hacer un reclamo de esta naturaleza. Pero las reglas son las reglas y si los árbitros no hicieron nada, ¿por qué el afectado tampoco hizo el reclamo en su momento? Cabe decir que Nepomniachtchi tuvo una experiencia parecida contra Karpov, que en un torneo de partidas rápidas, éste último movió primero la torre y luego el rey para enrocarse. Ahí Nepomniachtchi buscó con la vista a algún árbitro pero eventualmente, sin que hiciese una reclamación en el momento, la partida continuó.

Hay que decir que las reglas del ajedrez competitivo son estrictas: pieza tocada, pieza jugada. Esa regla en particular suscitó una dificultad hace unos años en la partida entre Judit Polgar y Kasparov. El Campeón Mundial de ese entonces tocó un caballo y lo movió a otra casilla, pero aún no soltaba la pieza y entonces lo cambio a otra posición. De nuevo Judit, como Nepomniachtchi levantó la vista al juez pero no reclamó nada. El video de la partida muestra que Kasparov soltó la pieza por dos décimas de segundo, imperceptibles al ojo humano. El propio Kasparov dice que no sabe si soltó o no la pieza y yo en lo personal le creo. De nuevo, ¿por qué Judit no reclamó? Porque jugaba con el número 1 del mundo, porque probablemente no sabía si de verdad su rival había soltado la pieza.

Ahora bien, hay en el mundo del deporte algo que la FIFA llamó "fair play". Si pasaomo del futbol al mundo del ajedrez, podemos pensar que por ejemplo, tanto Karpov como Nakamura querían enrocarse y sí, lo hicieron de manera impropia pero seamos francos, era claro que buscaban enrocarse. Y sí, la regla indica el procedimiento pero ¿alguien le va a decir al excampeón del mundo que no conoce el procedimiento? Yo creo que el fair play se aplica perfectamente en este caso. Curiosamente, en el asunto con Nakamura, cuando se le informó de la protesta de su rival, el estadounidense dijo que en ningún momento pensó que había hecho algo mal. Yo en particular le creo.

El reglamento del ajedrez indica también que éste no puede contemplar todas las posibles situaciones que pueden darse en una partida de ajedrez y se deja al criterio del árbitro en todo caso las decisiones que no estén en el reglamento. Si los árbitros en la partida de Nepomniachtchi vs Nakamura no dijeron nada, si el gran maestro que perdió tampoco dijo nada, pues no hubo falta y ya el resultado no se puede cambiar ni se repite la partida.

Nepomniachtchi debe aprender la lección que debe extenderse a todos los ajedrecistas. Si uno, al estar jugando observa una irregularidad, puede pedir la intervención del árbitro. Si no lo hace y el juez tampoco dice nada, la falta queda sin consecuencias. Y me paso al plano cotidiano: si voy a comprar algo y noto que me dan mal el cambio ¿no digo nada? ¿tiene que estar un juez de lo civil ahí observando para ver si dice algo? No. Es obligación del afectado reclamar. Si se va de la tienda y regresa al día siguiente diciendo que le dieron mal el cambio, quizás no se analice el asunto ni le devuelvan nada. Será un castigo a no reclamar en el momento.


Monday, September 28, 2015

¿La mejor partida de la máquina Belle?


Ken Thompson junto con Joe Condon diseñaron una máquina para jugar ajedrez. Sin duda Thompson, que trabajó por muchos años en los Laboratorios Bell, después adquirido por AT&T, tenía ciertas facilidades para pedir presupuesto para el proyecto que quisiese, sino es difícil explicar cómo es que se pudo realizar un trabajo como el crear hardware específico para jugar al ajedrez.  La historia es fascinante y Thompson se consiguió a un ingeniero electrónico que de hardware sabía mucho, Joe Condon, quien fue el que diseñó las tarjetas electrónicas de la máquina de ajedrez que sería bautizada como Belle.

Cabe decir que probablemente Ken Thompson sepa bastante de ajedrez y de hecho, recuerdo que cuando visité los Laboratorios Bell (1993), en algún momento pasamos por una sala donde había mesas de ajedrez y relojes. Evidentemente el ajedrez no estaba ahí por casualidad. Y digo que Thompson de ajedrez debiese saber más que lo suficiente fue porque él intuía que su máquina de ajedrez requeriría una biblioteca de aperturas, la cual la saco de un libro en particular, el cual le llevó meses transcribir para poderlo usar en su sistema.

Así, Condon y Thompson hicieron una estupenda mancuerna tecnológica: el primero en hardware y el segundo en software. Belle ganaría tres veces el Campeonato Mundial de Ajedrez por computadoras y demostraría un buen bagaje de herramientas y técnicas que después de él se tomaron muy en cuenta para sus sucesores. Bien Ken Thompson podría escribir un libro llamado "Mis Grandes Sucesores" [1]. Una estupenda reseña de los avances en cómputo, particularmente con Belle y su desarrollo puede verse en el libro "Chess and Machine Intuition", escrito por George W. Atkinson, el cual estoy terminando. Además de las propias opiniones del autor, Atkinson hace un desarrollo breve pero bastante completo del "estado del arte" en el ajedrez por computadora. Un libro sin duda muy recomendable.

La partida ntre Blitz (que eventualmente se convertiría en Cray Blitz), del año 1978, es muy importante, porque quizás fue la primera vez que una computadora analizó las consecuencias finales de un sacrificio que lleva al mate. Es cierto, sí, que esa combinación no se ve particularmente difícil para un jugador de primera fuerza, pero el avance fue sin duda importante, pues mostró cómo una máquina podía deshacerse de la idea de ser materialista y comerse cuanta cosa pudiese en una partida, para pasar a un nivel en donde incluso, los sacrificios eran posibles. En mi opinión,m el desarrollo de Belle fue un parteaguas para la siguiente generación de programas de ajedrez, como HiTech o ChipTest, por ejemplo.

He aquí la partida:

ACM 1978.12.06
Blitz 6.5 - Belle

1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Nd4 5. Bc4 Bc5 6. Nxe5 Qe7 7. Bxf7+ Kf8 8. Ng6+ hxg6 9. Bc4 Nxe4 10. O-O 

La posición favorece sin duda a las negras. Tienen ventaja material a cambio de un rey en una posición relativamente insegura. Sin embargo, aquí Belle halla una combinación ganadora:



10. ... Rxh2! 11. Kxh2 la peor jugada, pues sigue mate en cuatro. Sin embargo, cualquier otra jugada no salvaba la partida. 11. ... Qh4+ 12. Kg1 Ng3 13. Qh5 gxh5 14. fxg3+ Nf3# 0-1

Fue tan impresionante esta partida para el propio Ken Thompson que mandó a hacer playeras con la posición final. Dicha playera la usó en el siguiente campeonato de computadoras.

Belle eventualmente llegaría a jugar unos 2203 puntos Elo y recibió un premio honorífico, haciendo a la máquina miembro de la Federación Estadounidense de Ajedrez, cosa que como David Levy dijo alguna vez: "esto sólo pasa en los Estados Unidos".


_____
[1] Haciendo referencia a la colección de Kasparov: "Mis Grandes Predecesores".
[2] La foto inicial de este artículo ilustra la posición de quizás la partida más famosa de Belle. En la foto se observan a Joe Condon (izquierda) y Ken Thompson, con la posición de la brillante partida en el momento del sacrificio.

Saturday, September 26, 2015

¿La caída de López-Dóriga?



Joaquín López-Dóriga es el locutor oficial del Noticiero del Canal 2 de Televisa, en su horario más importante (10:30 pm). Es un periodista que siempre me ha parecido nefasto y que finalmente, siendo la cabeza de dicho noticiero tiene al menos injerencia en las noticias que presenta y cómo las presenta, vamos, en la línea editorial del noticiero que conduce.

Desde hace unas semanas, López-Dóriga parece que ha entrado en el ojo del huracán. Todo porque María Asunción Aramburuzabala, propietaria de la inmobiliaria Abilia (y además, heredera de una gran fortuna porque hasta donde entiendo su abuelo fue quien fundó la exitosa empresa Cervecería Modelo), se enfrascó en un pleito con Teresa Adriana Pérez Romo y su esposo, Joaquín López-Dóriga. De acuerdo a los dichos de la señora Aramburuzabala, la pareja mencionada la querían extorsionar y le pedían no sé si cinco o diez millones de dólares para permitirle que continuara la construcción de un edificio de departamentos.

Cabe señalar que la revista Proceso dice que López-Dóriga tiene al menos seis departamentos de lujo en el Club de Golf Bosques, siete en la colonia Polanco, su lujoso yate valuado en 40 millones de pesos, una suite en residencial Villa Alejandra de Acapulco, más millonarios ingresos a través de dos empresas, Akron y Ancla, que han recibido más de 237 millones en contratos por menciones, campañas y entrevistas de dependencias federales entre 2001 y 2015.

Aparentemente la influencia y poder económico de la Sra. Aramburuzabala ha sido suficiente para detener esta supuesta extorsión. Pero más allá de eso, a partir de este evento, muchos sitios web de poca credibilidad realmente, han estado esparciendo el rumor de que López-Dóriga podría salir del noticiero nocturno porque su imagen se ha debilitado. Curiosamente, la revista Proceso, que mantiene cierto status de rigor periodístico, plantea también ahora esta posibilidad y de hecho, para mi sorpresa al menos, pone al susodicho periodista en la portada que circulará el próximo domingo (es decir, mañana).

No es la primera vez que López-Dóriga se halla en el ojo del huracán. En algún momento creo recordar que fue director de noticieros dee ImeVisión, lo que ahora es TV Azteca, y que en un movimiento político, fue "derrocado"  y expulsado de su puesto. Me acuerdo que en esos años entonces López-Dóriga sacó un periodicucho llamado "Respuesta", en donde al menos en su primera edición, dijo que no se dejaría intimidar, más un largo bla bla bla que probablemente nadie le creyó.

Por otra parte, López-Dóriga ya dejó de ser un joven periodista. Ya aprendió a lidiar con el poder político de este país y no tuvo empacho, a cambio de jugosos sueldos, hablar bien del gobierno en turno. En mi opinión, no tarda mucho para que Televisa al menos, lo jubile. Quizás este asunto con la heredera del Grupo Modelo sea el catalizador que finalmente haga que retiren de cuadro a uno de los periodistas más lamentables de este país.

Yo me preguntó ¿por qué se metió en este asunto López-Dóriga y esposa? ¿Es que no tienen suficiente dinero ya? Tal vez aquí el asunto sea de poder y no estrictamente de dinero. En cualquiera de los casos me parece que después de la portada de Proceso, que tiene finalmente cierta influencia en el imaginario colectivo, el periodista de marras deberá andarse con pies de plomo. Su puesto -creo que ahora sí- corre peligro.

Y si sale de Televisa, quizás también salga de la Radio y de pronto sea un "apestado" como Guillermo Ochoa, el cual fue corrido por Azcárraga cuando presentó sin su autorización, una entrevista con la Quina, justo cuando Salinas lo encarceló fincándole no sé cuantos delitos y buscando así tomar el control de Pemex, todo esto en 1988. Después de su atrevimiento de publicar la entrevista con el ya fallecido líder de los petroleros, Ochoa fue despedido y desapareció de los medios por muchísimo tiempo. Hoy -me parece- Ochoa es un hombre mayor, enfermo, que tiene por ahí una columnita de opinión en la radio que alguna vez oí y que no sé si siga al aire.

Veremos el desenlace de esta historia pronto. Tal vez Televisa espere unas semanas para que las aguas regresen a su nivel y entonces le den a López-Dóriga una salida decorosa indicando él mismo que ha decidido pasar la estafeta a -probablemente- su sucesor, Loret de Mola.

Sistemas expertos: tecnología obsoleta



En Inteligencia Artificial (IA) se trabaja en muchos frentes. Pueden ser redes neuronales, o quizás programas que hacen búsquedas exhaustivas sobre un árbol de posibilidades. También pueden usarse los sistemas expertos, que pretenden lidiar con las incertidumbres asociadas con la información en prácticamente todo el ámbito humano. Así, por ejemplo, podemos pensar en las heurísticas, una manera de manejar un problema para el cual no siempre hay una solución exacta. Una heurística es una regla general, que funciona la mayoría de las veces o en la mayoría de los casos, pero bien podría no trabajar correctamente en un caso particular.

Los sistemas expertos son una rama de la IA que pretende describir un problema con base en reglas del tipo IF-THEN, es decir, SI ocurre un fenómeno en particular ENTONCES tomaremos la siguiente acción. Por ejemplo, si pensamos en un sistema de diagnóstico médico, podríamos tener este tipo de reglas:

SI el paciente presenta fiebre, estornuda, cuerpo cortado ENTONCES tiene gripa.

Esta regla es muy evidente por sí misma pero muchas veces en el mundo real las cosas son menos sencillas. Por ejemplo, podríamos decir:

SI el cielo está nublado ENTONCES llevaré mi paraguas.

Aunque la regla podría funcionar considerando que al estar el cielo nublado, entonces podría llover, pues no parece ser mala idea llevar consigo el paraguas. La pregunta que surge, sin embargo, es: ¿Cuál es la probabilidad de que vaya a llover? Si dicha probabilidad es 10% o menos que eso, a lo mejor no tiene sentido cargar con el paraguas aunque sí, podría eventualmente caer una lluvia.

Este tipo de criterios hacen que los sistemas expertos se conformen de muchas reglas CAUSA-EFECTO y que estas se encadenen para llegar a una conclusión. Existen dos tipos de encadenamiento, hacia atrás (backward chaining) y hacia adelante (forward chaining). El primero es más o menos lo que hace un médico que nos ve por primera vez. Nos preguntará en cómo nos puede ayudar y le diremos, por ejemplo, que nos sentimos mal. Entonces el médico preguntará por los posibles síntomas: ¿le duele la cabeza? ¿le duele alguna otra parte del cuerpo? Y entonces el médico buscará encadenar de alguna manera los síntomas que presenta el enfermo para así llegar a un diagnóstico.

En el caso de forward chaining, el médico cuando ve al paciente piensa para sí en un posible diagnóstico, por ejemplo, observa al paciente y decide que éste se ve agripado. Entonces, las preguntas ya están orientadas sobre qué puede tener. Empieza el interrogatorio con una posible hipótesis de la enfermedad del paciente. Si acaso éste le contesta no a un síntoma que debiese ser sí, el galeno entonces buscará una nueva hipótesis. ¿Cuál es la mejor manera de encadenar la información en un sistema experto? No sé, depende del problema que se planteé.

Otro punto a considerar es la incertidumbre en la información. Muchas veces, cuando vamos al médico, éste nos pregunta: ¿qué tanto le duele la cabeza? ¿Mucho? ¿Poco? Defínalo de 1 al 10, donde 1 es que le duele muy poco. Y esto en un sistema experto debe ser validado. ¿Qué pasa si hay diversas incertidumbres asociadas a diferentes preguntas? Las matemáticas tienen la solución, usar el teorema de Bayes, el cual permite combinar adecuadamente las probabilidades asociadas a eventos para saber la probabilidad final deque un evento pueda ocurrir.

Cabe decir que los sistemas expertos contienen tres elementos básicos:
  1. La interfaz con el usuario
  2. La base de reglas causa-efecto
  3. El motor de inferencias
El primer punto permite tener una manera de comunicación entre el usuario y el sistema. La base de reglas, en cambio, debe armarse de acuerdo a consultas que harán los programadores del sistema experto. Finalmente, el motor de inferencias es el que nos dice si haremos encadenamiento hacia adelante o hacia atrás.

Todo esto está muy bien, pero los sistemas expertos parecen ser ya una tecnología obsoleta, por decir lo menos. Definir todo en términos de predicados causa-efecto no parece ser siempre una buena idea e incluso, con el manejo de las incertidumbres, el resultado final parece acartonado. Tal vez -para colmo- los programas de IA que lidian con este tema de los sistemas expertos, decidan cambiar el enfoque a una búsqueda por demás exhaustiva. Y entonces las heurísticas pasan a un segundo plano porque ya se puede tener una solución clara y más precisa.

Un ejemplo de ello es el propio ajedrez por computadora. Los programas tienen una función de evaluación que informan qué posición es mejor y por qué. Un sistema experto con reglas para jugar bien parece resultar por una parte, difícil de generar y por otra, de aplicar en la gran cantidad de posiciones que pueden darse. Es claro que los sistemas expertos no sirven por ejemplo, en el dominio del ajedrez.

Los sistemas expertos tuvieron un inicio interesante e incluso hubo sistemas que permitían vender equipos de cómputo y organizar cómo se pondrían en la empresa del cliente. este tipo de sistemas estaba hecho con una centena de reglas pero incluso, tenía un sistema experto (con más reglas), que buscaba que éstas no tuviesen contradicciones evidentes. Sin embargo, sus limitaciones fueron saliendo a la luz.

Hoy en día no hay quien decida armar un sistema experto, en el tema que sea, porque probablemente quedará siempre limitado. Pienso pues que esta tecnología es obsoleta y habrá que considerarla como un interesante esfuerzo que no prosperó. Así pasa contínuamente en la ciencia. Tampoco es algo que haya que alarmarnos.

Wednesday, September 23, 2015

El nuevo Big Brother de Televisa


Creo que han pasado más de diez años que nació la idea de encerrar a una serie de jóvenes en una casa, de manera que convivieran y a través de mecanismos como retos y votaciones del público, se fuesen eliminando, sacándolos de su encierro y así, llegar a "ganar"una cifra millonaria además de sus quince minutos de fama. Big Brother, si no me equivoco, es una idea de un holandés, que vendió su programa a manera de franquicia. Debe haber hecho mucho dinero pero como todos los contenidos, terminó por agotarse, quemarse, a la gente dejó de interesarle y finalmente por su bajo rating, Televisa debe haber decidido cancelar las emisiones.

Pero han regresado con un Big Brother "recargado", quiero creer. No lo he visto porque ahora veo menos televisión que nunca y entonces, ni siquiera me entero ni a qué horas pasa. Pero más allá de eso, me parece que Televisa sigue empujando a la juventud a este mundo superficial, al del poco esfuerzo, en el que basta ser un "mirrey" o una joven "desinhibida y guapa" para que se tenga éxito en la vida. En esta página hallé el perfil de los habitantes de Big Brother, los cuales supuestamente se eligieron en un gran casting nacional, el cual debe haber tenido miles de potenciales habitantes de la "casa más famosa de México" (después de la casa blanca de Peña Nieto, desde luego). He aquí algunos de los inquietantes perfiles:

Christopher Basteris:



Vamos, un currículum de pena ajena. De verdad.

Veamos a éste:

Martha Rossana:



"Lo que más le gusta es ligar" y su personalidad es seductora, sexy, fiestera, provocadora y juguetona. Vamos, con 27 años de edad no habla de lo que ha leído, de sus intereses culturales, nada. El asunto parece ser la fiesta, el reventón, como lo mejor que puede hacer.

Y así por el estilo, todos los personajes en cuestión son de una superficialidad abrumadora. Entiendo que muchos de ellos están viendo esto como una plataforma para lanzarse eventualmente como actores/actrices, cantantes, etcétera, y así entrar por la puerta grande al mundo de la "artisteada" como alguna vez dijo al célebre Gaviota de Peña Nieto cuando era aún una jovencita.

Si ven los demás perfiles, observarán que hay una buena cantidad de personajes que se dedican al modelaje, o que viven de fiesta en fiesta, o que son muy platicadores y buena onda. Pero no hablemos de cierta profundidad porque eso no es para Big Brother. Los productores eligieron bien: una sarta de inútiles que se sienten modelo y de mujeres guapas con las mismas aspiraciones. Eso es lo que da Televisa y no hay más.

Y eso es lo triste, porque Televisa manda un mensaje lamentable: "No se estudie, no se trabaje, no se profundice en nada. No es importante eso. Lo verdaderamente interesante es que te veas como modelo, que vivas la vida loca y chance, te lleves un muy buen dinero después de que te "encarcelemos" por tu propia voluntad, por unas semanas. Más aún, a lo mejor hasta terminas siendo artista. Porque ¿sabes? No hay que estudiar nada para ser artista en nuestra "casa". En Televisa hacemos ídolos y los usamos hasta que se desquebrajan, hasta que se desgastan, hasta que sus imágenes ya no dan para más, entonces: los tiramos". Eso es lo que hace la televisora y la juventud, que no tiene idea de nada en este país aparentemente, cae en todas las absurdas promociones que le ponen en la "caja boba".

En fin, por eso este país cada vez se lo carga más el payaso. De verdad.

Sunday, September 20, 2015

Cambio de paradigma


La investigación seria en el ajedrez por computadora habría empezado formalmente con el famoso artículo de Claude Shannon, en 1950, el cual marca las pautas para desarrollar un programa completo que pudiese jugar al ajedrez. Sorprendentemente las ideas de Shannon están vigentes hoy en día, en donde los mejores motores de ajedrez utilizan muchas de las ideas descritas en el mencionado artículo.

Los programas actuales utilizan una función que evalúa cada posición (que es un polinomio lineal) y un algoritmo MiniMax, que permite analizar el árbol de variantes creado y calcular la función en los nodos terminales. Este procedimiento MiniMax tiene una versión más sofisticada, llamada Alfa-Beta, que casualmente, bosqueja Allan Turing en su artículo sobre ajedrez aunque aparentemente no se da cuenta de ello. En la medida que se hace un árbol de variantes (jugadas, respuestas, jugadas, más respuestas), los programas pueden evaluar mejor las posiciones. Por ejemplo, si ejecutamos una jugada que sacrifica la dama comiéndose un peón, podemos pensar que esto da al bando rival una posición ganadora, pero si se acepta el sacrificio y entonces ese bando recibe mate, la jugada de la entrega de la dama exige que se vea más jugadas adelante. He aquí lo que se llama pues, el problema del horizonte o para ponerlo de forma llana: hasta dónde podemos ver.

Hoy en día los programas como Houdini, Komodo y Stockfish dominan el mercado y pueden analizar 10 o más jugadas adelante, en donde cada jugada está hecha por dos movimientos, uno del blanco y otro del negro. A eso se le llaman plies, por lo que un ply es media jugada, el movimiento de un solo bando. Pero aparte de analizar ya con mucha precisión y mejor que los seres humanos, valoran cada posición terminal cada vez de forma más exacta. Los programas líderes del mercado son notables y prácticamente imbatibles por los seres humanos.

Pero aunque este paradigma ha funcionado muy bien, por muchos años, quizás tantos como lleva la investigación de ajedrez, se ha buscado que los programas jueguen como lo hacen los seres humanos. Vamos, que los ajedrecistas de elite no calculan todas las jugadas, sino un subconjunto muy limitado y sin embargo, juegan muy bien. Y éste es el problema no resuelto: ¿Qué hacen los seres humanos para hallar la mejor jugada sin tener que crear un amplio y voluminoso árbol de variantes? Eso parece ser un misterio aún, pero se sigue trabajando en ello.


El cambio de paradigma apenas quizás está comenzando. El año pasado un estudiante puso una red neuronal profunda y la entrenó con 100 millones de jugadas (sacadas del servidor gratuito FICS). El programa entonces, viendo todas esas jugadas aprendió a jugar al ajedrez. No se declararon algoritmos específicamente, sino el algoritmo que usa una rede neuronal para poder extrapolar datos y sacar conclusiones.

Hoy hablan de otro programa, llamado Giraffe, que no analiza muchos plies, sino que entiende los valores posicionales y no requiere de analizar árboles grandes. Juega pues más como los humanos. De nuevo, una red neuronal es la responsable de este trabajo y parece ser que el programa aprendió, así como los niños prodigio como Capablanca, a jugar "sólo viendo" cómo su padre movía las piezas. De acuerdo al último reporte, Giraffe, en 72 horas de entrenamiento, ya logra jugar con la fuerza de un Maestro Internacional. Pero éste es un trabajo no terminado. Vamos a ver si se mantienen las conclusiones y si esto se convierte en una nueva manera de programar motores de ajedrez.

______
(*) Claude Shannon (derecha) le otorga el premio a Feng-Hsiung Hsu por ganar con Deep Thought el Campeonato Mundial de Ajedrez por Computadora, en Edmonton, Alberta, 1989.

Tuesday, September 15, 2015

La máquina de Torres Quevedo y el algoritmo para dar mate en el final R vs. RT


Leonardo Torres Quevedo (1852-1936), fue un inventor español, el cual además de todo, tiene un lugar de honor en el ajedrez, al haber inventado una máquina que podía jugar el final de torre y rey vs. rey.  En este caso, al contrario del Turco de Von Kempelen, la máquina de Torres Quevedo ganaba este final básico, pero si pensamos que esto se mostró para antes del 1920, el resultado es notable.


Me he preguntado ¿cómo será el algoritmo de este inventor español para ganar este final? Y lo he hallado descrito en el siguiente libro: Chess and Machine Intuition, de George W. Atkinson, Intellect Books. Este libro me parece fascinante. He aquí el algoritmo de Leonardo Torres Quevedo según el apéndice del libro mencionado:


El esquema de Torres para dar mate en este final de rey y torre vs rey asume una posición inicial con el rey del autómata en a8, torre en b8 y el rey enemigo en cualquier casilla en donde no esté en jaque en las primeras seis filas. He aquí el algoritmo en seudocódigo RB = Rey Blanco; RN = Rey negro y T = Torre blanca:

,
if RN y la T están en las columna a, b o c

  then mueve la T a la columna h (mantén a la T fuera del alcance del RN)

elseif ambos RN y la T están en las columnas f, g o h

  then mueve la T a la columna a (mantén a la T fuera del alcance del RN)

elseif si la fila de la T excede por más de una fila del RN

  then mueve el R una fila (quitandole espacio al RN)

elseif la fila del RB excede por más de dos filas a la del RN

  then mueve el RB una fila (para apoyar a la T)

elseif la distancia entre reyes es impar

  then haz tiempo moviendo la T



     if T es en la columna a then mueve T a la columna b

     elseif T está en la columna b 
          then mueve T a la columna a

        elseif T está en la columna g 
          then mueve T a la columna h

       else {T está en la columna h} mueve la T a la columna g

     endif



elseif la distancia horizontal entre reyes no es cero

  then mueve el RB horizontalment hacia el RN {mnanteniendo la oposición}

else da jaque moviendo la torre una fila {si es la primera fila entonces es mate}

Si el RN está en a6, con las mejores tácticas dilatorias, el mate puede tardar, con este algoritmo, unas 61 jugadas.

Thursday, September 10, 2015

Los problemas de hacer libros en el formato Kindle



La plataforma Kindle me parece una de las mejores para poder publicar contenidos (libros en particular, desde luego), que se tenga actualmente. Por una parte es popular y por otra, a los autores les dan una buena cantidad de alternativas para promover sus trabajos, incluso poniéndoles el precio de venta de cada uno de ellos. Por una parte, el formato de publicación es algo muy parecido a HTML y por ello los libros Kindle pueden leerse de igual manera en diversas plataformas, tanto de escritorio como móviles. De hecho, generar un libro en este formato se puede hacer desde Microsoft Word (e incluso OpenOffice o LibreOffice) y el propio Amazon tiene una guía gratuita indicando paso a paso cómo debe hacerse llamada “Building Yur Book for Kindle”.

Para tener éxito y que la publicación quede bien, tal vez lo más importante es utilizar los “estilos” de Word, los cuales algunos ya vienen en la barra de elementos que pone Word en la pantalla (en su parte superior). Esto es importante porque algunos estilos se usan para poder generar la tabla de contenidos, entre otras cosas. No obstante, si se nos ocurre usar la tecla tab (tabulador), para mover texto, hallaremos que a Kindle esto no le gusta y el formato se puede echar a perder o no verse adecuadamente en todos los dispositivos.

Kindle tiene un programa además, que permite observar cómo se verá el libro recién formado (antes de subirlo a Amazon). Es algo así como un emulador. No obstante esto, hay que reconocer que este sistema es engañoso, porque por ejemplo, si usamos un tipo de letra (una fuente), que Kindle no maneja, entonces ya en el libro final, si esta fuente no existe en la máquina o dispositivo del usuario, Kindle la cambiará por otra. Esto puede ser un grave problema de repente el cual no podremos notarlo aparentemente porque al ver nuestra obra en el formato electrónico, con los tipos de letra que tenemos instalado, no observaremos ningún problema.

De hecho, enfrenté este problema porque llevo ya una buena cantidad de tiempo escribiendo un libro sobre Aron Nimzowitsch, el cual pensé, debería ponerlo en Kindle y ver qué tanta aceptación tiene. Los que no sepan de libros de ajedrez imaginarán al menos que hay toda una notación en el juego, para describir las jugadas que se hacen. En los libros antiguos (antes de los años setenta del siglo pasado), se usaba la notación descriptiva. Por ejemplo, la Ruy López, variante del cambio, podría escribirse así 1. P4R, P4R 2. C3AR, C3AD 3. A5C P3TD 4. AxC PDxA. Hoy en día se usa la notación algebraica y esta misma apertura se pondría así: 1. e4 e5 2. Cf3 Cc6 3. Ab5 a6 4. Axc6 dxc6. Sin embargo, en los libros modernos, tal vez por la influencia de la publicación yugoeslava, el “Informador Ajedrecístico”, que empezó a salir cada 6 meses con las mejores partidas del semestre anterior (y que ahora sale cuatro veces por año), las piezas, que en general son R(ey), D(ama), A(lfil), C(aballo) y T(orre), y se utiliza la inicial de cada una (a excepción del P(eón), que se omite y así, cuando no aparece, hablamos que es una jugada de peón), pero que en el Informador aparece una figurita (ver imagen más abajo), que muestra la pieza. De esta manera, la apertura Ruy López, con la variante del cambio de la que hablamos, podría ponerse así (arriba pueden verse las figuritas que representan cada pieza, Rey, Dama, Alfil, Caballo y Torre.

Todos los libros modernos ponen las jugadas como en el ejemplo anterior, usando el tipo “figurine” de ajedrez, es decir, el tipo de letra corrrespondiente a las piezas de ajedrez (hay varios estilos de este tipo de figuritas de ajedrez disponibles en el formato TrueType). Sin embargo, la plataforma Kindle no acepta cualquier tipo de letra sino que se adhiere a unos pocos (me parece que son máximo 8). Así, un libro de ajedrez escrito para usarse en formato electrónico Kindle, no puede crearse con figurines porque no es un tipo de letra que use comúnmente esta plataforma.

Lo mismo pasa con los diagramas de ajedrez, los cuales representan muchas veces posiciones claves de las partidas que aparecen en los libros. Un diagrama de este tipo puede verse así:



Hay tipos de letra (truetype), que permiten hacer diagramas. Hay letras que representan cada pieza en casilla blanca o casilla negra y se pueden formar diagramas completos. De nuevo, esto es un problema para Kindle, porque este sistema no acepta tipos de letra tan específicos. La plataforma está diseñada para libros con los tipos de letra más comunes y aunque parece que hay herramientas para poder poner tipos de letra embebidos, no parece garantizar que los libros Kindle se vean bien en cualquier dispositivo. En resumen, y esto parece que puede aplicarse a libros que contengan tipos de letra específicos, diferentes a los que Kindle maneja por omisión: no se verán bien en ningún dispositivo que tenga el programa de lectura de Kindle o bien, en cualquier dispositivo móvil incluyendo el propio Kindle Reader y podríamos no notarlo si dichos tipos de letra los tenemos instalado en nuestra máquina.

¿Qué hacer? En particular para los libros de ajedrez la solución es utilizar diagramas que sean imágenes (aunque el resultado final sea de muchos más megabytes pues los diagramas serán imágenes JPG), y en la anotación de las partidas no usar los figurines, sino las letras que representan a cada pieza. Pienso que este problema puede darse en otro tipo de libros e imagino que poco a poco, con el avance de la tecnología, estos problemas se resolverán. Mientras tanto, hay que tomar en cuenta estos detalles que la guía Kindle no indica. De hecho, todo esto lo hallé en un libro que me costó 73 centavos de dólar (From Word to Kindle), de Aaron Shepard. Una guía de hecho mucho más amable que la que presenta Amazon y que menciona los potenciales problemas que pueden surgir cuando uno decide formar un libro para la plataforma Kindle.

Si usted está pensando en publicar un libro para Amazon Kindle, busque algunas de las guías más usadas para formar los libros para esta plataforma. Se puede, evidentemente, hacer con las indicaciones del libro gratuito que se puede descargar de Amazon, pero francamente, hay más de un autor que explica de mejor manera lo que la empresa virtual de libros debería explicar.

Tuesday, September 08, 2015

Programas de TV deplorables


Ayer por Facebook a un buen amigo, Enrique, ingeniero y médico de profesión, amén de hacerla de actor en Televisa, hacer anuncios o participar en programas de concursos en Tv Azteca, nos dio la noticia de que saldría hoy en el programa "Laura de América", en donde la peruana (creo que ya se hizo mexicana), Laura Bozzo, presenta casos, supuestamente reales, de familias disfuncionales, que caen en situaciones bizarras, en donde el común denominador es la ignorancia profunda de estos personajes. Pueden hablar de "me enamoré de fulanito en internet" o "mi suegra es una bruja de magia negra", o cualquier tema que le plazca a la señora Bozzo.

Cabe decir que siempre pensé que estos programas eran una farsa y que las personas que salían ahí eran "actores", pero además -ahora lo sé porque vi a mi amigo en el mismo- el programa de TV es un mega-anuncio de cuanto producto innecesario hay y en donde la publicidad sigue dentro del programa, dejando quizás un 25% del tiempo efectivo de transmisión para los casos que busca presentar. Y si pensaba que a lo mejor las personas que se prestaban a salir en el programa de marras eran reales que estaban pasando por un conflicto por demás extraño, Enrique Gómez nos sacó de la duda indicando que lo habían contratado para aparecer en ese programa. Había hecho un "casting" y le cambiaron el rol que iba a actuar hasta tres veces.

Enrique contó pormenores de este asunto de su contratación y como ya ha salido incluso en alguna novela (creo que como médico), seguramente no tenía problemas en ir al programa de la Sra. Bozzo porque finalmente sabe actuar. El asunto es que el programa presenta los casos como reales cuando son una invención del equipo de producción. No existen estas familias que se pelean frente a las cámaras de la TV, en donde casi en ocasiones llegan a los golpes. Algunas de las mujeres que salen hasta lloran,, gritan se pelean verbalmente con otros de los "actores". Laura de América busca concluir las cosas de la mejor manera posible. Si existe algún personaje indeseable, laura lo presenta como "el desgraciado" y si llega un momento álgido en el escenario, el respetable empiez a corear "¡Fuera!, ¡Fuera!", y el personaje en cuestión sale del proscenio entre abucheos. Vamos que es un espectáculo en donde la calidad del ser humano se denigra constantemente. Y como seguramente tiene muchísimos anunciantes, el programa se mantiene en la televisión.

Vi a Enrique un momento. Su actuación es creíble sin duda, pero es triste venderse así. Enrique nos dijo que fue una muy buena oferta en dinero, amén de darle enseres domésticos y además, promesas para participar en telenovelas posteriormente. Yo no sé si valga todo eso el exponerse mediáticamente en un programa tan deplorable. Enrique -como dije- es un tipo peculiar, con dos carreras terminadas, buen ajedrecista y en algún momento hasta taxista fue. Permitirse estar en ese programa, que probablemente se olvide rápido, no le hace ningún favor a él. Vamos, que no es la mejor imagen de alguien que quiere quizás estar en los medios. Si todos supiéramos que el programa en el que asistió todo es una representación pues se entiende: todos son actores y listo. Ejecutan un guión y ya. Pero no, Laura de América los presenta como casos reales y ahí está la falta de ética, ahí reside lo triste de todo este asunto.

Ver a Enrique me dejó un muy mal sabor de boca y sé que él tampoco quedó satisfecho. Ojalá y que esta experiencia le sirva para no caer en estas trampas mediáticas tan, pero tan lamentables.

Saturday, September 05, 2015

Un truco para proteger el software


El 8 de agosto del 2013 publiqué un artículo sobre un programa que hace reconocimiento de caracteres visualmente (OCR), el cual usa una biblioteca de funciones de un tercero, que yo no escribí, sólo usé.

La biblioteca es gratuita pero estaba limitada en tiempo de uso, cosa que no sabía. El asunto es que de pronto mi programa dejó de funcionar. De alguna manera, pensé, la biblioteca tiene por ahí alguna función que sabe en qué momento se instaló el software y entonces calcula si está todavía en período de pruebas o no. Normalmente muchos programas en modo de prueba, que duran muchas veces no más de 30 días, permiten que el interesado pueda revisar, probar y usar el software sin ninguna limitación en ese tiempo. Después del mismo el software ya no se puede ejecutar.

Los esquemas para hacer software de prueba pueden funcionar de la siguiente manera: escribir en el disco duro del usuario, en alguna parte, un archivo escondido con la fecha de terminación del período de prueba. El software, antes de correr, va a buscar ese archivo y lo lee. Si la fecha del sistema ya es mayor a los 30 días, el software termina. Si por alguna eventualidad dicho archivo no existe, también el sistema termina la ejecución.

Hay otros esquemas más sofisticados que escriben en el REGISTRY, un archivo fundamental en la PC que si desaparece, mete en problemas al usuario de la máquina porque probablemente no pueda ver siquiera los programas que tiene en la máquina. Es un archivo muy sensible y ahí muchos fabricantes de software ponen sus claves de registro para conocer si se trata de software de prueba o no. No me voy a meter más con este archivo y recomiendo que si no saben cómo funciona, ni metan las manos ahí. Si lo hacen y cometen un error, es casi garantía que su computadora quedará inutilizada.

Pues bien, regresando al problema, me sorprendía que el ejecutable de mi programa de reconocimiento de caracteres supiera que ya no puede ejecutarse. Pensando un poco sobre esto, hallé que la única manera que podría saber eso era con al fecha de creación del programa escrito. Entonces decidí hacer una prueba: cambiar la fecha del ejecutable por la del día de hoy y probar. ¡Y sorpresa! Funcionó.

Para cambiar la fecha de creación de un programa se usa una utilería llamada touch, la cual cambia automáticamente la fecha del software. La sintaxis es:

touch nombre_del_archivo

Este programa no es de Windows, sino que se corre en modo consola. Como mucha gente no sabe cómo pasar a modo consola, escribí en un archivo batch dos instrucciones que hacen la tarea:

touch ocr01.exe
ocr01

Al darle doble click a este programa .bat, el sistema cambia la fecha al día de hoy y corre el software sin problemas. Así pues, asunto solucionado después del uso de un par de neuronas para entender el esquema de protección usado por el autor de la biblioteca de software.

Si alguien cree que hago mal, le sugiero entonces me compre la biblioteca comercial de dicho paquete de OCR y asunto moral solucionado.

Si le interesa este programa, escríbame a morsa@la-morsa.com y se lo mandaré a su correo.

Friday, September 04, 2015

La hipocresía humana



No voy a poner la foto del niño de 3 años sirio que aparece ahogado en la playa. Es una de esas imágenes que puede estremecer a cualquiera sin duda. Desde la publicación de la foto en las redes sociales han salido las más diversas voces a pedir que los países le den asilo a los refugiados. Vamos, hasta una propuesta en Change.org por parte de algún mexicano pidiendo que nuestro país abra las puertas a los que están en esta problemática.

La realidad sin embargo, es otra. Los usuarios de las redes sociales -ya lo he dicho antes- son los mejores activistas de sillón y se indignan con justa razón por este tipo de acontecimientos, pero no hacen nada. Veamos: supongamos que el gobierno de México acepta a los refugiados. ¿Dónde los va a meter? ¿Quién se encargará de sus necesidades básicas: comida, higiene, servicios de salud, educación? De eso nadie dice nada. Nomás apelan a que "recibamos a los refugiados y ya, porque es cierto, son personas que la están pasando verdaderamente mal. Pero la petición no involucra a quienes la hacen. Es muy fácil decir: "¡Hágase A, B o C! ¡Y hágase ya! Y si se les ignora entonces podrán decir que el gobierno es criminal, que no tiene corazón, que hay que hermanarse con los que están en tragedia, etcétera.

Pero ¿qué hacen estos peticionarios? Nada real. Puras palabritas en las redes sociales indignándose y exigiendo solución a problemas de otros países cuando en el propio tenemos dificultades que si las tomáramos en cuenta, no tendríamos siquiera tiempo para ver qué pasa fuera del país. Así pues, se me ocurre pedirles a todos estos que piden que México acoja a los refugiados, que hagan algo en favor no de esa pobre gente, sino de la nuestra, en donde más del 50% de la población mexicana vive en la miseria. ¿Qué tal acoger a una familia de cuatro personas, de nuestro país, y les demos refugio en nuestras casas? ¿qué tal darles alimento, servicios de higiene, un lugar para dormir y si se puede hasta educación? ¿qué tal tenerlos en nuestras casas un mes y así los ayudamos? ¿No sería mejor ver la viga en el ojo propio en vez de ver la paja en el ojo ajeno?

Y sí, el mundo es muy complejo y problemático. Lo que viven estos refugiados es terrible, pero es igual de terrible lo que viven muchos de los mexicanos y ni quien se acuerde de ellos. Estos activistas de sillón, si no quieren caer en la hipocresía absoluta, deberían actuar en consecuencia. Y si pido estas acciones es porque pedirles que donen a esta causa de los refugiados es inútil considerando que nunca sabemos si nuestros donativos de verdad llegan a los afectados. Entonces tomar el toro por los cuernos me parece más razonable. Vivamos esta indignación e intentemos ayudar no aun refugiado sirio, sino a un compatriota que está igual o más amolado que el de otro país. ¿Quién se apunta? ¿Quién dice yo?

Wednesday, September 02, 2015

Un lenguaje para patrones en ajedrez II


En el artículo pasado hablamos de un lenguaje de patrones para las posiciones de ajedrez. Definamos más formalmente esto: Un patrón es una generalización de un objeto que contiene sus características esenciales. En ajedrez podemos definir las características de una posición en términos de ataque y defensa. Así pues, solamente hay dos tipos de relación.

Un ataque se da cuando una pieza de un bando ataca a otra (del bando contrario). Una defensa se da cuando una pieza de un bando defiende a otra (del mismo bando). Es decir la definición de ataque se da entre piezas rivales y el de defensa por piezas del mismo bando.

Las relaciones más importantes pueden definirse así:

  • P1 P2 donde P1 (pieza 1) ataca/defiende directamente a P2 (pieza 2). Por ejemplo: T p (Torre blanca ataca peón negro)
  • P1 P2 P3 donde P1 ataca directamente/defiende a P3 vía P2. Por ejemplo: T D p (Torre blanca ataca al peón negro indirectamente a través de la Dama blanca). A eso le denominamos ataque de rayos X.

También podemos definir la relación de un ataque/defensa/dominación a una casilla, P1 C1, donde P1 es una pieza y C1 es una casilla determinada.

Las relaciones que parecen más importantes son:

  • P1 C1 Pieza ataca/defiende/domina a Casilla
  • P1 P2 Pieza 1 ataca/defiende Pieza 2
  • P1 C P2 Pieza 1 controla/domina la Casilla C desde donde ataca/defiende a la pieza 2
  • P1 P2 P3 Pieza 1 ataca/defiende a P3 indirectamente vía la pieza 2
  • P1 P2 P3 P4 Pieza 1 ataca/defiende a la Pieza 4 indirectamente a través de P2 y P3.

Los siguientes ejemplos pueden mostrar cómo pueden representarse los patrones y además, cómo ellos representan (en posiciones que aparentemente son distintas), el mismo patrón. Empecemos por definir la relación ataque/defensa:


Alfil ataca el peón negro de h7 y a su vez es defendido por el peón de c2.

Cabe señalar que esta es una descripción estática porque no se define movimiento alguno a través del patrón definido. Requerimos un componente dinámico, que nos indique qué jugada o jugadas hay que hacer para que el patrón se considere ganador.

----

La necesidad de definir una parte dinámica basada en las jugadas por hacer por parte del bando ganador en el patrón muestra porqué el patrón es importante ya que define una posición ganadora o de la que se saca ventaja. No me queda aún muy claro qué profundidad (cuantos plies) deben describirse. En una primera aproximación bien podríamos definir solamente un ply (media jugada, es decir, un solo movimiento de alguno de los bandos), y esperar que un motor de ajedrez hiciese el árbol de variantes para encontrar la secuencia ganadora.

Podemos entonces asociar movimientos a los patrones definidos. Una P1 que capture una P2 y le dé la ganancia de la pieza 2 podría escribirse como:

P1 P2 [+P2]

Con ese criterio podríamos establecer la siguiente notación, por ejemplo, para cuando la dama captura una pieza rival: D p [+p], D t [+t], D c [+c], D a [+a], D d [+d]. Obviamente no puede existir D r [+r] porque el monarca rival nunca se captura. Recibe mate y se acaba la partida.

Si tenemos a una dama que captura a una torre enemiga (véase siguiente diagrama) pero a su vez esa dama es capturada por un peón que defiende a la torre mencionada, escribiríamos:



La dama blanca captura la torre negra (que está defendida)

D t [+t – D]

Es decir, estaríamos hablando de un sacrificio de dama propia por una torre rival.

En las siguientes dos posiciones podríamos definir el factor dinámico de la siguiente forma:


Nimzowitsch - Tarrasch
San Peterburgo, 1914
Juegan las negras
Elemento dinámico: 1. … Axh2+



Lasker - Bauer
Amsterdam 1889
Juegan las blancas
Elemento dinámico 1. Axh7+


Y suponer que un motor de ajedrez puede hallar el resto de la combinación que no excede 10 plies, (cinco jugadas).

Otra opción, que ahora estoy investigando es la de generar la posición final a partir del patrón. Por ejemplo, en las posiciones anteriores (Lasker-Bauer y Nimzowitsch-Tarrasch):

Lasker-Bauer:


                                 Posición Inicial                                  Posición final


Nimzowitsch-Tarrasch:


                                Posición Inicial                                  Posición final


Podríamos decir que hay una transformación entre la posición inicial (la cual por el momento no sé cómo puede definirse), cuando existe el patrón y el resultado final de la secuencia de jugadas que llevan a obtener la ventaja (o el triunfo). Esta operación bien podría denominarse el colapso (o reducción) de la posición rival (que nace de la secuencia obligada que lleva al bando ganador a obtener la ventaja).

Esto desde luego puede representarse como un árbol de posibles variantes, tarea no muy difícil de hacer con una computadora. Así pues, a partir de la secuencia ganadora, se pueden ver todas las sub-secuencias que llevan a la posición final ganadora (o a la que saca una ventaja definida).

Cabe señalar que en los ejemplos no importa realmente el color de las piezas en el patrón. Si las negras son las que lo ejecutan, lo único que hay que renombrar son las coordenadas (restando 9 a cada una de ellas, es decir, un alfil blanco que ataca el peón de h7 se convierte en un alfil negro que ataca h2).

Un hecho importante sobre este lenguaje de patrones es que permite describir posiciones que precisamente tiene sus características generales. Sin embargo, las posiciones mostradas no son estrictamente las mismas y ahora me parece claro que habría que considerar un índice o una métrica que definiera qué tan similares son los patrones de posiciones específicas. Es decir, parece evidente que no todos los elementos se repiten pero que hay algunos que son fundamentales para definir al patrón.