Está en la página 1de 164

Prlogo

Existen en la actualidad una inmensa cantidad de libros acerca de la programacin. La cantidad de textos
sobre cmputo se ha multiplicado de manera extraordinaria y no cabe duda que la razn de esto es la red
Internet y el hecho evidente del uso de la computadora personal a todos los niveles, pero cada vez ms
cercana a la cotidianidad. En su mayora, los libros de programacin son finalmente libros de texto, para ser
usados probablemente por profesores en sus respectivas ctedras universitarias. No obstante esto, no hay
muchas obras de divulgacin sobre la labor de programar. Es fcil? Es difcil?

La mayora de la gente no intentar programar computadoras debido a una proverbial idea de que es
demasiado complicado y que eso se estudia solamente en las universidades o es nicamente para
especialistas y nerds. . Cabe sealar que adems de esto, los libros sobre la enseanza de la programacin
son ridos y poco atractivos para el comn de los mortales. Si uno hojea dichos tratados ver temas como:
Uso de listas ligadas y doblemente ligadas, Caso ejemplo: programa de costos unitarios, Estructuras de
datos dinmicas, etc. Es claro que este tipo de tpicos hacen que muchos programadores potenciales
simplemente dejen el libro en donde lo hallaron.

Sin embargo, la computacin se ha hecho innecesariamente reverente y yo soy de la opinin que la diversin
puede y debe estar presente cuando se programa una computadora. No todos son textos de solemnidad
doctoral o software formal y serio de hojas de clculo, procesadores de palabras o bases de datos.
Afortunadamente la computacin da para ms que eso y en ese sentido este libro es la propuesta que bien
puede ser para ensear a programar en algn lenguaje popular o bien simplemente como una coleccin de
ensayos sobre cmputo, ajedrez computarizado, Internet, la inteligencia artificial, etc., temas que finalmente
nos son cotidianos por la relevancia que la ciberntica ha cobrado en los ltimos aos.

Con el empeo de que la programacin es de esas pocas cosas divertidas que pueden hacerse con los
pantalones puestos se encaran los temas dentro de este libro. A partir de artculos que originalmente se
publicaron en peridicos virtuales y reales, pero reescritos para darles forma ms completa (las ideas
apoyndolas con argumentos tcnicos), amn de no tener las limitaciones que imperan en un artculo de 5000
caracteres, este libro pretende que el lector se introduzca al mundo de la programacin y que a la larga lo
motive para crear sus propios sistemas. Algunos artculos son simples reflexiones filosficas sobre ciertos
temas de inters en el mundo de la informtica, otros (la mayora), son sistemas completos que pueden ser
usados por los lectores de manera libre y que contienen ideas especficas de programacin.

Hoy da las mega-obras del software estn hechas: hojas de clculo, procesadores de palabras y bases de datos
ya son comunes en las llamadas suites, paquetes completos para la productividad, impuesta por el modelo
econmico de occidente. Todos estos grandes esfuerzos se hicieron por enormes equipos de programacin.
Sin embargo, hay espacio para todo gnero de aplicaciones y programas menos ambiciosos pero que
resuelven problemas cotidianos y que pueden ser escritos los ms complicados en un par de semanas por
una sola persona, si se trabaja lo suficiente en el problema a resolver. Puede verse as que an hay margen
para todos los programadores de fin de semana, por decirlo de manera coloquial.

El libro contiene un disco compacto (CD) con todo el cdigo fuente y programas de apoyo, as como algunas
carpetas con componentes para ser usados por el lector interesado as como archivos adicionales. As pues, no
se necesita necesariamente meterse de lleno en el tema y aprender a programar a la fuerza para poder usar el
contenido e informacin aqu descrita, aunque evidentemente no le caera nada mal hacerlo de esa manera.


Manuel Lpez Michelone
Enero 2011

ndice


Primeros pasos
Reloj digital
Anatoma de un metrnomo
Reproductor MP3
La experiencia Bach
Percepcin extrasensorial en casa
Niveles etlicos
Para ganar en las encuestas
Un mago por software
Software irreverente
Regalo de nuestros patrocinadores
Los bytes privados

Grficas
Imgenes y filtros
Blending
Fotos recursivas en color
Sopa de letras
Creador de iconos
Fotos al leo
FotoMorsaicos

Inteligencia Artificial
Conjugacin de verbos regulares
Cuadrados mgicos
Lapsus: un corrector ortogrfico inteligente
Corrector fontico
Creacin de crucigramas
Engaando a la prueba de Turing
Creacin de sudokus

Ajedrez
Creador de diagramas de ajedrez
Protector de pantalla en honor de Kasparov
El Secreto de los grandes maestros
Calculadora de rating Elo
Ajedrez a la ciega
Tarjetero electrnico de posiciones de ajedrez
Qu tan bueno es su ajedrez?
Editor de partidas de ajedrez solitario (ver captulo anterior)
Patrones en ajedrez I
Patrones en ajedrez II

Internet
Est conectado a Internet?
Contra los spammers
Biomtrica: No es lo que escribes, sino cmo lo escribes.
Cuide a sus hijos
Bloqueador del msmessenger

Proyectos varios
Juegos de palabras en televisin
Mensajes subliminales
Programando la Palm
Es usted honrado? (parte I)
Es usted honrado? (parte II)
Bosquejo de un curso de ruso
Portafolio para modelos
Sintetizando la voz
Son sus empleados productivos?


Apndices
Apndice I Entrevista con Robert Silvers
Apndice II Programa visualizador de los fotomorsaicos

Primeros pasos

Reloj digital


Cuando empec a programar en Delphi (realmente turbo Pascal para Windows), mi primer sistema fue un
reloj digital. La razn de ello es que, aunque es un proyecto simple, requiere utilizar algunos componentes del
sistema y entender cmo es que Delphi maneja algunas estructuras de datos usuales. A partir de ah, escribir
un programa que acte como un reloj digital es francamente sencillo.

Primero necesitamos saber que los diseadores de Delphi han integrado un tipo de datos llamado TDateTime
y TTime (la T inicial es una convencin muy usada para decir que se est hablando de algn Tipo de datos
en particular). As, TDateTime es del Tipo DateTime (fecha y hora, en este ejemplo). Adems, el sistema nos
da funciones para manejar ese tipo de datos fcilmente. Para el caso que nos ocupa (no estamos necesitando
ms que la hora sin necesidad de la fecha), usamos el tipo TTime, y entonces definimos una variable, llamada
Hora, la cual es precisamente de ese tipo. Ahora entramos a las funciones de manipulacin del tiempo. Si
ponemos la instruccin
Hora := ow;

El sistema regresar en la variable hora la hora actual que tiene la computadora en ese momento. Si queremos
hacer un reloj digital, que vaya desplegando segundo a segundo las horas, habr que leer el reloj de la
mquina una vez cada segundo (60 veces por minuto). Para hacer esto automticamente, se utiliza un
componente de la paleta de sistema llamado Timer, cuya funcin es disparar un evento cada cierta cantidad
de milisegundos. De esta manera, si le decimos que dispare cada 1000 milisegundos (es decir, cada segundo),
el timer disparar un evento cada segundo exactamente. Entonces, simplemente en el cuerpo del timer leemos
la hora del reloj segundo a segundo y si la desplegamos, por ejemplo en una etiqueta, tendremos un reloj
digital totalmente funcional (claro, cambiando el tipo TTime al tipo string, es decir, Delphi nos entrtega el
formato de la hora de manera muy especfica, pero a travs de la funcin TimeToStr, podemos convertirlo en
una cadena de caracteres y para desplegarlo, entonces usamos el componente etiqueta.



Imagen 1
Ejecutando el reloj digital

Hasta aqu podra decirse que el proyecto funciona. Pero en un afn de hacerlo ms bonito, busqu en
Internet si haba algn componente que me desplegara los nmeros de las horas, minutos y segundos en una
especie de display de siete segmentos, como se ven en muchsimos instrumentos tecnolgicos. Encontr un
componente freeware (es decir, totalmente gratis). Lo instal en la paleta de Delphi y simplemente lo us
sin mayores contemplaciones. En el display de 7 segmentos se puede poner cualquier nmero del 0 al 9. Una
vez hecho esto, el pseudocdigo del timer vendra a ser algo como esto:



Pseudocdigo del timer
Lee la hora
Psala a una variable
Convirtela a una cadena de caracteres para que sea leble por los seres humanos
Toma el primer carcter de la cadena es 1? Eso quiere decir que son ya las 12
(ojo, usamos el formato de 12 horas)
Si no es 1 entonces agrega a la cadena un cero para tener 0H:MM:SS AM/PM
Revisa ahora cada carcter de Horas, minutos y segundos
Ponlos en el display de siete segmentos correspondiente
Revisa si el dcimo carcter es A o P (AM o PM). De acuerdo a eso, pon en la
etiqueta un am o un pm.
Termina

Despus de eso me di por satisfecho. Mi reloj digital funciona perfectamente y claro, podra an agregarle
funcionalidad, como por ejemplo, ponerle sonido (que haga tic tac), o bien, que tenga una alarma. Las
posibilidades suelen ser infinitas, pero en este caso no har ms. Basta con esto para que el lector tenga con
qu entretenerse. El cdigo es muy sencillo de seguir. No tiene dificultad alguna.
Primeros pasos

Anatoma de un metrnomo


Mi padre era guitarrista y desde que tengo uso de razn lo vi estudiar ayudado de un aparato mecnico
conocido como metrnomo. Este aparatito da una pulsacin cada cierto tiempo determinado. As, mi padre,
cuando estudiaba las escalas, por ejemplo, poda hacerlas a mayor o menor velocidad, de acuerdo a las
necesidades interpretativas o de habilidad en los dedos, incluso, que est practicando en ese momento.

Un metrnomo es una especie de reloj que da un tic en instantes por dems precisos. Los metrnomos ms
conocidos tienen la forma de una pirmide y una barra que hace el equivalente de un pndulo de reloj, pero
que a diferencia de este ltimo, que da un tic cada segundo, el metrnomo puede ajustar esa barra con un
contrapeso para que vaya ms rpido o ms lento. Los metrnomos tradicionales tienen mediciones que van
de 40 a 208 pulsaciones (o golpes) por minuto.

Obviamente, teniendo a un padre profesional de la msica, he visto en casa ms de un metrnomo. El que
usaba normalmente era uno pequeito, rojo, como diseado para llevrselo de viaje. Sin embargo, me mostr
tambin uno suizo, que es como un reloj de mueca y dentro de la cartula del mismo est el pndulo que se
mueve de un lado a otro, como si fuese una manecilla ms. Por supuesto que hay tambin metrnomos
digitales, los cuales presentan en un display la cantidad de golpes por minuto que el usuario quiere tener. La
mayora son de bateras aunque hay, desde luego, algunos que se conectan a la corriente elctrica de la pared.

Pero sin importar el modelo del metrnomo, ste tiene su costo. Posiblemente se puede hacer de uno por
alrededor de 200 a mil pesos quizs. Debido a esto, y considerando que la vida est muy cara, decid que era
momento de hacer mi propio metrnomo computarizado de manera que, usando las bocinas de la
computadora, me diera un golpe en intervalos muy precisos de tiempo.

La tarea pareca muy simple. De hecho, antes de programar nada, decid hallar sonidos tpicos de
metrnomos, es decir, del sonido que generan cuando dan un golpe. Encontr en la red ms de un sonido wav
y eleg el ms parecido al que he escuchado siempre en los metrnomos que mi padre tiene. Una vez hecho
esto, me met a Delphi (la herramienta de desarrollo que uso) y le ped que generara un golpe cada segundo,
usando la programacin orientada a objetos. Esto es, usando un componente que dispara un evento (como el
tocar un sonido) en Windows cada cierta cantidad de milisegundos. Despus aad una barra de scroll, que
permite desplazar un control de izquierda a derecha para incrementar o disminuir la cantidad de golpes por
minuto. Hall la frmula que me dice cuntos milisegundos debo poner en el componente timer, es decir, en
el que dispara un evento sonoro cada cierto definido tiempo precisamente en milisegundos, de acuerdo a la
cantidad de golpes que quiero por minuto. Y una vez hecho todo esto, al correr mi aplicacin, encontr que mi
programa, a ritmos rpidos, no funcionaba.



Imagen 1
El programa del metrnomo

Qu estaba pasando? Por qu no suena? Despus de algunas cavilaciones di con el misterio: el componente
que hace sonar el tono audible del metrnomo no tiene suficiente tiempo para que el sistema lance el evento
de tocar el tono, y volverlo a hacer en el tiempo requerido. Dicho en otras palabras, a la mquina le lleva ms
tiempo que el necesario el tocar el tono correspondiente y no le da tiempo a hacer el que le sigue porque
cuando lo quiere hacer, an est sonando el tono anterior.

Y de repente, un programa que prcticamente estaba escrito en 10 minutos se convirti en un reto complicado.
Cmo hacer para que suene en los tiempos precisos? Era claro que con tiempos largos, hasta 90 pulsaciones
por minuto, el sistema haca la tarea correctamente, pero ms all de eso el sistema no poda hacer sonar el
tono del metrnomo. Un poco de investigacin me llev a encontrar la rutina

sndplaysound(sonido.wav, snd_async);

que haca lo que yo quera y en los tiempos correctos. Quit entonces mi componente de audio multimedia
(que evidentemente le mete una sobrecarga al sistema en cantidad de instrucciones a ejecutar), y lo sustitu
por ste. Y entonces todo funcion de maravilla. Proced entonces a vestir el programa ponindole una
buena foto de un metrnomo real, as como agregarle los detalles para que el software se viera ms bonito. Y
listo: metrnomo en software en un santiamn, aunque eso s, sin sonido realista.

Primeros pasos

Reproductor MP3


Las mquinas que podemos encontrar hoy en las tiendas tienen cualquier cantidad de artilugios: fax/mdem,
monitor de super alta resolucin (ultraVGA que le dicen), teclado ergonmico de Microsoft (que parece que
se derriti al dejarlo al sol), disco duro de no s cuntos gigabytes, CD-ROM de 24 velocidades (al menos),
bocinas de audio, roedor, conexin directa a Internet de alta velocidad, etc. Por el precio que vemos
consideramos que es una ganga (cuando hace un ao un equipo menos avanzado quizs nos cost 25% ms de
lo que anuncian ahora). Sin embargo, todo lo que nos dan sirve para bien poco si no tenemos el software que
permite manejarlo. De esta manera, la conexin a Internet, por ejemplo, slo es posible porque se tienen todos
los programas que inicializan el mdem, dan automticamente las instrucciones necesarias para conectarnos,
etc.

Uno de los ms interesantes artefactos que pose la computadora es el CD-ROM. Este permite leer discos con
datos (que son idnticos en tamao y color a los ceds de msica), y en los que les cabe una barbaridad
(alrededor de 700 megabytes). Mucha gente no ignora que su lector de CD-ROM puede tocar los ceds de
msica. Para esto, claro est, se necesita un software que haga precisamente esa tarea. En la red
(http://www.shareware.com) encontrar montones de estos programitas para prcticamente todas las
plataformas de hardware e incluso Windows ya trae de fbrica una versin para esa tarea particular. Sin
embargo, a veces estos sistemas tienen montones de caractersticas que francamente quizs no queremos o
necesitamos. Por ejemplo, no slo estos programas leen discos con msica, sino que tambin tocan archivos
MIDI, WAV e incluso de video (AVI o MPG). En suma, hacen prcticamente todo lo referente a lo que
llamamos una parte fundamental de la multimedia. Esto se parece un poco a cuando vamos al supermercado a
comprar una batera para nuestro radio. Resulta que slo las venden en paquetes de cuatro. Y no hay vuelta de
hoja, hay que comprar el paquete completo, no se puede solamente pagar la pila necesitada.



Imagen 1
El mp3 minimalista

Por esto precisamente, porque los sistemas compartibles (shareware) y otros comerciales hacen ms cosas de
las que quiero, decid escribir mi propio programa lector de ceds musicales. Sera fcil? Difcil? Ya
sospechaba que esta labor no sera demasiado complicada si se tienen las herramientas de software adecuadas.
As entonces puse manos a la obra y en Delphi hall que esta tarea es sorprendentemente sencilla. Resulta
que el sistema ya tiene incorporadas las llamadas al API para manejar no slo ceds de msica, sino archivos
wav, mid, avi, dat, formato de videodisco, etc. Maravilloso porque simplifica la tarea. No necesito saber
siquiera cmo se encuentra la informacin en el ced de msica. Una ayuda ms la otorgan los componentes
creados ex profeso para manipular audio y vdeo (como el TMediaPlayer). Con esto, prcticamente se puede
escribir un reproductor de ceds casi sin escribir cdigo.

Primeros pasos

La experiencia Bach


J.S.Bach (1685 1750 ) qued hurfano a los diez aos. Convivi con su hermano mayor, organista en
Ohrdruf y en secreto, a la luz de la luna, aprendi a escribir msica copiando partituras que su hermano no le
hubiera permitido estudiar. Al ser descubierto, le confiscaron las copias, las que fueron recuperadas hasta la
muerte de su hermano en 1721. Aquellos aos en Ohrdruf, dieron al joven Juan Sebastian una prctica del
rgano y el conocimiento de las obras para este instrumento existentes en la escuela del sur de Alemania. En
1700, para ganarse la vida, se traslad a Lneburgo e ingres al coro. Fue amigo del organista Georg Bhm y
conoci a grandes maestros organistas de Alemania del Norte. Como dato curioso, Bach recorri casi
trescientos kilmetros a pie hasta Lbeck para or a Buxtehude en Los conciertos de la tarde (Abendmusik)
en los que tocaba sus obras y las de otros compositores, conviertiendo a esa ciudad el centro musical de la
Alemania del Norte.

De las 222 cantatas que escribi, siete son de autenticidad dudosa y hay cierto nmero de fragmentos de
cantatas pedidas. Adems, compuso msica religiosa, instrumental, conciertos, msica de cmara, obras para
rgano, clavicmbalo etc. Es considerado Padre de la msica ttulo, por dems merecido. A su muerte, la
msica de Bach cay en un relativo olvido. Fue hasta 1802 que Johann Nikolaus Forkel public Vida , arte y
obras de J.S.Bach y logr atraer el inters de los musiclogos. En 1829, Mendelssohn hizo ejecutar la
Pasin segn San Mateo que produjo un verdadero acontecimiento nacional.


Imagen 1
La experiencia Bach

Por otra parte, la msica de Bach contiene una estructura matemtica inigualable. Douglas Hofstadter, en su
Gdel, Escher, Bach; an Eternal Golden Braid (1979), conecta el trabajo del msico con las matemticas de
Kurt Gdel y los dibujos de M.C. Escher. Muchas de las obras de Bach contienen una estructura matemtica
compleja. La msica de Bach frecuentemente demanda un nivel especial de compromiso emocional e
intelectual, que muchas veces no todos podemos tener.

Como vengo de familia de msicos, me siento obligado a tratar el tema, aunque sea desde el reducto del
cmputo. En este caso, el software en esta ocasin es en honor a J.S. Bach. Se trata de una coleccin de
algunas de sus obras en formato MIDI (Musical Instrument Digital Interfase), el cual puede escucharse si se
tiene una tarjeta de sonido. Cabe sealar que la idea de este programa surgi de repente, cuando sin querer
hall en Internet una gran cantidad de sitios dedicados a J.S. Bach y su obra. Ah encontr toda esta msica
MIDI y decid que era buen momento para recopilarla en un solo programa. Igualmente, quienes estn
interesados en el cdigo fuente, notarn el uso de los ListBoxes, el cual es uno de los componentes ms vistos
en Windows. Aqu puede observarse cmo se usan en la prctica. Finalmente, termino con una frase, atribuda
al mismsimo Bach: o hay nada especial en tocar un instrumento. Todo lo que hay que hacer es tocar las
notas justas en el momento justo y el instrumento tocar por s mismo. Fcil decirlo, sobre todo cuando
viene de un genio de esos tamaos.


Primeros pasos


Percepcin extrasensorial en casa


Todos alguna vez hemos tenido precogniciones. Hemos sentido sin causas aparentes que algo va a ocurrir y
as sucede. En ocasiones quizs hemos dado como un hecho que sabamos lo que nuestro interlocutor
estaba pensando, o bien, nos encontramos en casa, meditando sobre cierta persona y en ese momento suena el
telfono y para sorpresa de propios y extraos, se trata de la persona a la que le dedicbamos nuestros
pensamientos.

Sin embargo, todos estos testimonios no son suficientes para poder demostrar que existe la telepata, la
telequinesis (mover objetos sin tocarlos) o la percepcin extrasensorial (P.E.S.). Nadie dice que la gente que
haya sentido algo que despus ocurre est mintiendo. Lo que queremos decir en este caso, es que no bastan
los testimonios para dar como existente este tipo de fenmenos. Hace falta un estudio ms cientfico y serio
para discernir lo falso de lo autntico.

Si se piensa analizar los fenmenos relacionados con la P.E.S., la probabilidad y estadstica son las
herramientas ms utilizadas y desempean un papel preponderante a la hora de determinar la existencia real
de tales acontecimientos. En este caso, se establecen los objetivos del experimento (qu se desea medir?).
Luego, se consiguen uno o sujetos que realizan un gran nmero de conjeturas, y despus se analizan sus
resultados para ver si se han producido desviaciones significativas de la casualidad. Durante muchos aos, los
registros de estos experimentos se solan registrar a mano, cuestin muy criticada de forma persistente.
Sucede adems, que la mayora de los investigadores dedicados a la P.E.S. son firmes creyentes de la misma,
por lo que muchas veces, los resultados carecen de la objetividad cientfica mnima y por supuesto, la
comunidad interesada no tarda en criticarlos por su falta de controles, entre otras cosas.



Imagen 1
Las cartas Zener, tpicas en el estudio de la P.E.S

Es evidente que todo experimento cientfico es sesgado de una u otra manera por los prejuicios de los
investigadores. Consciente o inconscientemente, la creencia que nuestra hiptesis de trabajo ha quedado
confirmada nos hace perder el rigor que la ciencia impone y tales errores tienden a favorecer una creencia. Por
ejemplo, en pruebas de psicosinesis, donde los sujetos tratan de influir sobre la cada de los dados, la
presencia de cmaras secretas ha demostrado que los registros manuales efectuados por los creyentes,
presentan errores significativos en favor de dicho fenmeno, mientras que los escpticos muestran registros
similares, pero en sentido opuesto a los primeros.

Con la aparicin de la electrnica y la tecnologa de las computadoras, a muchos investigadores se les ocurri
que un modo muy sencillo de protegerse de los errores inconscientes de registro era automatizar el proceso en
la medida de lo posible. Dejemos que la mquina, una vez que le hayamos incorporado un eficiente elemento
de azar, seleccione los objetivos, y diseemos a la mquina de manera tal que efecte el registro permanente e
inalterable, tanto de los ensayos de la conjetura. No obstante, es claro que tales mquinas no son a prueba de
fraude; existen escandalosos casos en donde los investigadores manipularon los aparatos para mejorar los
resultados. Sin embargo, dejando aparte estos casos de abierta trampa, un aparato electrnico representa una
excelente manera de eliminar los sesgos inconcientes en las medidas.

Hagamos un poco de historia: en la dcada de los 30, se empezaron a construir varios artilugios para
contrastar la P.E.S. en determinadas ocasiones. Sin embargo, las primeras pruebas importantes con una
mquina electrnica se realizaron hasta 1962, utilizando un sistema denominado VERITAC, que haba sido
diseado y construido por un empleado de los laboratorios de investigacin de la Fuerza Area en Cambridge.
Este sistema selecciona al azar dgitos del 0 al 9. Imprime un registro del dgito elegido, la conjetura del
sujeto acerca del dgito que se trata, el tiempo que dura cada ensayo y el intervalo de tiempo que transcurre
entre la seleccin del objetivo y la conjetura. Los contadores de la consola de control proporcionan
informacin instantnea de los resultados, pero estos contadores pueden desconectarse si as se desea. Tras
cada ronda de ensayos, VERITAC se bloquea y permanece bloqueado hasta que un teletipo imprime los
datos.

En el experimento de 1962, cada uno de los 37 sujetos complet cinco rondas de 100 ensayos cada una para
tres modos diferentes de P.E.S., realizando un total de 55,000 ensayos. Cuando se analizaron los resultados,
empleando conocidas tcnicas de significacin estadsticas, no apareci desviacin alguna del azar, ni a nivel
de grupo ni a nivel individual. Tampoco haba diferencias significativas entre las puntuaciones obtenidas por
escpticos y creyentes.

C. E. M. Hansel, en su libro: ESP: a Cientific Evaluation, dice en la ltima hoja: Si doce meses de
investigaciones sobre VERITAC pueden establecer la existencia de la P.E.S., toda la investigacin del pasado
no habr sido en vano. De no establecerse la P.E.S., podran ahorrarse muchos esfuerzos y muchos
cientficos jvenes tendran la posibilidad de enfocar su trabajo hacia investigaciones que merezcan ms la
pena.

Para 1972, el fsico Russell Targ junto con el ingeniero David B. Hurt, disearon un mecanismo mucho ms
complejo que el VERITAC original. Targ fue contratado por el Laboratorio de Electrnica y Bioingeniera de
Investigacin Stanford (SRI por sus siglas en ingls) y en colaboracin con Harold Puthorff, fsico y
cientlogo (s, adepto a las creencias de Ron L. Hubbard), decidieron dedicarse a las investigaciones
parapsicolgicas. Estos dos hombres cobraron cierta relevancia gracias a su pobremente controlado estudio
sobre las facultades paranormales de Uri Geller, el cual es en realidad un brillante mago israel, disfrazado de
otra cosa.

Puthorff y Targ consiguieron una subvencin de la NASA por 80,000 dlares para realizar sus experimentos
de P.E.S. con su nueva mquina. El informe final, de 61 pginas (1311 dlares por pgina!) fue publicado
por el SRI bajo el ttulo: Development of Techniques to Enhance Man/Machine Communications. Pero
pasemos a describir la mquina de Targ. Esta es una caja que presenta cuatro paneles cuadrados, y cada uno
de ellos puede exhibir una transparencia en color. Sin embargo, antes de mostrar cualquier imagen, un
elemento de azar de la mquina selecciona una de las cuatro imgenes como objetivo. El sujeto trata de
adivinar ste, indicando su seleccin al presionar el botn cuadrado ms prximo a ese panel. Tan pronto
como el sujeto indica su eleccin, se enciende una luz tras la imagen objetivo correcta con el fin de aportar
retroalimentacin y refuerzo. Cuando el sujeto ha acertado, suena un timbre. Un contador situado a la derecha
de los paneles indica el nmero de ensayo (1 a 25). Un segundo contador muestra el nmero de aciertos.

Desafortunadamente, los resultados obtenidos por Targ y colaboradores no parecen haberse hecho en
condiciones de control estricto. Los detractores oficiales, entre los que se encuentran Martin Gardner, han
descrito las pobres condiciones de rigor cientfico impuestas en dichos experimentos, los cuales no dejan de
catalogar a los experimentos de Targ como chapuceros y fraudulentos.

Pero siempre tiene que ser as? No habr manera de crear un sistema que elimine los errores sistemticos en
el estudio de la P.E.S.? La respuesta fue entonces crear un programa que emule todas las caractersticas de la
mquina de Targ y as, estudiar cada quien, bajo condiciones controladas la posibilidad de la existencia de la
P.E.S.

Tomemos en cuenta la poca en la que fueron desarrollados los experimentos mencionados y el hardware
utilizado. Hoy, con el avance en trminos de cmputo, copiar va software la mquina de Targ es un asunto de
programacin relativamente trivial. La idea entonces es sa: Reproduzcamos las caractersticas del diseo
original de Targ y podremos investigar la posibilidad de la existencia de la P.E.S. en la comodidad de su
propia casa.


Caractersticas Principales

El programa AutoPES, simula todos los elementos de la mquina mencionada. Contiene dos ventanas en la
pantalla, donde la de la izquierda aparece la carta seleccionada al azar por la computadora. La ventana de la
derecha se encuentra la carta que va a sugerir el sujeto a experimentacin, la cual ser comparada contra la
elegida por la mquina para saber si fue la misma o no. En la parte inferior de la pantalla pueden verse cinco
botones, los cuales contienen las imgenes de las posibles cartas que el programa puede elegir al azar. Tales
imgenes representan un smbolo elemental de reconocer: Unas rayas onduladas, una cruz, una estrella, un
cuadrado y un crculo. A la derecha de la pantalla existen dos contadores. Uno muestra la cantidad de aciertos
obtenidos y la. otra corresponde a la cantidad de fallos realizados. Existe una imagen ms, que muestra un
foco, el cual se pone de color rojo si la carta elegida por el sujeto experimental no correspondi a la elegida
por la computadora, o bien, se pone de un color verde, si la carta elegida por el sujeto coincide con la que la
mquina escogi. Esto sugiere el refuerzo y retroalimentacin que implement Targ en su mquina original.



Imagen 2
Auto-Percepcin extrasensorial. La pantalla principal

Aparte de esto, AutoPES permite guardar toda la sesin realizada con el sujeto experimental, en un archivo en
disco, en donde se muestra la carta elegida por la mquina, la carta sugerida por el sujeto en experimentacin
y el tiempo desde que se gener la carta al azar y el que se llev el usuario en hacer su eleccin.




Comentarios y dudas razonables

Ahora bien, todo investigador serio debe hacerse algunas preguntas para saber si el programa AutoPES puede
ser un aliado en la investigacin de la percepcin extrasensorial, o bien, se trata de solamente un pasatiempo
irrelevante. Yo creo en realidad que el programa tiene puntos dbiles, los cuales pueden ser severamente
criticados. Para empezar, y es donde creo que, tanto la mquina de Targ como el programa AutoPES, pueden
contener la peor crtica, es que ambos adolecen de una funcin que no genera al azar una carta entre cinco
posibles (para el software o cuatro en el caso de la mencionada mquina). Las funciones azarosas
interconstruidas en las computadoras modernas son funciones determinsticas siempre, por lo cual, no es
posible ms que generar una secuencia pseudo-aleatoria, que para usos prcticos, siempre parece gobernada
por el azar mismo, aunque en el fondo sepamos que se repite cada cierto tiempo. No s para el caso de la
mquina de Targ, qu mtodo habr usado para elegir la secuencia aleatoria, pero por las indicaciones que da
Martin Gardner en su libro, todo parece concluir que siguen una frmula pseudo-aleatoria tambin.

Este cuestionamiento puede echar por tierra cualquier experimento de alentadores resultados de la P.E.S. Se
sabe por ejemplo, que las ruletas en los casinos se nivelan perfectamente, puesto que un desnivel en el
mecanismo de giro, provoca que se repitan unos nmeros ms que otros. Los casinos buscan hacer la menor
trampa posible porque de entrada, ya tienen todas las de ganar desde que empieza uno a jugar. Es decir, que
las posibilidades reales en la ruleta siempre estn ligeramente a favor de la casa y no de apostador. As, si el
mtodo de eleccin puede ser discurrido de alguna forma por el sujeto con el que experimentamos, notaremos
que la cantidad de veces que dicho sujeto adivina la carta puede sugerir un resultado muy favorable a la
existencia de la P.E.S., cuando en realidad se trata de un truco o la demostracin de una habilidad del sujeto.

Curiosamente, Gardner en su libro jams se pregunta sobre el estado de la funcin azarosa gobernando la
mquina P.E.S. de Targ. No obstante lo burdo del error, hay que reconocer que las cosas han cambiado mucho
en 20 aos. La culpa no es totalmente del buen escptico de Martin Gardner, sino de los avances tecnolgicos,
que sobrepasan la velocidad de aprendizaje de las personas.
Primeros pasos

iveles etlicos


Las bebidas alcohlicas, en cantidades razonables, son un goce para el ser humano. En la mayora de las
fiestas el alcohol es invitado por omisin y en general eso hace que las reuniones sean siempre ms divertidas.
Por algn motivo, el alcohol est ligado, de manera indisoluble, con nuestras sociedades. Sin embargo, es
claro que el exceso en la ingestin de bebidas alcohlicas puede traer consecuencias nefastas. La gente que
conduce un auto en calidad de ebrio, por ejemplo, no slo arriesga su vida sino la de los dems. Porque el
alcohol hace que nuestros reflejos sean ms lentos y el conducir un automvil requiere precisamente de lo
contrario a los efectos que producen estas bebidas etlicas.

La ciencia ya se ha encargado de estudiar los efectos del alcohol en las personas y ha encontrado una serie de
medidas que pueden considerarse bastante fiables para saber si alguien est alcoholizado o bien se encuentra
en condiciones de hacer todas las labores y actos que las personas en sus cinco sentidos pueden realizar. Una
de estas medidas es el nivel de alcohol en la sangre (BAL Blood Alcohol Level, por sus siglas en ingls), la
cual se mide en miligramos de alcohol por cada 100 mililitros de sangre o porcentaje en miligramos. Por
ejemplo, un BAL de .10 significa 1/10 del 1 por ciento (1/1000) del total de sangre cuyo contenido es alcohol.

Cuando se beben bebidas etlicas, el alcohol va directamente del estmago al torrente sanguneo. Es por ello
que uno siente los efectos del beber alcohol con relativa rapidez, especialmente si uno tiene el estmago
vaco. El Bal depende de

La cantidad de sangre (la cual se incrementa con el peso)
La cantidad de alcohol que se consume en un tiempo determinado (mientras ms rpido se beba, en
esa misma medida se incrementa el BAL, ya que el hgado puede, en condiciones normales, procesar
un trago por hora. El resto va directamente al torrente de sangre).

El entender los efectos de un incremento en el BAL puede ser usado para controlar la manera de beber. He
aqu una lista de efectos de acuerdo a la medicin del BAL:

.02: Menos inhibicin, sentimientos de calidez.
.05: relajacin notable, se est menos alerta, comienza a notarse dificultades de coordinacin motora.
.08: Lmite para manejar un automvil y dificultades evidentes en la coordinacin y juicio.
.15: Dificultades para mantener el balance y el movimiento. Claramente borracho.
.30: Prdida temporal de la conciencia.
.40: Prdida grave de la conciencia. Posible muerte.
.50: Se detiene la respiracin. Muchos mueren por ello.

Puede verse que los efectos ms placenteros del alcohol ocurren cuando el BAL se encuentra entre .03 y .05.
Los investigadores han descubierto que bajos niveles de alcohol tienen un efecto especfico en el discurrir
mientras que un incremento en estos niveles genera una reduccin en un automonitoreo. Esto quiere decir
que poco alcohol genera un estado de pocas preocupaciones y de nuestra conciencia como persona. No hay
que sorprenderse, este efecto reduce la tensin y mejora la relajacin del cuerpo. Algunas personas encuentran
este efecto tan agradable que continan bebiendo. Desafortunadamente este efecto relajante comienza a tener
resultados negativos cuando el nivel sobrepasa .05 en donde comienza entonces a notarse falta de control
emocional y definitivamente prdida en la coordinacin motora con los consecuentes resultados como cruda
y comportamiento impropio frente a los dems.

Evidentemente no hay dos personas en el mundo que reaccionen a las bebidas alcohlicas de la misma
manera. Recurdese que hay diferentes factores que determinan cmo la manera de beber lo afectar. Entre
los ms importantes destacan:

i. Peso/masa corporal. En general, mientras menos masa corporal se tenga, los efectos sern ms
notables. Para personas del mismo peso, la cantidad de grasa es ms determinante en los efectos
del alcohol que en gente con msculos ms desarrollados o menos cantidad de grasa
ii. Medicamentos. Si quien bebe est tomando medicinas es probable que en algunos casos esto
incremente los efectos del alcohol. Consulte a su mdico
iii. Fatiga. Mientras ms cansado, ms evidentes son los efectos al beber
iv. Comida. Mientras menos coma, mayor ser el efecto del alcohol
v. Tiempo bebiendo. Mientras ms tiempo tarde en tomarse su copa, el efecto del alcohol
obviamente ser menor. Si se le da tiempo al hgado de procesar el alcohol las posibilidades de
emborracharse disminuirn
vi. Contenido de alcohol en las bebidas. No importa cuntos tragos tome, lo que importa es cunto
alcohol consume



Imagen 1
Probando el software

Este somero anlisis dio pauta para que me decidiera a hacer un programa de computadora que analizara el
nivel de alcohol en la sangre. Ver que si est alcoholizado los efectos se vern directamente en cmo
interacta frente a su monitor. Haga la prueba.
Primeros pasos

Para ganar en las encuestas


A inicios del 2006 se inici la carrera por la silla presidencial y los candidatos arrancaron como caballos de
carreras en el Derby de Kentucky. Salieron a paso veloz por el triunfo y desde el da uno tuvieron montones
de actividades. En esa misma semana se publicaron tambin las encuestas iniciales de quin era el candidato
con ms posibilidades de voto y de acuerdo a los nmeros publicados por las diferentes encuestas, Lpez
Obrador iba en primer puesto, seguido unos puntos atrs por Felipe Caldern y debajo de ste, en tercer sitio,
Roberto Madrazo. Los dems candidatos realmente no pintaban en la intencin de voto.

Al publicarse las encuestas en cuestin, algn candidato, como Madrazo, por ejemplo, dijo respetar mucho las
encuestas y mencion que su segundo lugar (habr ledo mal? Si todas las empresas encuestadoras lo ponen
en tercer sitio) lo iba a revertir con el paso del tiempo. Llama la atencin que Madrazo hable del respeto a las
encuestas pero que a la malaguea se coloque sin ms en un segundo puesto. Sus contradicciones son el pan
de cada da.

Y ni hablar de las declaraciones patrimoniales, las cuales al menos a m me parecen una autntica bofetada
de burla a toda la nacin mexicana. Caldern dijo tener un patrimonio de slo unos 5 millones de pesos,
mientras que Madrazo habl de un patrimonio de 29 millones de pesos. No supe de la declaracin patrimonial
del Peje, Andrs Manuel Lpez Obrador, pero para como l canta las rancheras, habr salido como el ms
humilde de los sper candidatos a la presidencia.

Obviamente en esas fechas estbamos empezando y habra veintitantas semanas de actividad poltica febril.
Las descalificaciones, los insultos, el descubrimiento de propiedades no declaradas, de canonjas o prebendas
de uno u otro candidato se iran sabiendo en los medios y todo eso con el propsito de cambiar la intencin de
voto de los ciudadanos, los cuales como nunca antes tendran informacin puntual de cada contendiente por
la silla presidencial, y en donde los medios se cuidaran de no hacer evidentes sus preferencias particulares de
algn candidato, so pena de ser ventilados como paleros pblicamente.

Pero en mi percepcin de los acontecimientos, pensaba que le daran una importancia fundamental a las
encuestas, sobre todo hacia el final de las campaas. Si los nmeros reflejaban un avance notable en alguno
de los candidatos, es claro que esto perjudicara la intencin de voto de los que van abajo y mejorando los
resultados del que fuese lidereando en ese momento. Por ello, pensaba que Madrazo, en particular, buscara
que las encuestas lo pusiesen de lder de alguna manera y, conociendo sus antecedentes pristas, crea que el
hombre era (y sigue siendo), capaz de cualquier truco, incluso los ms sucios. Para ayudarlo a evitar los dimes
y diretes, se me ocurri hacer un programa que le preguntase a la gente su intencin de voto. Los resultados se
mandaran automticamente por Internet a un sitio y as el candidato prista podra saber la realidad de las
encuestas.

Debe saberse que los procedimientos electorales en Mxico durante muchos aos fueron, por decir lo menos,
muy poco transparentes. El partido en el poder, por ms de 70 aos, el PRI (partido revolucionario
institucional. No hay contradiccin entre los trminos revolucionario e institucional?), invent todo gnero
de trampas para ganar las elecciones. Desde pagarles a los votantes por su sufragio a obligar a grupos enteros
de trabajadores a votar por un candidato en particular tpico de los sindicatos mexicanos, o bien el efecto de
urnas embarazadas, es decir el rellenar con votos ficticios a favor de alguno de los candidatos, o el carrusel,
que consista en votar tantas veces como se pudiera en una casilla, etc. Las trampas eran innumerables.

De esta manera, en este mundo de tanta computadora y conteo ciberntico, mi programa de encuestas lo que
hace es poner tres botones para que el usuario elija uno de ellos (sobre el candidato de su preferencia). Si se
vota por el PRI, dueo y seor de tantas trampas, el sistema simula que se conecta por mdem a una central y
descarga el voto emitido para la encuesta. En el caso de los otros dos candidatos, simplemente al querer
oprimir sobre cualquiera de esos botones (pens en votones, por aquello del voto), el sistema no permite
oprimirlos, sino que simplemente los mueve de lugar. Dicho de otra manera, slo puede emitirse la encuesta a
favor del candidato de PRI, en el mejor estilo de sus trampas electorales que hemos vivido durante tantos
aos.



Imagen 1
Encuestas polticas amaadas
Primeros pasos

Un mago por software


Una de los grandes entretenimientos del hombre ha sido el de la magia. Quizs su origen se remonte a la
intencin de engaar (con fines aviesos), a terceros. Sin embargo, el asunto es que hoy por hoy la magia
resulta una de las grandes artes y que gracias al ingenio de los creadores de ilusiones, podemos disfrutar de
actos que deberamos considerar sorprendentes en todo sentido. La magia es pues el arte de entretener
mediante trucos que aparentemente suponen una violacin de las leyes de la naturaleza. Los magos basan sus
prcticas en principios psicolgicos y en la actualizacin de mtodos manipulativos y mecnicos. Estos
principios son la distraccin, la sugestin, la imitacin y el ocultamiento. Los espectadores no ven todo lo que
ocurre y creen ver cosas que en realidad no suceden. Esta percepcin engaosa conduce a falsas creencias, a
una lgica falaz y, en definitiva, a la conviccin de que el ejecutante consigue hacer cosas imposibles. Esta es
la definicin que da la Enciclopedia Encarta de Microsoft al respecto de la Magia Blanca. Ms claro ni el
agua. La intencin de este artculo es intentar hacer ilusionismo utilizando la computadora. Cmo hacer para
que la computadora pueda realizar algn truco de esta naturaleza.

La duda estaba sembrada y ms pronto que tarde hall en Internet cualquier cantidad de informacin al
respecto de la magia, de la enorme y vasta coleccin de trucos, artificios y situaciones que pueden hacer creer
al ms inteligente las cosas ms absurdas. De hecho, David Copperfield, uno de los magos ms exitosos de los
ltimos tiempos puede hacer ilusiones verdaderamente inconcebibles: desaparecer la Estatua de la Libertad,
ser cortado por una sierra elctrica en dos partes, etc. Por supuesto que nada de esto en verdad ocurre. La
Estatua de la Libertad no se ha movido de su lugar para que Copperfield logre el efecto de desaparecerla,
desde luego. Cuando Copperfield vuela alrededor de un escenario, es obvio que algn truco est realizando,
porque es imposible que pueda violar a la gravedad, ley a todo esto ms respetada que cualquier otra en el
universo.

En todos los casos, lo que finalmente hace a un mago de un gran xito es no revelar jams el truco. Cmo es
que Copperfield logra ilusiones como volar alrededor de un escenario sin que se hagan evidentes poleas,
cables y arneses? Slo l y su equipo de trabajo lo saben. Por supuesto que estos trucos son conocidos por
unos pocos y quien quiera hacerse de los secretos atrs de ellos es probable que tenga que desembolsar
grandes cantidades de dinero.

Para precisamente este artculo, el programa presentado logra un gran truco de mentalismo. El sistema le pide
al usuario que elija una carta determinada (presentada en la pantalla) y la memorice. Una vez hecho esto, se le
pide al mago computarizado que adivine la carta elegida por dicho usuario. El Mago, indefectiblemente, leer
el pensamiento de quien ha hecho la seleccin y adivinar, sin el mnimo margen de error, la carta que el
usuario seleccion. En este caso, no dir cmo es el truco porque como buen mago nunca hay que decir el
secreto del funcionamiento del mismo. Sin embargo, es probable que pueda sorprender a propios y extraos
con este pequeo artificio de software.


Imagen 1
El software del Mago corriendo

Sin embargo, ms temprano que tarde hallarn cmo es que funciona el programa y entonces habr que llegar
a las conclusiones de rigor. La que destaca en este caso es la de la naturaleza de la observacin humana.
Noten como gracias a esa peculiaridad de la manera en como prestamos atencin a hechos, eventos y en
nuestro caso, cartas de una baraja, podemos realizar un truco por dems sorprendente a primera vista.

Como siempre, el programa podra haberse escrito de manera mucho ms complicada precisamente para que
costase ms trabajo hallar las razones por las cuales funciona el truco. Pero la verdad esta tarea se la dejo a
alguno de mis cinco lectores que s que asumirn el reto de inmediato. Por lo que se refiere a este software,
espero le divierta, pues finalmente sa fue la intencin al escribirlo.
Primeros pasos

Software irreverente


Alguna vez se me ocurri que los seres humanos hemos llegado a acuerdos tcitos en muchas situaciones. Por
ejemplo, a muchos nos educan de manera que decimos muchas veces gracias de manera automtica.
Digamos que ya no lo pensamos. Son como comportamientos aprendidos y, obviamente, tienen su bondad: no
tenemos que pensar para hacerlos. Nos salen como naturales. Debe haber, desde luego, comportamientos
aprendidos que no son tan aceptables, pero en las sociedades se impone un esquema de conducta que, en
principio, al menos, nos debiera beneficiar a todos o, en el peor de los casos, a las mayoras.

Hace tiempo vi el reloj de pared que tena un viejo amigo en la Universidad Iberoamericana. Ese reloj, en
particular, lo que lo hace diferente a los esquemas conocidos, es que camina al revs, como si visemos el
reloj del otro lado del espejo. Guillermo Malln me ense a hacer un reloj de esta naturaleza y ahora lo tengo
en la pared del cuarto en donde normalmente trabajo. Este reloj, del otro lado del espejo, es un buen
ejemplo de un comportamiento inesperado, rebelde, por decirlo de alguna manera. Porque, quin dijo que
todos los relojes deben correr con las manecillas de una manera y no en sentido opuesto?

Aunque hace ya mucho tiempo de esto, se me ocurri que, en el cmputo, la gama de cursores
tradicionalmente disponibles a los usuarios, no eran suficientes. Por qu no hacerse de un cursor no
tradicional, rebelde en todos los sentidos? Mi plan era hacer un cursor al mejor estilo de la Britneyseal.
Entonces, me sent a programarlo. No fue difcil, porque en Delphi estas labores resultan relativamente
sencillas. Hube de hurgar un poco en la red Internet y en una hora, quizs menos, ya tena mi proyecto
funcionando.

La razn de proyectos de este estilo, ms all de hacer algo irreverente o fuera de lugar, es la posibilidad de
aprender algo ms de cmo una computadora funciona. A m muchas veces me sorprende ver ideas realizadas
en programas que me hacen pensar cmo es que no se me ocurri antes. Hay un vastsimo campo para la
creatividad en la programacin y quiz es una de las razones por las cuales haya una verdadera cantidad
enorme de programadores alrededor del mundo, que da a da encuentran nuevas y mejores maneras de hacer
muchas cosas, usando la computadora.



Imagen 1
Qu tipo de cursor le agrada ms?

Creo firmemente en que la gente que usa una computadora debe tener cierta preparacin en programacin,
porque muchas veces necesitamos un programita muy especfico, que sera muy fcil de hacer probablemente,
pero como no sabemos hacerlo, entonces tenemos que decirle a alguien, o bien, peor an, usar programas muy
sofisticados para realiza tareas por dems sencillas, algo as como matar moscas a caonazos. Por ello, al
igual que lo que pasa en un coche, que no estara mal saber un poquito de mecnica elemental, en cmputo
podra sernos til saber programar lo indispensable. La virtud de esto es que nos daramos cuenta de lo
terriblemente difcil que es hacer ahora sistemas tan complejos, como Word o Excel, y por otro lado,
tendramos una perspectiva ms certera de lo que realmente se puede o no hacer con una computadora.
Igualmente, hay un tercer beneficio: no tendramos que depender siempre de alguien que se dedique a estas
labores profesionalmente, porque probablemente muchsimas tareas triviales, los mismos usuarios podran
resolverlas fcilmente.

Cabe sealar que el cursor rebelde funciona por el tiempo que uno quiera. Vaya, no se instala permanente o
indefinidamente en la computadora.
Primeros pasos

Regalo de nuestros patrocinadores


El mundo moderno es sin duda vertiginoso. Aparentemente las prisas son ya parte cotidiana de la vida de todo
aquel que ha decidido radicar en alguna populosa ciudad. Los medios de informacin supuestamente informan
los acontecimientos ms relevantes segundo a segundo. Si algo de suma importancia pasa en Timbuct, lo
sabemos prcticamente a los minutos de haber ocurrido. La informacin se desplaza por cuanto medio ha
inventado el ser humano para estar en contacto con otros de su misma especie.

Obviamente con los medios de informacin aparecieron los comerciales. La televisin gratuita est llena de
ellos y lo que las empresas pagan para promover sus productos y bienes depende muchas veces de las horas
en las que se desea salir al aire. Hay horarios triple AAA que son los que, de acuerdo a las televisoras, hay
el mayor auditorio. Es claro para todos que no es lo mismo que aparezca un anuncio comercial a las tres de la
maana que a las nueve de la noche.

Pero con los comerciales ha llegado toda clase de promociones fantsticas. Con la intencin malvola (de
parte de los genios de la mercadotecnia), de convertirnos en consumidores de todo cuanto se anuncia en la
TV, se han ideado cualquier cantidad de artimaas. En algunas hay que destapar los envases de mayonesa
para ver si nos hicimos de un coche. En otras promociones, de galletas saladas, por ejemplo, se trata de hallar
el pase de abordar para ir a un vuelo a algn lugar paradisiaco o ya de perdis la obsoleta Disneylandia. Por
supuesto que alguien ganar esos premios, pero la verdad es que casi siempre los premiados son un par de
personas y los dems estamos condenados, seguramente, a comer mayonesa por el resto de la eternidad sin
premio alguno que nos consuele.



Imagen 1
Regalo para el lector

Otras promociones pretenden mantener entretenido al consumidor dndole los premios a cuentagotas y por
meses. Por ejemplo, la posibilidad de hacerse de una vajilla completa, incluyendo vasos, con el logotipo de
alguna marca refresquera es algo por dems comn y corriente. Los pepsilindros, las estampitas de quizs La
Guerra de las Galaxias o Tarzn, desde luego coleccionables se pueden localizar en los centros de canje
oficiales por un par de pesitos y un poco de suerte. En general los chamaquitos, que son quienes caen ms
frecuentemente en estas promociones, se llenan de estampas repetidas porque hay un par que son
prcticamente imposibles de obtener. En realidad, independientemente de que las empresas hagan negocio
con estas colecciones infinitas de estampas, vajillas, cilindros de agua, etc., lo que se observa es que tales
productos promocionales terminan por invadir nuestras alacenas y cuartos.

Pues bien, siguiendo con esta tnica, y considerando que los lectores merecen ser recompensados por haber
sido fieles (hasta ahora) a la lectura de mis artculos, La_Morsa Software Co., en conjunto con gigantesca
refresquera, hemos decidido regalar un lindo portavasos, que sin duda ser la delicia de muchos. Espero les
guste.
Primeros pasos

Los bytes privados


Hace unos diez aos, Javier Matuk, uno de los pioneros de Internet en nuestro pas, me sugiri escribir un
programita que sirviera como diario personal. Obviamente, por ser un asunto privado, deba contemplar la
posibilidad de que no pudiese ser ledo por terceras personas, sino por slo aquel quien tuviese la contrasea
correspondiente. Javier Matuk haba diseado las pantallas que deba tener el programa. Su enfoque era
minimalista y evidentemente no se trataba de hacer grandes aspavientos. La esencia del programa es que
deba ser sumamente simple, sin excesiva cantidad de opciones, etc. Puse manos a la obra y escrib una
primera versin en turbo Pascal, con las limitaciones de su momento. El software corra en MsDOS.

En ese entonces, escribir un programa de esta naturaleza representaba cierto reto. Haba que tener rutinas que
encriptaran los textos del autor de diario de forma tal que slo l podra tener acceso a los mismos. Aunque la
teora ya estaba ms que analizada, la implantacin de un procedimiento que hiciese esto sola ser
complicado. Igualmente, las interfaces grficas no eran lo que hoy conocemos. Y al llegar a la estructura de
datos que haba que crear para guardar el diario privado, los das en que haba sido escrito, as como la
manera de acceder a los datos alimentados, pues haba que proceder con cuidado, pues el formato de la base
de datos del diario sera crtica para que el desarrollo pudiese hacer fcil o complicado. De hecho, muchas
veces haba que hacer las cosas a mano, es decir, paso a paso, sin ayuda, sin bibliotecas de rutinas de
terceros que bien podran resolvernos las dificultades ms elementales. Vaya, que todo llevaba su buena
racin de esfuerzo.

Aos despus se me ocurri, como un mero ejercicio de programacin en Delphi, hacer la versin para
Windows. Como todava tena el archivo con las pantallas diseadas por Javier (en un respaldo de mis
antiguos discos duros), copi hasta donde se pudo el diseo original, y as surgi la versin de Los Bytes
Privados... para Windows. Obviamente la labor fue por mucho ms sencilla que en su versin de MsDOS.
Aqu saqu ventaja del BDE (Borland Database Engine), que es el mecanismo por el cual se pueden crear
bases de datos en todos los formatos populares: Oracle, Interbase, Paradox, DBase, FoxPro, etc., de tal forma,
que cuando uno tiene que acceder a los datos, el BDE nos provee de una serie de rutinas ya genricas que
hace el trabajo limpio y sin complicaciones. Cuando todo funcion correctamente en lo que se refiere a la
base de datos, la sustitu por un componente de terceros, llamado Absolute Database
(http://www.componentace.com/bde_replacement_database_delphi_absolute_database.htm), el cual adems,
encripta la base de datos y solamente con la contrasea correspondiente puede ser leda. Aparte, no es
necesario cargar con el BDE en el proceso de instalacin, ya que todo esto se compila en el ejecutable de
Delphi. En suma, una maravilla este componente, adems porque para uso personal es gratuito.



Imagen 1
Bytes Privados Un diario personalsimo
Al finalizar el software, entonces proced a crear el sistema de instalacin. Us para ello Inno SetUp
(http://www.jrsoftware.org/isinfo.php), un programa para crear sistemas de instalacin de software, escrito
adems en Delphi y con disponibilidad del cdigo fuente. El software es totalmente gratuito y genera un
archivo ejecutable que puede contener todo lo que necesitemos en nuestra instalacin: tipos de letra, archivos
especiales, imgenes, etc. Otra maravilla del software gratuito. Una vez realizado esto, tengo ya un paquetito
completo, que debido a la fortaleza de las herramientas modernas, se escribi en menos de una semana y
contempla caractersticas de encripcin y seguridad informtica que hace apenas unos aos nos hubiese
parecido casi mgico.
Grficas

Imgenes y filtros grficos


La computacin es una ciencia que nos permite, en muchos casos, regresar a esa capacidad de sorprendernos
de nuestro derredor. Cuando vemos algunas de las cosas que actualmente pueden hacer los programas,
llegamos a la conclusin que estos juguetes son maravillosos, pero ms fantsticos an parecen ser algunos
programadores que realizan en ocasiones verdaderos actos de prestidigitacin. Nos parece elemental ahora
tener un procesador de palabras como Word, con diversos tipos de letras, que permite la edicin e impresin
de documentos de maneras hace unos pocos aos inconcebibles. Pasamos a la hoja de clculo y en verdad hay
que admirarse de la cantidad de poder de manipulacin de datos que tiene semejante herramienta financiera.
Ni qu decir de los programas de grficas actuales, tienen cualquier cantidad de artilugios por software que
permiten modificar las fotos escaneadas, las imgenes multicolores, de cientos de maneras a travs de filtros
grficos.

Un filtro grfico es un subprograma dentro de alguna aplicacin, que permite modificar una imagen de alguna
manera en particular. Es una transformacin de un conjunto de puntos a otro (muchas veces irreversible).
Ejemplos de filtros grficos son: convertir una imagen de color a blanco y negro; cambiar brillantez o
contraste, realzar bordes de la imagen, tomar el inverso o negativo de la misma, etc. Hay tantos filtros como la
imaginacin de cada quien. Existen compaas de software en los EEUU que se dedican a crear filtros
grficos para populares programas de manipulacin como Photoshop. Cuando uno ve lo que se puede hacer
con estas herramientas de software, uno se pregunta qu tan fcil o difcil debe ser el escribir este tipo de
filtros. Picada mi curiosidad me puse a investigar y hall respuestas interesantes.

Empecemos por un poco de teora. Las imgenes escaneadas, por ejemplo, son en realidad un conjunto de
puntos en la pantalla (pixeles), con ciertos colores muy especficos. Nuestro ojo hace una labor interpretativa
contnuamente, de ah que un conjunto de pixeles lo veamos como una sombra mientras que otro subconjunto
de puntos forman lo que parece ser es una mano, por decir algo. En las computadoras personales (as como en
la TV y en otros inventos del hombre blanco) cada pixel o punto en la imagen tiene un color definido por sus
tres componentes primarias: rojo, verde y azul (RGB, por las siglas en ingls de dichos colores), de tal manera
que si tenemos todo el rojo, todo el verde y todo el azul en un punto de manera simultnea, tendremos el color
blanco (cosa que pasa siempre, como Sir Isaac Newton demostr hace siglos, en sus estudios de la luz).
Igualmente, si tenemos el componente rojo en su mximo pero las componentes azul y verde en cero,
tendremos un punto colorado, etc.

En las tarjetas grficas actuales se pueden tener hasta 16 millones de colores ya que cada componente de la
tripleta RGB permite 256 valores diferentes. Esto significa 256 a la tercera potencia, para un total de
16,777,216 colores en total. Ahora bien, adems de los colores que se pueden generar, existe algo que se
denomina la paleta de colores, que en manera anloga con la paleta de un pintor, tiene ya la serie de colores
definidos. El hardware de la PC soporta 256 tripletas RGB en su paleta de colores y por ello, en algunas
tarjetas de vdeo con poca memoria si ponemos simultneamente en la pantalla dos imgenes con dos paletas
de colores diferentes, una de las mismas (en la ventana no activa) se ver con colores que no corresponden a
su paleta. Cuando hacemos esa imagen activa, entonces la imagen anterior se pone con la paleta de colores
correspondiente a la segunda.



Imagen 1
Programa de filtros (la foto muestra la famosa foto de la mujer afgana (de ational Geographic), aplicando
el filtro mosaico

Una vez sabiendo esto, manipular una imagen es mucho ms sencillo. Por ejemplo, un filtro elemental es el
cambiar la paleta de colores por la correspondiente blanco y negro (y sus respectivos tonos de gris). Eso se
hace igualando los tres componentes RGB para cada registro. As, si la paleta de colores tiene 256 registros,
tendremos que el registro cero tendr RBG (0,0,0), el registro uno RGB(1,1,1), el dos un RGB(2,2,2), hasta
llegar al registro 255 con un RGB(255,255,255). Si queremos, por ejemplo, hacer un filtro que cambie la
brillantez de una imagen, simplemente le sumamos una constante a los tres componentes de color. Si
queremos ms brillo, hacemos que el RGB de cada punto en la pantalla sea

RGB(Valor+Constante, Valor+Constante, Valor+Constante)

El contraste de una imagen requiere de otra tcnica, que tiene que ver con una matriz de transformacin y
siempre es ms complicado de comprender. De hecho, a m no me queda claro por qu los nmeros de la
matriz son esos y no otros.

En vista de todo esto, decid que haba que investigar en vivo y en directo cmo se hacen los filtros. El
programa incluido es un estudio bastante informal de algunos filtros grficos que pueden ser aplicados a las
imgenes en formato BMP y JPG. Cabe sealar que todo el cdigo fuente est escrito en Delphi (Pascal para
Windows, pues) y la intencin primordial era hacerlo instructivo ms que eficiente. Porque miren ustedes,
cuando uno observa la velocidad con la que los filtros de Photoshop hacen su tarea, me siento como Aquiles y
la tortuga en una desigual carrera, en donde claro, mi cdigo es definitivamente tortugoso. Esto simplemente
quiere decir que los programadores responsables de los filtros grficos en los programas comerciales que
usamos s se aplicaron para generar el cdigo ms rpido del oeste. Al final de da, sin embargo, los
resultados de cada filtro son los mismos en donde la nica ventaja del cdigo escrito por un servidor es que al
menos se entiende cmo es que funciona.

Grficas

Blending


Los efectos visuales que hoy da se pueden hacer usando una computadora son simplemente el resultado del
procesamiento digital de imgenes. Para la computadora una fotografa no es ms que una coleccin de
puntos de diversos colores, que finalmente en las entraas de la mquina no son ms que valores que van de 0
a 16 millones, aproximadamente. La razn de esto es que la computadora, a travs de su hardware, ve el color
como una combinacin de tres nmeros que van de 0 a 255. Esos tres nmeros representan el azul, el rojo y el
verde. Esto es lo que se llama el modelo RGB (por aquello de Red, Green, Blue, por sus siglas en ingls) y es
uno de los ms usados a nivel mundial. Por ello mismo, cuando se hace una transformacin de una imagen,
sta siempre se basa en la manipulacin de los puntos de color (los pixeles), que son un reflejo de los valores
internos de sus respectivas coordenadas rojo, verde y azul.

Uno de los efectos ms interesantes es el del blending (trmino ingls que significa licuar), pero que en
realidad podra considerarse como el de fusionar, en algn porcentaje, una imagen con otra. Imaginemos, por
ejemplo, que tenemos una fotografa A, pero queremos sobreponerla, en un 40% (como si fuese una
transparencia a un 40% del total del color), sobre otra imagen. Cmo se ver el resultado de esto? qu tan
difcil resulta programar dicho efecto?

La teora atrs del blending es muy simple. Se trata de tomar cada punto de ambas imgenes y decirle al
sistema que ponga un porcentaje que le correspondera al punto en la primera imagen y el resto (del 100%)
sera para el punto de la segunda imagen. Para que esto funcione, lo mejor es separar cada punto de las
imgenes en sus respectivas coordenadas RGB de manera que tengamos algo como esto:

blendpixelR := (R1 * alpha) + (R2 * (1.0 alpha));
blendpixelG := (G1 * alpha) + (G2 * (1.0 alpha));
blendpixelB := (B1 * alpha) + (B2 * (1.0 alpha));

Donde blendpixelR, blendpixelG y blendpixelB son el resultado de fusionar las coordenadas roja, verde y azul
del punto en la primera imagen (R1), con las coordenadas roja, verde y azul del punto en la segunda imagen
(R2), respectivamente y alpha es el porcentaje que se desea fusionar la imagen A con la B. Demasiado
sencillo para ser cierto? El hacer esto, pensaba no me har una especie de batidero de ambos pixeles? Me di
entonces a la tarea de escribir un programita que hiciese esto para ver si esto funcionaba correctamente.



Imagen 1
Blending de Aruna (la esposa del campen mundial de ajedrez Anand) con la imagen de la conferencia de
prensa entre Anand y Aronian

Puede verse que el efecto funciona perfectamente. Por qu funciona el programa? La respuesta es simple:
estamos hablando de pixeles de color, que en la pantalla de la computadora son haces de luz de una frecuencia
determinada. Por ello mismo, al combinarlos de acuerdo a la frmula del blending, notaremos que ambas
imgenes se fusionan. Cabe sealar que este comportamiento no se da en la pintura al leo, por ejemplo, o
con pinturas fsicas, porque aqu la combinacin de rojo, verde y azul en iguales proporciones nos dara
negro, no blanco.
Grficas

Fotos Recursivas en color


Las fotografas, como ya hemos dicho antes, estn hechas de puntos. Estos puntos, en diferentes tonalidades o
colores representan al final de cuentas una imagen que el cerebro analiza y decide si n muestra algo
reconocible o no. A partir de esta idea comenc a jugar con la suposicin de poner imgenes en lugar donde
haba puntos. Qu tal poner, por ejemplo, en lugar de puntos, la misma imagen que quiero procesar, con
diferentes tonos o colores? A esto le llam imgenes recursivas.

La teora de la creacin de imgenes recursivas, es decir, imgenes que se recurren a s mismas, (o dicho en
otras palabras, imgenes creadas con otras imgenes), es verdaderamente simple. En el caso particular de
imgenes creadas con la misma imagen (en tonos de gris), la teora al respecto puede describirse de la
siguiente manera:

Tomar una imagen a procesar (la que llamaremos imagen fuente)
Pasarla a tonos de gris
Copiar esa misma imagen 20 veces pero con diferentes tonos de gris, en un gradiente que va de muy
claro a muy oscuro
Hacer una rejilla en la foto original. Tomar cada pequea regin (una seccin de la rejilla), y calcular
el tono de gris de la misma.
Sustituir el tono de gris encontrado por la foto con el tono de gris ms prximo.

Queda claro que hacer imgenes recursivas con la misma imagen fuente requiere de generar las imgenes que
sustituirn regiones de puntos. Para el caso del blanco y negro es relativamente fcil, porque la paleta de tonos
de grises no es mayor que 256 tonos de gris. Los componentes en gris para el negro, en RGB son R=0, G=0,
B=0. Para un negro menos oscuro, por decirlo de alguna manera ser: R=1, G=1, B=1, y as sucesivamente
hasta llegar al blanco, el cual tendr como componentes RGB las siguientes: R=255, G=255, B=255.

En la decisin del diseo del software de fotos recursivas en tonos de gris, la ocurrencia ms simplista fue
usar 20 fotos con tonos de gris diferentes. Para el efecto deseado fueron suficientes. Sin embargo, si quisiera
hacer lo mismo con fotos a color qu habra que hacer?


Problema de la recursin a color

Bsicamente la dificultad reside en que la gama de tonos que hay que tener presentes crece muy rpido en
color que en blanco y negro. Mencionamos antes que 256 tonos de gris son ms que suficientes para pintar
una imagen blanco y negro. Sin embargo, en color, las cosas son muy diferentes.

Si se quisiera tener una gama completa de imgenes (la misma imagen) con diferentes colores, cuntos
colores necesitaramos usar? Una computadora personal puede desplegar actualmente millones de colores.
Desde luego, no vamos a poner esa cantidad de imgenes. Quizs un clculo conservador podra ser 256 para
el Rojo, 256 para el verde y 256 para el azul. Eso hace que la cantidad de imgenes a crear sea de 768
mnimo, considerando que dejaramos muchos colores fuera del espectro de trabajo, las cuales puede ser
costoso en tiempo y espacio en disco. qu otra posible solucin existe? La solucin es verdaderamente
simple: usar una paleta de colores disminuda.

Afortunadamente Netscape cre semejante paleta, con la intencin que quien ve en una computadora un color,
en otra, de otra marca, vea exactamente los mismos colores. As, la gente de Netscape gener la llamada
paleta websafe, que consta de 216 colores y esto da un buen margen para una gama reducida, pero
razonablemente completa de los siete colores del arco iris. Desde luego que la paleta de colores websafe ya no
es necesaria considerando que las tarjetas de vdeo manejan millones de colores y as, dicha paleta resulta
intil en trminos generales, pero para esta aplicacin, resulta formidablemente buena.

El procedimiento es entonces parecido al de crear imgenes recursivas en blanco y negro (cuando decimos
blanco y negro, hablamos de tonos de grises). Dicho procedimiento va como sigue:

Tomar una imagen a procesar (la que llamaremos imagen fuente)
Copiar esa misma imagen 216 veces pero filtrando cada imagen con un color websafe diferente. Este
filtro es equivalente a poner una mica de un color especfico sobre la imagen original.
Hacer una rejilla en la foto original. Tomar cada pequea regin (una seccin de la rejilla), y calcular
el color promedio de la misma.
Sustituir la regin analizada por la foto con el color ms prximo.



Imagen 1
ngeles hecha de ngeles

Aunque el procedimiento suena bastante simplista, hay que entender cmo es que la computadora puede ver
los colores de la regin analizada y los de cada foto. En realidad todo se basa en algo que puede definirse
como la distancia entre dos colores. A eso le denominamos una mtrica. Para entender esto, considrese que
ponemos en los ejes X, Y y Z los colores R, G y B respectivamente. As, tenemos un sistema de coordenadas,
en donde cada color de la paletta websafe es un punto en el espacio tridimensional. Si ahora, tomamos una
regin de la imagen a procesar y la colocamos en nuestro sistema de coordenadas, ocupar un punto en ese
espacio. De ah podemos concluir que el punto de ese color en particular podr ser sustituido por el punto ms
cercano geomtricamente hablando. Es decir, lo que tenemos que hacer es calcular la distancia de un punto a
otro.

Por suerte, la geometra analtica tiene una ecuacin elemental para encontrar la distancia entre dos puntos:

Distancia(x,y) = raz cuadrada ((Rx-Ry)^2 + (Gx-Gy)^2 + (Bx-By)^2)

donde Rx, Gx, Bx, Ry, Gy, By son las componentes RGB de X y Y, respectivamente.

As, tenemos entonces una manera fcil de encontrar la distancia entre dos puntos, o mejor dicho, entre dos
colores. A esto le llamamos una mtrica y en este caso la denominamos mtrica euclidiana. Lo que
hacemos es, entonces, calcular el RGB de la regin de la imagen fuente contra el RGB de cada una de las
fotos en la biblioteca y poner la que tenga la distancia mnima.


La opcin Estilo Post-it

Hall en una pgina de Internet a alguien que con los populares post-it (esas hojas de 3x3 pulgadas), gener
una imagen completa, un mosaico sencillo hecho con este elemento. Se me ocurri entonces que poda usarse
el programa de imgenes recursivas para generar mosaicos al mejor estilo Post-it. Si nos vamos a la raz del
problema, un mosaico Post-It es simplemente un mosaico de cuadros de colores slidos (en lugar de usar la
misma fotografa, como en las imgenes recursivas).



Imagen 2
Los post-it virtuales


Como el programa de las imgenes recursivas ya calcula el color promedio de cada regin a procesar y la
compara contra la paleta web de colores, se me ocurri que se podan tener imgenes de Post-It virtuales, los
cuales generara de diferente color (los 216 colores de la paleta web). Para que los Post-It se vieran ms
reales, se me ocurri que deban ser procesados con algn programa de imgenes o de animaciones que le
dieran cierto valor de imagen fotorrealista. Gabriel Martnez Valois me ayud generando siete imgenes de
Post-It virtuales, las cuales aad a mi programa. Si Ud. en lugar de crear una imagen recursiva, decide que
quiere un mosaico Post-It, encienda la opcin estilo Post-It y listo. El sistema usar la coleccin de Post-it
virtuales en lugar de usar la imagen original para generar el mosaico final.



Imagen 2
Marga, en el primer resultado con post-it


Problemas detectados

El software usa la paleta websafe, la cual contiene muchos tonos pastel. El efecto final es interesante, pero sin
duda muy pastel.

La creacin de las 216 imgenes se hace espectacularmente rpido. Se hizo hincapi en el desarrollo de este
software en la necesidad de que esta parte de creacin de imgenes fuese muy, pero muy rpida.
Imgenes de ms de los 3 megas en total no pueden ser creadas. Ms all de ello el sistema de generacin de
mosaicos recursivos generar un error y no podr guardar a disco la imagen generada. Esto, repetimos, es un
problema de la librera de manejo de imgenes JPG de Delphi y no puede ser, por el momento, solucionado
por el autor del software. De hecho, imgenes mayores de 16 megas es un problema enorme para el sistema
operativo Windows.

Es posible crear fotos recursivas usando una imagen fuente y otra biblioteca distinta de imgenes. Para ello,
primero procese la coleccin de imgenes que desea. Una vez hecho esto, cargue la nueva imagen y procese.
El sistema usar la biblioteca generada, aunque sea de otra foto fuente. Es un efecto final tambin interesante
.
Grficas

Sopa de letras


Alguna vez, cuando de nio me daban sopa de letras, se me ocurri que se poda jugar a hacer frases con las
letras de pasta que flotaban por todo el plato sopero. Pero esto es meramente un recuerdo de la infancia. Ms
adelante, cuando entr a la Universidad, mi primer curso de programacin fue en Fortran, en la facultad de
Contadura y Administracin. No recuerdo cmo fui a parar all considerando que yo estudiaba en la facultad
de Ciencias y que todo lo dems era por definicin chafa frente a lo que nos podan ensear en mi escuela.
El caso es que no aprend Fortran, porque el profesor de dicha asignatura se la pas mostrndonos carteles que
imprima en las enormes impresoras de las mquinas grandes de la UNAM. Cabe recordar que el mundo no es
como lo conocemos ahora. En mis tiempos de estudiante en Ciencias, no tan lejanos a todo esto, las
impresoras solamente existan en grandes tamaos y nadie en su casa poda soar con tener una. Es ms,
dichos artefactos eran de tambor, lo cual impriman caracteres como de mquina de escribir a gran velocidad.
Pero regresando al asunto, el maestro en cuestin mostraba carteles hechos a partir de smbolos de impresin,
que a lo lejos mostraban a la Monalisa, a una despampanante mujer desnuda en la playa, etc.

Sin duda este arte por computadora era meritorio, aunque yo siempre sospech que el profesor estaba usando
algn programa de la IBM, porque todo pareca diseado para esas impresoras. La tcnica usada era muy
simple: tomaba una regin de una foto escaneada (asunto que no hay que olvidar tampoco, era prcticamente
imposible de hacer, pues los scanners eran muy costosos), calculaba el tono de gris de dicha regin y al
imprimir sobre-encimaba letras para dar la cantidad de gris necesaria. Mientras ms letras eran encimadas en
la misma posicin en el papel, ms oscura era esa parte. Visto de cerca se podan reconocer ciertas letras a
veces. Vista de lejos, la impresin mostraba una imagen fantstica.

Sopa de Letras es un programa para generar imgenes a partir de letras, pero considerando que las
limitaciones del pasado ya han sido superadas. Las primeras impresoras, por ejemplo, no podan imprimir
imgenes como hoy estamos acostumbrados. As, la nica opcin en ese momento era traducir, por decirlo de
alguna manera, esas imgenes a letras las cuales al imprimirse se vean desde lejos, desde luego, como la
imagen original. La idea es sugestiva y desde hace muchos aos se ha dejado sistemticamente esta tarea a
generaciones de programadores. IBM fue quizs de los primeros en crear este tipo de imgenes usando sus
enormes computadoras e impresoras, las cuales hoy da parecen gigantescos dinosaurios a punto de
extinguirse.



Imagen 1
Logotipo de Sopa de Letras (cortesa de Juan Lpez)


Teora de operacin

Para crear este tipo de imgenes, lo que bsicamente debe hacer el software es:

crear una rejilla sobre la imagen a procesar
tomar cada regin de la rejilla y ver su tono de gris
sustituir el tono de gris por la letra ms adecuada
continuar as hasta terminar con a imagen

Si se estn considerando imgenes en color, primero se saca el color promedio de la regin y se pasa a gris.

El tamao de la rejilla es importante. Si las regiones son muy grandes, las letras que sustituyan a las regiones
de color no podrn mostrar una imagen muy bien definida. Si las regiones son muy pequeas, la imagen con
caracteres resultar mucho mejor definidas.



Imagen 2
Ventana principal de Sopa de Letras

Ventajas de la modernidad

Debido a que la vida moderna nos permite tener imgenes escaneadas fcilmente hoy da, al igual que
modernos sistemas de programacin, incluyendo el lenguaje de descripcin HTML para pginas web,
podemos hacer mejoras incluso sobre la idea original. Por ejemplo, en HTML estn permitidas las letras de
color. El enfoque de los creadores de HTML fue dotar a cada letra en la pantalla de un color determinado
dentro de los 16 millones disponibles en la paleta RGB. Esto permite una inmensa gama de colores. Si se
tiene una imagen de mltiples colores, sta puede pasarse no slo a tonos de gris, sino que a letras de colores
sustituyendo la regin. Los resultados finales de esta idea son verdaderamente agradables y sorprendentes.

Por ello, la salida (los resultados) de procesar una imagen, se presentan como una pgina HTML que puede
verse con Internet Explorer o Netscape Navigator, Mozilla Firefox, etc.


Qu tipo de imgenes puede hacer Sopa de letras?

El procesamiento de las imgenes puede ser en una de las siguientes modalidades:

Colores SI letras. Aqu se calcula el color de la regin y se imprime una M sobre cada color para
que se vean todos los tonos. El resultado es una pgina HTML (gurdese con extensin .HTML para
ver la imagen en su navegador de Internet)
Tonos de gris. Aqu se calcula el tono de gris de la regin (si hay color se pasa primero a tono de
gris) y se imprime una M sobre cada tono hallado. El resultado es una pgina HTML (gurdese con
extensin .HTML para ver la imagen en su navegador de Internet)
Letras blanco y negro. Aqu se imprime sin la propiedad de las letras en HTML. Sirve
particularmente cuando la impresora solamente puede imprimir letras blanco y negro. Usado
normalmente en las viejas impresoras de matriz de puntos. El resultado es una pgina de texto (TXT)
(gurdese con extensin .txt y use Word para ver la imagen)
Colores + letras tonos de gris. Aqu cada caracter tendr el color de la imagen y la letra
correspondiente al tono de gris asociado. El resultado es una pgina HTML (gurdese con extensin
.HTML para ver la imagen en su navegador de Internet)
Tonos de gris + letras tonos de gris. Aqu cada caracter tendr el tono de gris de la imagen y la
letra correspondiente al tono de gris asociado. El resultado es una pgina HTML (gurdese con
extensin .HTML para ver la imagen en su navegador de Internet)
Colores con texto. Aqu cada caracter tiene el color de la imagen pero las letras impresas salen de
una cadena de caracteres que el usuario alimenta (mximo 255 caracteres). El resultado es una
pgina HTML (gurdese con extensin .HTML para ver la imagen en su navegador de Internet)
aipes. Aqu el programa sustituye cada regin analizada por una carta de la baraja. Se necesita
tener instalado el tipo de letra truetype en la mquina. Si ud. instal el programa con el software de
instalacin entonces la instalacin de fonts ser automtica. El resultado es una pgina de texto
(TXT) (gurdese con extensin .txt y use Word para ver la imagen)
Fichas de Domin blancas (con puntos negros). Aqu el programa sustituye cada regin analizada
por una ficha del domin. Se necesita tener instalado el tipo de letra truetype en la mquina. Si ud.
instal el programa con el software de instalacin entonces la instalacin de fonts ser automtica. El
resultado es una pgina de texto (TXT) (gurdese con extensin .txt y use Word para ver la imagen)
Fichas de Domin negras (con puntos blancos). Aqu el programa sustituye cada regin analizada
por una ficha del domin. Se necesita tener instalado el tipo de letra truetype en la mquina. Si ud.
instal el programa con el software de instalacin entonces la instalacin de fonts ser automtica. El
resultado es una pgina de texto (TXT) (gurdese con extensin .txt y use Word para ver la imagen)


Imagen 3
Ilse construida con la letra M en colores

Otras Opciones

Se puede apagar/prender (normalmente aparece apagado), si se quiere ver cmo el software va
procesando la imagen. Esto aparece en la opcin Seguir proceso.
Se puede cambiar el tamao de la letra para la salida en HTML. Los tamaos van de 1 a 9.
Se puede cambiar el tamao de X y Y en la regin a procesar.


otas importantes

Las opciones que usan tipos de letra como cartas, o fichas de domin, tienen que procesarse con Word. As, se
procesa la imagen y el archivo se carga a Word directamente como un archivo de texto. Una vez cargado,
sustituya las letras que se ven en el texto por el tipo de letra (font) que desea, puede ser el de cartas, domin
de fichas blancas con puntos negros y el de fichas negras con puntos blancos. Al sustituir Word el tipo de
letra, ver su imagen.

Cabe destacar que si su imagen es muy ancha, probablemente no quepa la imagen en Word (que es en
realidad un texto). Intente cambiar el formato a landscape (apaisado) o reduzca el tamao de la letra si es que
an as no puede ver la imagen. Recuerde que Word cuando no le cabe, pasa la lnea abajo. Para Word su
imagen no es ms que un texto. No lo olvide.
Grficas

Creador de Iconos


Un icono o cono, es de acuerdo al diccionario una representacin religiosa pintada o en relieve
caracterstica del arte bizantino. As decimos, por ejemplo: Volvi de Rusia cargada de iconos. Tambin es
un smbolo que mantiene una relacin de semejanza con el objeto que representa, como en este ejemplo:
para entrar al diccionario, haz doble clic en el icono.

En computacin, en el diseo grfico tal vez, un icono es una imagen grfica, que suele ser pequea, que
representa un acceso directo, un programa, un archivo, un enlace, o cualquier otro recurso. El cono suele ser
una buena forma de identificacin para lo representado.

En este caso vemos que los iconos han invadido las computadoras y los dispositivos mviles. As, los
telfonos inteligentes, los celulares modernos, tienen pantallitas a color con iconos que representan un
sinnmero de programas. De hecho, pienso que para los diseadores de estos iconos es cada vez ms difcil
mantener la relacin de semejanza entre el dibujo y lo que representa.

Por ejemplo, el icono de CorelDraw es en realidad el dibujo de un globo aerosttico. Y s, quien lo dise
probablemente pens en posicionar el logo y la marca, pero es claro que el icono de CorelDraw no tiene nada
que ver con las funciones que hace el programa.

Encontr en el estupendo libro Beyond Photography, The Digital Darkroom, por Gerard J. Holzmann
(http://www.spinroot.com/pico/a4.pdf), lo siguiente al respecto de este tema:

Por ah de 1983, en los Laboratorios Bell, ahora AT&T, un grupo de unos 50 investigadores empezaron a
trabajar con un nuevo tipo de terminal de computadora. Inmediatamente pusieron manos a la obra para
sacar provecho de sus capacidades grficas.

Luca Cardelli (que al momento de escribir esto, haba cambiado de trabajo, ahora para DEC Systems
Research Center, en Palo, Alto), haba pensado en una manera de convertir fotos manualmente en pequeos
iconos en blanco y negro. (Cabe aclarar que en 1983 no haba cmaras digitales, ni scanners caseros, ni
todos estos dispositivos que ahora son comunes en muchsimas casas y oficinas). Pues bien, Cardello hall
una vctima, la foto de Edsger W. Dijkstra, con la que decidi trabajar. El proceso fue as:
Reducir la fotografa con una copiadora Xerox, para que quedara al tamao de una foto pequea,
de 4x4 cms, y en alto contraste.
Dibujar una rejilla (matriz) de 12x12 puntos y hace4r entonces un patrn colocando puntos negros o
blancos, de acuerdo al porcentaje en que en alguna regin de la foto haba ms blanco o ms negro.
El resultado de este proceso dio lo siguiente:

Imagen 1
Dijkstra como icono
Luca hizo una demostracin de su programa poniendo el icono de Dijkstra como si fuese una pelota
rebotando en la pantalla. Los cientficos se emocionaron con la idea y digitalizaron ms imgenes
manualmente, pero pronto se aburrieron del proceso.
A alguien entonces se le ocurri usar esta idea en el nuevo servidor de correo, que podra anunciar la
llegada de mensajes a las terminales mostrando el icono de quien lo enviaba. Luca Cardelli entonces escribi
una primera versin que llam vismon (con cierto humor considerando que exista un programa que se
llamaba sysmon).
Rob Pike habl con los investigadores y les tom fotografas de 4x5 pulgadas con su cmara Polaroid. Y
aunque nadie saba para qu Pike quera estas fotos, todos colaboraron, desde la secretaria hasta el director
ejecutivo. Las imgenes fueron entonces digitalizadas usando un scanner que se pidi prestado a los colegas
del departamento de procesamiento de imgenes.
En un par de das, se tuvieron cerca de 100 fotografas que fueron la fuente principal para los experimentos
de procesamiento de imgenes. El siguiente paso en esta secuencia ocurri cuando Rob Pike y Dave Presotto
desarrollaron el software para una base de datos centralizada de fotografas iconizadas. Ellos le llamaron a
esto el servidor de rostros.
El programa vismon se reescribi para usarse con el servidor de rostros. Desde entonces, vismon ha sido uno
de los programas ms populares en las computadoras de Bell Labs. en ese tiempo. El servidor de rostros se
us por el programa de correo para anunciar la llegada de mensajes electrnicos y por el manejador de la
impresora laser, para identificar al propietario de quienes mandaban trabajos para impresin.

Imagen 2
Cmo se vea vismon corriendo
La imagen anterior muestra los iconos de quienes mandaron correo a un usuario. La barra de la izquierda
viene del programa original sysmon, que muestra la carga del sistema en ese momento. Incluir las fotos de
los nuevos colegas fue algo que se hizo en la base de datos del servidor de rostros, como algo de rutina.
La foto se digitaliza en 512x512 puntos, se sacan semitonos y se convierte en un icono de 48x48 puntos, con
un programa llamado Mugs, escrito por Tom Duff. El icono entonces se incluye en la base de datos
mantenida por el servidor de rostros.
Pues bien, la idea me pareci interesante y adems, es actualmente mucho ms simple y fcil de implantar,
considerando los avances, tanto en hardware como software. Decid entonces mi estrategia: Tomara una
imagen, a la cual le aplicara algn proceso (ver ms adelante), para acomodar el resultado en una rejilla
que fuese de 16x16, 24x24, 32,32, 48x48 o 64x64 pixeles, que son ms o menos las resoluciones que se usan
actualmente en la iconografa de los sistemas operativos actuales.
.
Imagen 3
Pantalla de inicio del creador de iconos

En lugar de tomar la imagen y reducirla, lo cual en algunos casos pierde la imagen cierta precisin por los
algoritmos que se usan para hacerla ms chica, se me ocurri aplicar el filtro mosaico a la imagen, con
precisamente las diferentes resoluciones: 16x16, 24x24, 32,32, 48x48 o 64x64. De esta manera, tomara un
punto de cada regin dentro del mosaico y la pintara en una imagen nueva. Desde luego que este proceso,
como el de reducir una imagen, tiende a perder informacin, pero en mi opinin, para este problema en
particular, esta tcnica parece ser ms conveniente que usar los algoritmos para reducir una imagen.
.
Imagen 4
El programa ya habiendo procesado una imagen
Una vez teniendo la imagen procesada, usando el API correspondiente en Windows (recurdese que us
Delphi bajo el sistema operativo de Microsoft), salv la imagen en el formato .ico, que es el que usa
precisamente Windows.
El software es muy sencillo de usar. Los pasos a seguir son:
Se lee la imagen que se desea iconizar, valga el trmino.
Se usa la opcin de men (Procesar), la cual permite -si se desea- pasar antes la imagen a tonos de
gris por si no se desea que se procese en color.
Al trmino del proceso aparecer una ventana que simplemente pide al usuario con qu nombre se
quiere salvar la imagen procesada, en formato .ico.
Grficas

Fotos al leo

Una caracterstica de las imgenes en la computadora es que son digitales, es decir, hechas de dgitos, de
nmeros, pues. Cada dgito representa un punto en la pantalla, y normalmente el valor que vemos corresponde
al color que ese punto tiene en la imagen. De esta manera, las fotografas digitales (ya sean escaneadas o
tomadas con alguna cmara digital), son en realidad una matriz cuadrada de pixeles (puntos en la pantalla),
que bien puede ser en color o en blanco y negro.

En la medida en que la tecnologa ha progresado, hemos pasado de imgenes de 256 colores a las que nos
pueden mostrar alrededor 16 millones de colores. Actualmente, cualquier tarjeta de video que se precie de
serlo muestra los tres componentes de color R(ed - rojo), G(reen - verde) y B(lue - azul) en cada pixel (o
punto), el cual puede ser un valor entre 0 y 255. De esta manera, 256 x 256 x 256 nos da 16,777,216 posibles
colores. Cabe sealar que el ojo humano no puede ver semejante espectro de colores, pero es un hecho que la
computadora puede desplegarlos.

Ahora bien, cada fotografa digital es en realidad una aproximacin sobre lo que se fotografa tomando una
cmara analgica, es decir, una que tenga filme. Por ello mismo, el grano de la cmara digital es la
precisin con la cual puede distinguir los detalles. Por ello vemos que hay cmaras digitales de 4, 8, 10 o ms
megapixeles (estas ltimas son para los profesionales probablemente). De hecho, tampoco ya el ojo humano
no distingue entre, digamos, 8 y 10 megapixeles. De esta manera, la resolucin de las imgenes ha crecido y
con ello la necesidad de usar cada vez ms bytes en los archivos y memorias donde se guarda.

Con el advenimiento de la tecnologa digital de imgenes y su gran aceptacin en el mercado, estamos viendo
desaparecer las cmaras analgicas y los filmes. Se acab el revelado y los costos asociados a esto. Adems,
con la generacin de imgenes digitales, tambin naci la posibilidad de post procesarlas para generar efectos
en ellas. Photoshop, por ejemplo, es uno de los programas ms populares para manipulacin digital de
imgenes.


Filtros Digitales

La manipulacin de una imagen digital se denomina genricamente como un filtro, el cual convierte una
imagen en alguna otra cosa. Existen filtros que son reversibles, mientras que tambin los hay aquellos que no
lo son. De acuerdo a las necesidades, se pueden tener diversos filtros o transformaciones que pueden aplicarse
a una imagen incluso ya filtrada. Los resultados suelen ser sorprendentes.

Muchos filtros grficos, sino es que todos, se consideran transformaciones grficas basadas en una matriz
llamada tambin convolucin (no se asuste por la palabra, es slo un trmino que da precisin a todo esto).
Estas convoluciones es el procesar segmentos de la imagen a partir de una submatriz (que puede ser de 3x3,
4x4, 5x5, etc.) de pixeles, que va recorriendo la imagen completa. El resultado final convierte la imagen
original en alguna otra cosa. Existen filtros para reconocer bordes, para quitar ruido, para meter ruido, para
hacer ms precisa una imagen, para hacerla menos precisa, para deformarla, etc. Las aplicaciones son
infinitas.

El filtro Oleo Digital (en tonos de grises)

En el libro Beyond Photography (The Digital Darkroom), de Gerard J. Holzmann, que trabaj algunos anos
en los Laboratorios Bell
1
, el autor nos habla de cmo alterar imgenes. Ah presenta la fotografa de Dennis
Ritchie (uno de los inventores del lenguaje C), y al procesarla la convierte en la misma imagen, pero como si
fuese pintada al leo. De acuerdo al autor, lo que hace es esto: Para cada punto en la imagen, un programa
calcula el histograma de los 36 bordes del derredor [del punto de inters] y se asigna el valor [al propio
punto de inters] el valor que contenga la mayor frecuencia. El resultado es casi una pintura al leo.

1
http://www.spinroot.com/pico/a4.pdf

Al poner manos a la obra y disear mi primer programa que ejecuta este tipo de filtro, comet el error de
pintar la imagen filtradas sobre la imagen original y el resultado simplemente era muy pobre, por lo cual me
di cuenta que haba que desplegar el resultado en una segunda imagen. De pronto entend el error y es un
instante se solucionaron los problemas que iba teniendo. Decid, sin embargo, no usar 36 puntos, sino 49, para
que as mi matriz de convolucin tenga un punto central en [4,4]. Con una convolucin par no se puede tener
un punto central.



Imagen 1
La imagen de la izquierda es la de Dennis Ritchie (el creador del lenguaje C), como aparece en el libro de
Holzmann. A la derecha aparece mi propia versin del algoritmo descrito. Cul le gusta ms a usted?

Este programa funcionaba originalmente slo con imgenes en blanco y negro (tonos de grises), pues en
imgenes de tonos de gris hay nada ms 256 tonos y adems, las componentes RGB de cada pixel tienen el
mismo valor, es decir, R=B=G, lo cual hace sencillo el encontrar el histograma de frecuencias de color.



Imagen 2
Marianna al leo en tonos de gris

El filtro Oleo Digital (en color)

Para poder generar imgenes al mejor estilo leo, en color, se necesita hacer una modificacin que parece
trivial, pero que no lo es. La dificultad es que al querer pasar a color, tenemos que las imgenes pueden
contener poco ms de 16 millones de colores. Esto, obviamente hace el problema un poco ms difcil, pues no
podemos generar un arreglo de 16 millones de colores (para seguir con la tcnica usada en la parte en tonos de
gris), pues es totalmente ineficiente y absurdo. As, aqu hay que contar y crear el histograma de frecuencias
de manera ms sencilla. Despus de dos semanas de darle la vuelta al problema, finalmente hall una solucin
simple. La implement y de pronto ya tena mi programa que generaba el leo digital en color.

Al poder hacer el histograma y hallar cul es el valor de mayor frecuencia, simplemente lo pinto para cada
punto en la pantalla. No obstante, encontr un par de problemas: Uno fue el hecho de que en color, el filtro a
veces mete ruido cuando hay puntos blancos y entonces aunque en la regin haya pocos puntos blancos, como
que los amplifica, dando un resultado poco aceptable. As, decid que necesitaba usar el filtro blur para
quitarle ese ruido. El resultado final es ahora mucho ms aceptable. El segundo problema fue el tener que
aplicar el blur en cuatro ocasiones para que el ruido no deseado desapareciera. Es claro que el filtro hace
una imagen que pierde precisin contra una fotografa real, pero se asemeja, sin duda, a un cuadro hecho al
leo.


Cmo se usa el programa

El sistema permite cargar imgenes JPEG y BMP. En el men de Archivo podr leer la imagen que quiere
procesar. Al cargarla a memoria, sta debe desplegarse en ambas imgenes del programa. Use entonces la
opcin de Procesar y observar ante sus ojos el trabajo del filtro. Se puede elegir entre color y tonos de grises.
El proceso es totalmente automtico. Una vez terminado esto, puede guardar la imagen procesada (como JPG
o JPEG). Y eso es todo.

Cabe sealar que la resolucin de la matriz puede cambiar el resultado del procesamiento. Hay tres opciones:
matriz de 3x3, de 5x5 y de 7x7. Elija alguna de las opciones (por omisin es 7x7) y procese la imagen.
Gurdela y procese de nuevo la imagen (cargndola de nuevo), con las otras dos matrices. Compare y decida
qu resultado le gusta ms. Dependiendo de la imagen en particular a procesar, a veces una matriz de 5x5 es
la adecuada, otras veces es preferible la de 3x3 o la de 7x7. No hay un parmetro que establezca la mejor
opcin.


Imagen 3
adia procesada con el filtro leo en color (16 millones de colores) y con blur aadido.


El filtro Blur

Este tipo de filtro permite limpiar de ruido una imagen. Se usa para quitarle detalle a las imgenes y en el caso
del filtro leo, en ocasiones es necesario utilizar previamente el filtro blur y despus procesar. Por ejemplo, se
encontr que usando cuatro veces el blur antes de procesar con el filtro leo la imagen en color, los resultados
mejoraban. Sin embargo, aqu se deja como una opcin del men para que el usuario utilice este filtro para
ver si el resultado final le complace o no. Se recomienda usar blur cuando se vaya a procesar una imagen en
color.

Grficas

FotoMorsaicos


El 22 de diciembre de 1997 la revista Newsweek present la imagen de la Princesa Diana creada con una
mirada de pequeas fotografas de flores (ver figura 1). El autor de semejante idea era Robert Silvers,
estudiante graduado del M.I.T. que actualmente tiene una empresa que se dedica precisamente a estas labores.
Silvers cre los Fotomosaicos, los cuales son mosaicos hechos de fotografas (en lugar de hacerlos de colores
slidos). Todas las pequeas imgenes, cuando se ven en conjunto forman la fotografa original. A partir de
ello Silvers salt a la fama y en poco tiempo se empezaron a ver ms de estas imgenes en diferentes portadas
de revistas como Wired, IBM System Journal, Life Magazine e incluso Playboy.


Figura 1

Silvers ha creado una empresa llamada Runaway Technology (http://www.photomosaic.com), la cual se
dedica a hacer fotomosaicos a pedido especfico. Tales pedidos personalizados pueden costar entre 10,000 a
80,000 dlares. Entre sus trabajos Silvers ha hecho fotomosaicos de algunos personajes de la Guerra de las
Galaxias y de Disney, entre otros. Sus trabajos se venden por alrededor de 20 dlares en afiches (posters) en
diferentes tiendas, incluso dentro de la red Internet.

Obviamente la pregunta es cmo los hace? Desafortunadamente Silvers no ha hecho pblicos sus algoritmos.
La justificacin para ello es que el autor no pretende crear una compaa que venda software (lo cual sera un
xito seguramente por un tiempo), sino que intenta hacer arte, por lo cual mantiene en secreto los algoritmos
usados. Se sabe sin embargo que usa una computadora Silicon Graphics con 30 gigabytes en disco y 256
megabytes de RAM. Tiene alrededor de 100,000 fotografas ya digitalizadas y durante el proceso de seleccin
se consideran, de acuerdo al mismo autor, cientos de aspectos para sustituir un pedazo de la imagen original
por una fotografa. Sin embargo, l mismo declara que parte del proceso en la creacin de los fotomosaicos es
manual, es decir, no se hace automticamente todo por el software que l mismo ha escrito (ver Apndice I).

Fuera de la mera curiosidad de cmo se pueden generar fotomosaicos de esta naturaleza, hay un inters
acadmico, porque independientemente de las aplicaciones obvias dentro del arte y el entretenimiento, los
fotomosaicos pueden servir para proteger los derechos intelectuales de las obras pictricas, por ejemplo
mostrando un fotomosaico con imgenes plenamente identificadas por el autor del mismo. Esto podra dar
suficiente informacin sobre cierta imagen y an as no poderse usar para otros propsitos. Otra aplicacin
potencial es la de un mtodo de organizar informacin (bases de datos) o incluso en esquemas de criptografa
y compresin de imgenes. Los fotomosaicos son un buen ejemplo de tcnicas de diagonalizacin en la teora
de la complejidad y bien pudiese tener aplicaciones en este campo tambin.

El estudio de la creacin de buenos fotomosaicos no ha sido analizado de manera formal. Hay varias razones
para ello: Una es que el rea de trabajo es relativamente nueva (Runaway Technology se cre apenas en
1996); otra es que existe relativamente poco software que hace esta tarea y adems los algoritmos de Robert
Silvers (el mximo exponente sin duda), son propietarios y por ende desconocidos para cualquier otro excepto
el autor. Otra razn es que la calidad de los fotomosaicos depende en parte de las propiedades del sistema
visual humano y hay muy pocos estudios al respecto y los que hay parecen ser muy empricos. Por ejemplo,
Cmo decidir qu imagen debo sustituir por una regin o pedazo de la fotografa que estoy procesando? esto
es, cmo definir una distancia grfica que defina qu tan cerca est un color de otro? Qu tan grande puede
ser cada mosaico antes de que se pierdan los detalles de la imagen original? Cuntos mosaicos debe tener la
biblioteca de imgenes? Cuntas veces se puede usar un mosaico antes de que se convierta en montono?

Los resultados que obtendremos aqu quizs puedan dar nueva luz sobre este tema y he aqu la importancia
del mismo. De igual manera, en la medida que haya ms gente que sepa cmo se hace un buen fotomosaico
tendremos ms competencia y no solamente habr que atenerse a las tcnicas de Runaway Technology y
Silvers, generando as ms posibilidades y artistas que puedan usar esta tecnologa.


Un poco de historia

La creacin de fotomorsaicos no es novedosa en realidad. Hay una larga historia atrs de ello. Un primer
intento es el usar las letras del alfabeto para crear imgenes. Por ejemplo, he aqu a la famosa Gioconda de
Leonardo Da Vinci, sacada de una pgina personal en Internet http://personales.alcavia.net/~jmoreno/jose/


IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII@@@@@@@@@@@@@MXXIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJ@@@@@@@@@@@@@@@@@@@@@@@@@@@IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJM@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII@@@@@@@@@@@Z@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
.III.III.III.III.III.III.III.II@@@@@@@@@@@@ZZ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LI.III.III.III.III.III.III.III.I
I.III.III.III.III.III.III.IIIJ@@@@@@@@@@@@MZ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@III.III.III.III.III.III.III.II
.II.II.II.II.II.II.III.III.I@@@@@@@@@@@MMMXIIIIMMM$$$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LII.II.II.II.II.II.II.II.II.I
I.II.I.I.I.II.II....II.II.IJ@@@@@$MMIIIII..........IIIIIXMMM$@@@@@@@@@@@@@@@@@@@@@@@@@L.II.I.I..II.I..I.II.I..II.I
.I.I.I.I.I.I.I..I..II..I..J@@@@$MI..............IIIXXXXXXMMMM$@@@@@@@@@@@@@@@@@@@@@@@@@L.I..I..I.I.I.I.IIIII..I.I.
.I..I...I..I..I..I.I..I..J@@@@$$XXXII...................IXMMM$$@@@@@@@@@@@@@@@@@@@@@@@@@L.I..I..I..I..I...I..I..I.
I...I...I...I...I..II....@@@@MXI.........................IXXXMM$@@@@@@@@@@@@@@@@@@@@@@@@@LI...I...I...I..I...I..I.
I.....I....I....I....I.@@@@@MXII.........................IXXXMM$@@@@@@@@@@@@@@@@@@@@@@@@@L...I....I....I....I....
.I.......I........I....@@@@@MXII...........................IIXMMMMM@@@@@@@@@@@@@@@@@@@@@@@@...I.....I......I......
......................$@@@@@MMXIII........................IIIXXXXMM$@@@@@@@@@@@@@@@@@@@@@@@L......................
....................IZ$@@@@MMXI.........................IIIIIIXXXXMM$$@@@@@@@@@@@@@@@@@@@@@@LIX.I.................
...................IZZ@@@@@$$XII............IIIIIIIXXXXX$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MIIXIX.........I......
..................IZZ@@@@@@MXXIII...........IIIIIIIIXXXXXM$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IIIIX.......IIII...II
..................IZZ@@@@@$MXIIII...........................IIIIIXXX@$$@@@@@@@@@@@@@@@@@@@@@@LIIIX...IIIIIIIIIIIIX
................MZZM@@@@@@MXXIII.................................IIIXM$@@@@@@@@@@@@@@@@@@@@@@MIIXIX.IIIIIIIIIIIIXI
................IZZM@@@@@@MXII..................................IIIXXM@@@@@@@@@@@@@@@@@@@@@@@@IIIXXIIIIIIIIIIIIIXI
................ZZZM@@@@@$XIIIII........IIIIIII.....IIIIXXX$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LXXXXX.IIIIIIIIIIXII
...............IZZZ$@@@@@$$XIIIIIIXXXII..........XXMMMMMXXXXXXXXXXXXM$$@@@@@@@@@@@@@@@@@@@@@@@XXXXXXXIIIIIIIIIXXII
...............ZZZZ$@@@@@@$$$XXMM$$@@@@MI......$$@@@@@@@@@MMMXXMMM$$$$$@@@@@@@@@@@@@@@@@@@@@@@XXXXXXXXXXXIXIIXXXXX
...............MZZM@@@@@@@@@@@@@@$FXXM$@@I....IX$@@@@$XXIXX$$$@@@@@@@$M$@@@@@@@@@@@@@@@@@@@@@@LXXXXXXXXXXIXIXXXIXX
...............MZZM@@@@@@@@@@@@$$$@@@@MI@@...IX@@@@@$$$$$@@@@$$$@@@@$MXM$@@@@@@@@@@@@@@@@@@@@@@XXXIXXXXXXXXXXXMMXX
.....MXXX.X....LZ@@@@@@@@@MIM@@$MIM@@@@@MX...I$@@@$$$MX.I@@@@@@@@$MMXIXM$@@@@@@@@@@@@@@@@@@@@@@XXXMXXMXXMXXMXXMXMM
....XXXMXIMJ...@@@@@@@@@@@IIIIXIII.IFFFFIX...I$$MMXXI....FFFFFMMIIIIIIXX$@@@@@@@@@@@@@@@@@@@@@@XXMXXXMMMMMMMXXXMMM
..CXMMMMMXMJ..C@@@@@@@@@@MXIIIIIIXXXXMXII....IMMXXXIIIIIXXXXXMMM.....IXMM@@@@@@@@@@@@@@@@@@@@@@XMMXMMXXMXMXXMXMMMM
IXMMMMMMMMMJ..@$$@@@@@@@@$XI......IIIII......IMMXXII..IIXIIIII.....IIIX$$@@@@@@@@@@@@@@@@@@@@@@JMMMMMMMXXXXMXXMMMM
IMMMMMXXXMMMM$$$$@@@@@@@@$XI.................IMMXII................IIXX$$@@@@@@@@@@@@@@@@@@@@@@MMMMXMXMXMXMXMMMMXM
X$$MMMXMMM$$M@$$M@@@@@@@@$XII................IXXXII...............IIIXM$$@@@@@@@@@@@@@@@@@@@@@@NNNNNXMXMXNXMXNXHXM
XMMM$$MMMMMMM@MMM@@@@@@@@@II.................IIIIII...............IIXX$$M@@@@@@@@@@@@@@@@@@@@@@MXXIIMMAIIIIIII..II
$$MMMMMMXMMXM@$$$@@@@@@@@@$XI................XXXXII..............IIIXX$$@@@@@@@@@@@@@@@@@@@@@@@@XXIIMMAIIIIIII..II
$$$$$$$MNM@@$$$@@@@@@@@@@@@XII..............IIIIXXI..............IIIXM$@@@@@@@@@@@@@@@@@@@@@@@@@ZHXHXHXMAXNXMCXMNC
MMMM$MMNMMMM$MM@@@@@@@@@@@@$YII......II.....IIXIWLI.............IIIXX$$@@@@@@@@@@@@@@@@@@@@@@@@@IJXHMXHMMXHWHEMNXN
MNM$MNNMMMM@@@@@@@@@@@@@@@@$$$XII......XX...Z$@@@$$$...........IIIXXX$$@@@@@@@@@@@@@@@@@@@@@@@@@XIHXMXMNXNEMWNXMEX
NMXNXMNMNMMX@@@@@@@@@@@@@@@@@$XII........@$@@@@@@@$MI.........IIIXXX$$$@@@@@@@@@@@@@@@@@@@@@@@@@JHMMNKXWWXMMXXXMWH
XNMMXXMXMMNMM@@@@@@@@@@@@@@@@$XXII.........@@@@@@MXI.........IIIIXXXX$$@@@@@@@@@@@@@@@@@@@@@@@@@@MMXNMMXMXNMZXNXMM
MNMXEXXXAMMMM@@@@@@@@@@@@@@@@$$XXII.........IXXXXXIIIIIIII...IIIXXX$$$$@@@@@@@@@@@@@@@@@@@@@@@@@@XXNIXXMXMXNXZXNXZ
MXMMXMXMMMAMM@@@@@@@@@@@@@@@@@@XXIIIIX$X.II.IIXXXMMM$@@$MI....IXXX$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XNMZHNMXXMNXMZXMZ
NAMXMAXMXMMIM@@@@@@@@@@@@@@@@$XII....$$@@$L.MM$@@@@@@$II......IXXMM$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@MXMXMMMJJMXXMXHZX
MXMMMXMXMMMIM@@@@@@@@@@@@@@@@@@I..............IXXXMIIII.......IXX$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XNMMMMMMJMIIIXXI
XMZHXIXMMXMXX@@@@@@@@@@@@@@@@@@@$I........MM$$XXXXXXXXI......IIXX$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XMMXMXJIJMHZXXXM
MXMXNMXMXMMI@@@@@@@@@@@@@@@@@@@@@M$XI....IIIIXXII.IIXXX......IXX$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NXMXMXMMXXHXNXZW
XXMIMIMIMIMIX@@@@@@@@@@@@@@@@@@@@@@$I...................IIXXX$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXINXIXHXXMXHIX
MXMMXMMMXMMMM@@@@@@@@@@@@@@@@@@@@@@@@$I.............IXXXXX$$$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XNXIXIXXHXZMXIX
XMXXMMXMXMMXX@@@@@@@@@@@@@@@@@@@@@@@@@$I..........IIIXXXXX$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXNMNMXXXHXXIXX
IIIIIIIIIIIIII@@@@@@@@@@@@@@@@@@@@@@@@@@$I.....IIXXX$$$$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXIIIXMXXXIXMM
MMMXIIXIIIIIIIM@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LXNXMXZMMIIIIIX
XXMMMMMXXXXIIII@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXNXMXZXXXXXIX
XIIIIIIIIIIIIII@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$MMMM$$@@@@@@@@@@@@@@@@@@@@@@@@@XXZXZXMCMXMXZX
XIIIIIIIIIIIIIII@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IXMMM$$@@@@@@@@@@@@$$$$MMMMM$@@@@@@@@@@@@@@@@@@@@@@@@@@IXZHNXMXNZMXNX
IIIIIIIIIIIIIIIIII@@@@@@@@@@@@@@@@@@@@@@@@@@@IIXXX$$M$$@@@@@@@@$$$MMMMMMMM$@@@@@@@@@@@@@@@@@@@@@@@@@L22XMEHMEZMXXX
IIIIIIIIIIIIIIIIII@@@@@@@@@@@@@@@@@@@@@@@@@@@IIIIXXXXMM$$$$$$$$$MMMMMXXXMMMM$@@@@@@@@@@@@@@@@@@@@@@@LXXZOCOXXBBSXX
IIIIIXXXXXXXXXXIII@@@@@@@@@@@@@@@@@@@@@@@@@@@XI...IIXXXXXMMMMMMMMMMMXXIIXXXM$$$@@@@@@@@@@@@@@@@@@@@@@MXMXJOSEX.XXX
IIIIIIIIIIIIIXIIII@@@@@@@@@@@@@@@@@@@@@@@@@@@XI...IIIXXXXMMMMMMMXXXXXIIIIIXXM$$$@@@@@@@@@@@@@@@@@@@@@@MXMXMILIXXMX
XXMXIIIIIIIIXXXIII@@@@@@@@@@@@@@@@@@@@@@@@@@@@XIIIIIIIIXXXXMXXXXXXXXII.IIIXXX$$@@@@@@@@@@@@@@@@@@@@@@@IXXMXXHXXIXX
XXXXIIIMMMMXXXXXI@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XIII....IIXXXXXXXXXIII......IIXM$@$@@@@@@@@@@@@@@@@@@@@@@XMXXAXXAIXX
MXMMXMMXXMMMMXXXX@@@@@@@@@@@@@@@@@@@@@@@@@MFXXIIII.....IIIXXXXXII.........IIXXM$X@$@@@@@@@@@@@@@@@@@@@@@XXXIXXIXMI
XCXRMMMIIXXXXXIX@@@@@@@@@@@@@@@@@@@@@@@$$$XXIIII........IIIIIXI...........IIIXXMM$@M@@@X@X@@@@@@@@@@@@@@@IXIXMMXIX
XXXXMMXIIIXXIIXJ@@@@@@@@@@@@@@@@@@@@@XIII.................IIIII............IIXXM$M@@@M@@@@@@@@@@@@@@@@@@@@XXIXMWWX
XXIXMMXIIIXXXXI@@@@@@@@@@@@@@@@@@@@LXXI.....................III............IJJJI@@@@M@$X@X@@I@@@@@@@@@@@@@@LXXMXII
XNXCXMMXIIXXXX@@@@@@@@@@@@@@@@@@@I........................................IJJIXJM@@@@@@X@M@MIM@@@@@@@@@@@@@@LXXEXB
IXNMXXXIXXXXI@@@@@@@@@@@@@@@@@@LII........................................IJIJL@@M@@@M@M@X@X@M@@@@@@@@@@@@@@@LXSSB
INMNMXMXXXXX@@@@@@@@@@@@@@@@@@J.I..........................................JIJJ@M@@@@@M$$M@X@@@@@@@@@@@@@@@@@@MXIX
XXMXMXXXXXI@@@@@@@@@@@@@@@@@@JIX...........................................I.X@@MX@@MM@$$M@@@@@@@@@@@@@@@@@@@@@MMX
IXMIXMXXXI@@@@@@@@@@@@@@@@@@@MXXM..........................................I.I@D@@Z@@@X@@M@@@@@@@@@@@@@@@@@@@@@@XX
IXIXIXIII@@@@@@@@@@@@@@@@@@JMXXJ..........................................IJXI.@@M@@@M@@@X@@@@@@@@@@@@@@@@@@@@@@@L
XXMXMXMM@@@@@@@@@@@@@@@@@@JXIIII..........................................JJII@@@M@@@M@@IMMMMMM@@@@@@@@M@@@@MMM@@@
MMMXXXX@@@@@@@@@@@@@@@@@@@XJJII...........................................JJI$@@M@Z@@M@@IX@@@@MM@JJX@@XXMMMMMM@@@@
XXMMXX@@@@@@@@@@@@@@@@@JI@@JJJ.I.........................................IJI.JI@8@XM@M@$XM@@@MMXXIXMMMMMI@@@@XXXMM
XMX@@@@@@@@@@@@@@@@@@JII@JJII............................................J.JJX@X@M@M@M@XXM@MJJJFFFM@@@@MIIIXMM@@@@
X#####@@@@@@@@@@@@@@@XI$IJJ..............................................JI.JX@JXMMMMMMMFFIIII####MXXIIIMMMM####M#
#####@M@@@@@M@MM@@@XII$$ILI.............................................IJ.IXJ@JX@X@XIJIXXMMMMMMIIIXX###MMM####MM#
#####@@@@@@@@@@@@@@IJIIIXJJ............................................IJ.JJX@IXJJJJJJXMMMXMXXIIXMXXX####MM######M
#####@@@@@@@@@@@@@$I.....I..................................................JJJJIIXMMMMMXXIIXM##########M#####M###
######@@@@@@@@@@@##L....J.................................................J.I.I.ZMMMMMMIIIMZZ####################M
######@@@@@@@@@@@###L.....................................................II.XMMMMMI.IXX###M#####################M
######@@@@@@@@@M##M##...............I.....................................IMMMMMIIMM###########MM######M###M######
######@@@@@@@@N##MM#####L..........II..................................MMMMMIIXM#######M##M#############M#########
#####@@@@@@@@W##+#W##M######LI.IIIIIII..............................IJMMMMMIXM#########M######M###################
#####@@@@@@@WN+W+X+++ZMMM#######M$IXIII............................IMMMMM.IXX#M##############M############+#######
#####@@@@@@##M+I+#W#+I+IW#W#############LX......................I.XMMMMMMMM###########MM#########X#####W##########
#####@@@@@###N#WII+X##M#M+XM#W#W###############MX+YYYYYYYYYYIXXMMMMMFI.J########+++#####WM##M###M##M##############
#####@@@##W#N#WW#X++#M##X+##M##N#X##M###X#M############PM####MMMMM.IXMMMMXXM###########XIXM##W##II++F#P#M##M######
MN#WM@@@W##M+##W#X#M##MII+MWM#++I###WM###MWN##WM#WM##########MMMFII####MI++############+##+F8++#M###W#######MM####
W+W###@###+M###X#M#N#+I+##M#M+IIW###MX###W#X##MM#XX#######Z##*XIXMMM****MX*********W**********I*M**M*M********MW**
*************M*MM***M****M**MM***X*IW*W*IW*M**W**IIX****W**MXMMNNN*****MMM**N******N*****X***X*M***WW*******NMXXXM
********M*M*M**M****MW*******X*M**MMIMMI##WWX*MW*WW*M*MI*X*XXIIX************M***M***M***XXMM***XM*M*M***M***X*XXXX
***WM****W***M***M***W****MMWX***WWIMMWM***WM*M**X**XW*MI***I**MM***************W*@*W*M**M**MM**W*****MW*MMX*XXXXX
M*W*M***I Jose Moreno Fernandez Atalaska BBS IW**MMMM****************W****W****WM*M*M*MWM*I*XZZI*IIIIXXMMM
*W*W*M*******************NW****NMI**N***WMN****MMM*************************M*W*W***M*******8****M***MMMMMXX*MMMMMM

Figura 2

Como un primer esfuerzo es pasable. Incluso, hacer un programa que transfiera una imagen a las letras del
alfabeto es una tarea simptica y los resultados aunque interesantes, aunque ciertamente pobres frente a lo que
los fotomosaicos pueden mostrar.

En noviembre de 1973 se public un articulo en Scientific American (cuyo autor es Leon Harmon de Bell
Labs.), titulado The Recognition of Faces Aqu aparece la siguiente imagen (vase figura 3).


Figura 3

Harmon escribi un programa llamado MagnaDott, el cual genera este tipo de imgenes. De hecho, el
programador de marras no se considera un artista, sino que se hace llamar a s mismo un cibertista. En el
artculo se presentan otras imgenes, algunas ms reconocibles que otras. Lo importante aqu es el exceso y
redundancia en la informacin visual existente de tal manera que pocos bloques de diferentes densidades de
color nos pueden dar la informacin estereotpica de Abraham Lincoln.

Sin embargo, los esfuerzos de Harmon se ven magnificados por Salvador Dal, al presentar la siguiente obra
(Figura 4):

Gala Mirando al Mar (Salvador Dal, 1976)
Figura 4

A 20 metros el cuadro de Dal se convierte en el retrato de Abraham Lincoln. Alguien llam a esto Lincoln en
Dalivisin. Al escribir esto me entra la duda de si la imagen de Lincoln no es un caso excepcional.

Ms tarde, Chuck Close trabaj sobre esta concepcin y he aqu un fragmento de su idea (figura 5):


Figura 5

En algn momento Close se dio cuenta que poda llenar una malla cuadriculada con sus pinceles de aire,
dndole diferentes densidades al color para as crear lo que l llam faux fractals (fractales falsos). Esto es,
tomar un dato repetitivo en escalas cada vez ms decrecientes y reemplazarlos para lo que Roy Lichtenstein
llam pinturas diminutas. Y semejantes pequeas pinturas pueden ser cualquier cosa y de cualquier textura.

Pero esta idea no es muy novedosa (la de los fractales falsos), porque en 1918, el fotgrafo Arthur Mole, de
29 aos, cre la siguiente imagen con 21,000 reclutas del Campo Sherman, la cual representa al presidente
Woodrow Wilson. No se sabe cunto tom hacer esta foto, pero se tiene conocimiento de que ms de un
soldado se desmay en el proceso. Esta fue una de muchas fotos que este personaje hizo (figura 6).

Presidente Woodrow Wilson

Figura 6


Beth Clemens, muchos aos despus, lleg a una idea muy interesante. Ella es msico, no una artista plstica
o pintora. La siguiente imagen muestra el concepto fractal (figura 7):

Fractal Beth
Figura 7

Si nos acercamos a la imagen de Beth, veremos esto (figura 8):


Acercamiento de la imagen de Beth
Figura 8

Puede verse que la imagen de Beth es absolutamente fractal, considerando el concepto elemental inventado
(descubierto?) por Mandelbrot hace ya unos aos.

Esta nocin se llev an ms lejos. Aunque el efecto de Clemens es estticamente muy agradable (y quizs
podamos achacar esto a la idea de que el universo es fractal), se han hecho modificaciones al respecto. Por
ejemplo, Eric Haines, que trabaja/estudia en el departamento de grficas por computadora de la Universidad
de Cornell, EEUU, hizo el siguiente mosaico de su jefe, Don Greenberg (figura 9):

Figura 9
(fotomosaico hecho de las fotografas de sus estudiantes)

A partir de estos datos naci esta investigacin inicial, que dio pie a un proyecto para una primera
aproximacin. En este proyecto los fotomorsaicos generados se hicieron con fichas de domin y naipes. Los
resultados de este particular software pueden verse en las siguientes imgenes (Figura 10 y 11).



Figura 10


Figura 11


Con estos antecedentes e historia se decidi entonces el desarrollar un sistema para la generacin de
fotomosaicos con imgenes a color, a la manera de Robert Silvers.


Pasos iniciales en la creacin de fotomorsaicos

La creacin de fotomorsaicos puede dividirse en los siguientes pasos:

1. Se requiere de una imagen a convertir en su equivalente en mosaicos (imagen fuente).
2. Se necesita una coleccin de imgenes (los mosaicos), tambin llamada base de datos o biblioteca de
imgenes.
3. Un programa de computadora que cuadricule la imagen fuente, tome cada una de las subregiones de
dicha cuadrcula y las compare una a una contra la coleccin de imgenes (tomando ciertos criterios
de similitud entre la regin analizada y cada imagen en la coleccin). Finalmente, sustituya por la
ms adecuada de acuerdo a los criterios establecidos.

Evidentemente los dos primeros pasos son sencillos de realizar. Existen una serie de colecciones de imgenes
que pueden ser adquiridas por un costo especfico o incluso gratuitamente a travs de la red Internet (aunque
esto ltimo puede llevar muchas horas de conexin). La imagen a procesar se obtiene generalmente a partir
del escaneo de una fotografa particular. sta puede ser de gente famosa o incluso de familiares o amigos.
Obviamente las tcnicas para hacer fotomorsaicos no involucran necesariamente fotos de rostros humanos.
Bien podra tratarse de animales u objetos.

El paso 3 es sin embargo ms complejo de realizar. Para decidir qu mosaico (imagen de la biblioteca de
fotografas) es el que se acerca ms a la regin que estamos analizando dentro de la cuadrcula, necesitamos
considerar el concepto de distancia entre ambas imgenes, es decir, qu tan cercanas en color es una imagen
contra el color promedio de la regin analizada. A esto le llamaremos una mtrica. No es obvio que podamos
definir una mtrica de manera muy sencilla y para comprender la idea sobre cmo encontrada, hay que hablar
a detalle de cmo la computadora manipula los colores y grficos.


El modelo de color RGB

Un monitor de computadora (incluso una TV) usan el modelo de color RGB (Red Green Blue) para
representar los colores. En la computadora la tripleta de enteros RGB permite ver un color especfico. Cuando
se usan 8 bits por color, si entendemos este modelo, entonces estamos hablando de colores de 24 bits. Cada 8
bits puede guardar un valor que va de 0 a 255. As, si la tripleta es (0,0,0), entonces hablamos del negro. En
cambio, si la tripleta es (255,255,255) hablamos del blanco. El rojo puro podr estar representado por
(255,0,0), por ejemplo. Este es el esquema RGB y es muy popular en las computadoras actuales. RGB
permite 16 millones de colores, muchos ms que los que puede discriminar el ojo humano.


Criterios para la seleccin de imgenes, o definicin de una mtrica

Considerando el modelo RGB, el ncleo del programa de fotomorsaicos debe poder hallar algn criterio para
seleccionar el mosaico a sustituir por la subregin dada. Para esto, el siguiente esquema es el que se ha puesto
en prctica: considrese cada subregin de la imagen fuente como de un solo color. Para esto, el software lo
que hace es calcular simplemente el promedio de color sumando las tripletas RGB de cada pixel dentro de la
subregin de la imagen y dividiendo cada componente de color en el nmero de pixeles procesados. Esto es:


Donde n y m son los el largo y ancho de la subregin de la imagen a procesar. Eso da un color promedio de
toda la regin que estamos analizando.

Tmese ahora una coleccin de imgenes a las cuales se les ha realizado el mismo proceso de color promedio,
pero en este caso no solamente a una regin de cada imagen de la coleccin, sino a toda la imagen. De esta
manera lo que tenemos es una coleccin de imgenes de colores slidos (promedio de cada imagen original).
Esto da un solo valor de color promedio para toda la imagen.

La mtrica entonces es simplemente la bsqueda de la distancia mnima entre la regin analizada y cada una
de las imgenes de la coleccin usada para la creacin del fotomorsaico.


Distancia lineal

Cabe sealar que si un solo nmero fuese atribuido a cada color, por ejemplo como lo que pasa cuando se
consideran las escalas de grises, tendramos que la distancia entre dos imgenes sera simplemente la distancia
lineal de un tono de gris a otro, es decir, la mtrica sera

donde
y

son los valores del tono de gris en la regin analizada contra la que se encuentra en la coleccin de imgenes



=
n
m n m n m n
m
nm B G R RGB egion Colordelar
1
, , ,
1
/ )) , , ( (
1 2
D D
1
D
2
D
Distancia Euclidiana

Sin embargo, si tomamos las tripletas RGB el problema no resulta trivial. Podemos considerar entonces la
distancia euclidiana si tomamos al modelo RGB como un espacio tridimensional en donde cada color (R, G y
B), son cada uno un eje coordenado. As, la distancia de la imagen que tenemos a la que estamos analizando
se puede dar como:


Esta manera de crear una mtrica, aunque simple, puede considerarse muy importante y til. De hecho dicha
mtrica se implant en el software (ver ms adelante) y se analizar posteriormente.

Distancia Riemersma

Sin embargo, la manera en como los humanos percibimos el color no parece ser la distancia euclidiana. As,
hallamos una posibilidad ms, la cual fue analizada por Thiadmer Riemersma, de Holanda, en donde hall
evidencia emprica sobre cmo los seres humanos distinguen las diferencias de color. El resultado es lo que
hemos llamado distancia Riemersma y se basa en la siguiente mejora o correccin a la distancia euclidiana:


donde



(Para una discusin al respecto de cmo se lleg a esta frmula, consltense la bibliografa). Esta es la mejor
aproximacin de mtrica considerando los resultados obtenidos (que se analizan ms adelante)).


La coleccin de imgenes

Para poder utilizar la mtrica (sea cual sea sta), se necesita que la coleccin de imgenes sea preprocesada
con antelacin, en un afn por que el programa sea ms rpido y menos costoso en recursos de mquina. As,
se tom una coleccin de imgenes (todas en formato jpeg) sin distincin en tamao pero que todas
cumpliesen con ser de 24 bits de resolucin y se hizo un pequeo programa que preprocesara dichas imgenes
de manera que sacara el promedio de color total sobre toda la imagen. Cada imagen (de un total de 5544), de
960x1200 pixeles, de 24 bits de color se proces en alrededor de 2.5 segundos. Se gener entonces un archivo
al que se le llam imagen.idx, conteniendo los siguientes datos por lnea:

Rojo Verde Azul NumeroColor NombreImagen

He aqu un fragmento de dicho archivo:
2
2 1
2
2 1
2
2 1
) ( ) ( ) ( B B G G R R + + =
2 2 2
) )(
256
255
2 ( ) ( 4 ) )(
256
2 ( B
r
G R
r

+ + + + =
2
2 1
R R
r
+
=
2 1
R R R =
2 1
G G G =
2 1
B B B =

ndice de imagenes
121 117 131 7959939 Im00001.jpg
67 77 70 4410694 Im00002.jpg
116 121 157 7633309 Im00003.jpg
78 57 59 5126459 Im00004.jpg
86 101 76 5662028 Im00005.jpg
190 193 181 12501429 Im00006.jpg
66 78 83 4345427 Im00007.jpg
117 133 132 7701892 Im00008.jpg
109 127 122 7176058 Im00009.jpg
109 127 122 7176058 Im00009.jpg
102 122 121 6716025 Im00011.jpg
87 102 108 5727852 Im00012.jpg

(en realidad en el archivo estn separados por un espacio cada valor. Aqu simplemente se agregaron espacios
para una mayor claridad).

Rojo, Verde y Azul son los valores de la tripleta RGB (valores que van de 0 a 255). meroColor es el color
asignado de acuerdo a la siguiente ecuacin:


As, umeroColor identifica cada imagen dentro de la coleccin con un solo color.

Finalmente, ombreImagen es el nombre de la imagen procesada dentro del disco duro. Cabe sealar que las
imgenes no tienen que estar numeradas como se ve en el fragmento del archivo de ndice.


Algoritmo de bsqueda y seleccin

Una vez teniendo las imgenes de la coleccin procesadas, el algoritmo que usa el fotomorsaico es
verdaderamente sencillo:

1. Define una mtrica. Se puede tomar alguna de las tres consideradas (Lineal, Euclidiana, Riemersma)
pero una sola a la vez.
2. Se cuadricula la imagen fuente en subregiones de tamao constante. El tamao de cada regin puede
ser definido por el usuario previamente.
3. Se lee cada subregin. Se calcula su valor (color) promedio y se busca en el archivo de ndice
(imagen.idx) la imagen que tenga la menor diferencia de color. Dependiendo de la cantidad de
imgenes que hay en la coleccin este proceso puede ser ms o menos lento.
4. Se elige la imagen de menor diferencia y se coloca en la subregin analizada.
5. Se repite este proceso hasta terminar con la imagen fuente.


Obtencin de resultados

La imagen resultado, el fotomorsaico en s mismo, es la coleccin de imgenes seleccionadas por el algoritmo
correspondiente. El resultado, para ser visto inmediatamente, se gener originalmente como una pgina
HTML en donde se encuentra la lista de todas las imgenes seleccionadas y su ubicacin dentro del
fotomorsaico. La virtud de este enfoque es que los resultados del procesamiento pueden ser vistos y
analizados de manera inmediata. De igual manera, se pueden imprimir los fotomorsaicos resultantes sin
necesidad de escribir las rutinas correspondientes bajo la interfaz grfica de Windows, haciendo uso del
comando de impresin del navegador usado para ver los resultados finales del fotomorsaico (etscape,
FireFox o Internet Explorer), aunque no necesariamente sta es la mejor solucin porque no se tiene mucho
) 1 ( ) 256 ( ) 65536 ( + + = B G R r umeroColo
control sobre los parmetros de la impresin en s misma. Por otra parte, el usuario puede cambiar fcilmente
el tamao de los mosaicos para hacer ms grande o chica la imagen (esto se hace cuando el fotomorsaico se
genera, pero en el archivo HTML se puede cambiar con un Search&Replace global dentro de cualquier
procesador de textos. Igualmente, el crear una pgina HTML con la imagen resultante permite que sta pueda
ser fcilmente reproducible en cualquier otra parte en donde se tenga la coleccin de imgenes usadas.

Un fragmento del archivo de resultados como pgina en HTML puede verse a continuacin:

<table border=0 cellspacing=0 cellpadding=0>
<tr><td><nobr>img src=Im01419.jpg width=10 height=10><img
src=Im04133.jpg width=10 height=10><img src=Im01419.jpg
width=10 height=10><img src=Im04133.jpg width=10 height=10><img
src=Im01826.jpg width=10 height=10><img src=Im01876.jpg
width=10 height=10><img src=Im01826.jpg width=10 height=10><img
src=Im03895.jpg width=10
[]
height=10><img src=Im01798.jpg width=10 height=10><img
src=Im02251.jpg width=10 height=10><img src=Im02784.jpg
width=10 height=10><img src=Im02251.jpg width=10 height=10><img
src=Im01798.jpg width=10 height=10><img src=Im01419.jpg
width=10 height=10>nobr></td></tr>
</table>

Sin embargo, un segundo enfoque se implant. En este caso se gener un programa visualizador para los
fotomorsaicos. En este caso, el archivo de salida (los resultados, el fotomorsaico por s mismo), es un archivo
de texto que contiene el siguiente formato y que el programa visualizador usa para mostrar la imagen final:

Lnea 1 Cantidad de mosaicos en X
Lnea 2 Cantidad de mosaicos en Y
Linea 3 Tamao de cada subregin en X
Linea 4 Tamao de cada subregin en Y
Lnea 5 Tamao de cada mosaico en X
Linea 6 Tamao de cada mosaico en Y
Lnea 7 en adelante Nombre de las imgenes a colocar o el
comando <br> que indica que hay que
pasarse a la siguiente lnea.

De esta manera el fotomorsaico puede ser visto de inmediato y adems, puede guardarse como una imagen
JPEG directamente al disco. Aunque la aproximacin dio buenos resultados, hay limitaciones que Windows
impone, y es en lo referente a los tamaos finales de los mapas de bits (bitmaps). Una imagen de 4000x4000
pixeles, a 24 bits de resolucin en color simplemente no se puede acomodar en una mquina incluso con 1
gigabyte de RAM. As, si se desea utilizar el visualizador de fotomorsaicos en una imagen demasiado grande,
la nica solucin pertinente es cortarla y procesarla en pedazos. Esto sugiere dos situaciones:

Las mquinas personales an tienen serias limitaciones cuando hablamos de software que requiere
demasiados recursos grficos;
La necesidad de equipo ms sofisticado, quizs una estacin de trabajo Silicon Graphics y/o
Quizs las rutinas grficas para el manejo de jpg por parte de Delphi no contempla la creacin de
imgenes tan grandes, por lo que puede ser una dificultad de la librera grfica usada. No obstante,
estos argumentos son intuitivos y habra que elaborarlos a detalle. Lo que s es un hecho es que
aplicaciones grficas como la que nos ocupa esta discusin parecen requerir de mayor y mejor
hardware.

Cabe sealar que para crear el fotomorsaico, ya sea usando el archivo HTML o procesando la informacin a
travs del visualizador exige que las imgenes se encuentren en el mismo directorio que el archivo a procesar.
Esto se hizo como un esfuerzo para minimizar la informacin redundante (las trayectorias de los archivos
dentro del disco duro). Algo importante de sealar, adems, es que las imgenes de la coleccin se utilizan
nicamente cuando se quiere ver el resultado final. El procesamiento de las mismas por el algoritmo que crea
el fotomorsaico (con la mtrica definida), no requiere ms que el archivo de ndice, el cual contiene la
informacin sobre cada imagen de la coleccin.

En el apndice II puede encontrarse ms informacin sobre el visualizador.

Discusin sobre las mtricas y del por qu funcionan o no

Las mtricas definidas parten de una concepcin muy simple pero que de alguna manera son lo
suficientemente aceptables para funcionar. Para entender por qu ciertas mtricas son adecuadas y otras no,
considrese la figura 4 (ver ms arriba). Aqu se plantea con toda claridad la definicin de un rostro a travs
de grandes rectngulos de colores slidos. Si observamos con detenimiento esta imagen, veremos que los
rectngulos de colores slidos, vistos a la lejana muestran la imagen de Abraham Lincoln. Esto es la clave
que define la mtrica. Si consideramos que una subregin (un rectngulo en el cuadro de Dal), puede ser
tratado como un mosaico de un color slido, basta con hallar, dentro de la coleccin de imgenes, uno que se
acerque a ese color, porque a la distancia el ojo humano no podr discernir si se trata de un color slido o una
imagen particular cuyo promedio de color se parece o es casi igual a la regin observada.

Curiosamente las mtricas, tanto la euclidiana como la de Riemersma permiten esta comparacin
minimizando la distancia definida entre la subregin analizada de la imagen fuente contra todas y cada una de
las imgenes en la coleccin preprocesada. A pesar de su simpleza funcionan bastante bien, porque en ambos
casos se toman los valores RGB de cada imagen, aunque sea el promedio final de color.

Tmese, en cambio, la distancia lineal. En su mejor posibilidad hallamos que solamente da un contorno de la
imagen analizada. Por qu? Lo que pasa es lo siguiente: si tomamos los componentes R, G y B y usamos la
ecuacin:

Encontramos que ms de una tripleta puede dar valores muy cercanos. Por ejemplo, la tripleta RGB (255,0,1)
y la tripleta RGB(255,1,0) difieren por la unidad pero son dos colores diferentes sin duda. Esto hace que esta
mtrica sea muy deficiente porque no puede reconocer estas diferencias, que aunque minsculas son notables.

De ah que las mtricas euclidiana y Riemersmana sean las ms favorables pues consideran los pesos
especficos de los valores RGB.


Software de depuracin incluido

Uno de los primeros problemas enfrentados en la generacin de fotomorsaicos fue seguir al software para
saber cmo estaba seleccionando los mosaicos de acuerdo a la regin analizada. Se incluy en el programa de
generacin original una serie de rutinas que permiten ver el trabajo que est ejecutando el sistema aunque para
ello haya tenido que reducirse la velocidad de procesamiento. Indudablemente esta ayuda permite analizar por
simple inspeccin visual si el mosaico seleccionado tiene sentido o no. La depuracin puede encenderse o
apagarse incluso a la mitad de la generacin de un fotomorsaico.


Descripcin completa de la solucin

Para poder comparar los resultados obtenidos debemos definir diferentes parmetros visuales, los cuales son,
a saber:

1. Cunto se acerca el fotomorsaico creado a la imagen real cuando la primera se ve a cierta distancia
2. Cunto se acerca el fotomorsaico creado contra el equivalente realizado por Silvers. (para esto ltimo hay
que procesar imgenes que Silvers ya haya procesado).
) 1 ( ) 256 ( ) 65536 ( + + = B G R L
Resultados obtenidos

Utilizando el primer criterio, es decir, cunto se acerca el fotomorsaico creado a la imagen real cuando la
primera se ve a cierta distancia. En este ejemplo se tomaron subregiones de 10x10 pixeles, con 5544 imgenes
en la coleccin y permitiendo la repeticin de los mosaicos (vase ms adelante la discusin sobre el permitir
o no la repeticin de mosaicos en la misma imagen). La generacin de cada fotoMORSAico llev alrededor
de 2 minutos. Cada fotomorsaico resultado se proces con estos mismos parmetros y solamente cambiando
la mtrica. La figura 12A muestra la fotografa fuente (la imagen a procesar). La imagen 12B muestra el
procesamiento del fotomorsaico usando la mtrica lineal. La imagen 12C muestra el procesamiento del
fotomorsaico usando la mtrica euclidiana. Finalmente la imagen 12D
ensea el procesamiento de la imagen usando la mtrica Riemersma.


Figura 12 A Figura 12 B (lineal)

Figura 12 C (Euclidiana) Figura 12 D (Riemersma)

Ntese como las figuras 12C y 12D son las que ms se acercan a la original. Evidentemente la transformacin
lineal es muy pobre.

Los resultados obtenidos utilizando el segundo criterio, es decir, procesando una imagen conocida para
compararla contra los que genera Silvers no es un proceso justo porque Silvers hace blending, es decir,
fusiona la imagen original contra el fotomosaico en un porcentaje que puede ir de 5% a 50% entre ambas
imgenes. As entonces, en el blending cambia el color original de las imgenes en la coleccin o les agrega
sombra a la que quiere que corresponda. Por eso sus resultados se ven tan sorprendentes. En cierta medida
hace trampa para decirlo de alguna manera. Por ejemplo, la siguiente imagen muestra uno de los
fotomorsaicos de Silvers (figura 13). Ntese en el acercamiento del sombrero cmo el autor mejor la sombra
para que el contorno quedara mejor delimitado. Esto no es casual. Robert Silvers entiende que el fotomorsaico
as queda an mejor a la vista aunque es un procedimiento maoso y no exento de dificultades tcnicas. El
blending es un algoritmo muy simple de disear (el cual puede verse en otro de los captulos dedicados a ;las
grficas).


Figura 13

(detalle del sombrero de la figura 13)
Figura 14

Otra imagen que muestra esta tcnica de Silvers es la imagen que hizo de Bill Gates para su cumpleaos
nmero 40. La foto est armada con imgenes de billetes de diferentes pases. Un acercamiento a la boca
(labio superior) muestra como Silvers manipula los mosaicos a conveniencia (tales billetes aparecen marcados
en el recuadro azul).



Figura 15

Indudablemente el truco es interesante pero le quita cierto purismo al fotomorsaico. Como en todo, hay
corrientes a favor y en contra. Sin embargo ste es un tema que se sale de la discusin original aunque se
volver a abordar ms adelante.

As entonces, en principio la solucin completa implica realizar un trabajo de blending sobre las imgenes de
los fotomorsaicos tomando como base cada subregin original y aplicando la sombra o el contraste adecuado
y combinarlo con el mosaico seleccionado.


Cantidad y calidad de la coleccin de imgenes

Escribir un software para generar fotomorsaicos no necesariamente es una labor difcil. Sin embargo, una
parte medular en el desarrollo de software de esta naturaleza es la coleccin (o base de datos) de imgenes
que se tienen para generar los fotomorsaicos. Una coleccin debe contener, si es que no se va a hacer uso de
blending, de alrededor de 5500 imgenes, las cuales se deben, en la medida de lo posible, cubrir en promedio
de manera pareja todo el espectro de colores. De esta manera se garantiza que siempre habr un mosaico que
sustituya convenientemente alguna regin sin importar el color. Igualmente, el sistema puede trabajar creando
un archivo que indique los mosaicos que se ponen y las diferencias de color halladas entre la regin analizada
y el mosaico seleccionado. Esta es otra rutina que permite quizs en una versin mejorada de la que hoy se
tiene, la posibilidad de manejar el fotomorsaico generado, tal y como hace Silvers (ver la entrevista a Silvers
en los apndices).

En resumen, es tan importante el programa generador de mosaicos y las mtricas usadas como la cantidad de
posibles imgenes y los colores que stas pueden estar representando.


Estadsticas de la coleccin de imgenes

Para que un fotomorsaico tenga un resultado aceptable se necesita que la coleccin de imgenes contenga la
mayora de los colores necesarios. Si estamos hablando de que el modelo RGB permite 16 millones de
colores, al menos se requeriran 16 millones de imgenes (una por cada color), para llenar el espectro
completo. Sin embargo, como mantener una base de millones de imgenes es algo irrealizable en las
computadoras personales actuales, hay que conformarse con la coleccin de fotos que se disponga. La
pregunta es entonces cmo saber si mi base de datos, mi coleccin de imgenes, es adecuada? Para esto se
escribi un pequeo programa que lee el archivo de ndice y genera una grfica con las regiones de color
definidas a grosso modo, es decir, dando solamente un espectro genrico de 16 colores. Este elemental
programa estadstico permite ver qu tipo de imgenes necesitamos en lo que se refiere a color.
Montaje ptimo

Dada una coleccin de imgenes y una imagen fuente se tiene la siguiente informacin: La coleccin consiste
de t imgenes, las cuales se colocarn en las posiciones m de la imagen fuente. Es obvio que existe al menos
una solucin a este problema que es mejor o igual de buena que las dems soluciones. Puede incluso haber
ms de una solucin. Sin considerar restricciones extras podemos pensar en que el mosaico correcto a
seleccionar es aquel que tiene la menor distancia con respecto al rea seleccionada en lo que se refiere a
colores RGB. El mejor fotomorsaico ser aquel que tenga en suma la mnima distancia con respecto a las
subregiones originales. Sin embargo, la dificultad aqu se reduce a entender cul es la mejor mtrica a
considerar, problema abierto por el momento.


Interfaz con la WWW

Una interesante propuesta es generar una interfaz de los fotoMorsaicos para la World Wide Web de Internet
(WWW). Para esto, se necesita lo siguiente:

Un ISP (Internet Service Provider) que d hosting al sistema de fotoMorsaicos
Un dominio especfico para mantener las pginas WWW que se requieran
Una interfaz CGI (Common Gateway Interface) para ligar el software fotoMorsaico con la red
Resultados que el usuario pueda, a travs de la pgina, ver directamente (y en todo caso, salvar en su
computadora)

Para esto se consiguieron los servicios de InterComputers, quien cual nos prove gratuitamente del hosting de
las pginas web y el servicio de contratacin del dominio, en este caso www.la-morsa.com

La interfaz CGI fue creada por Mauricio Fragoso, el cual permite generar va Internet fotoMorsaicos de
prueba de manera que los visitantes puedan subir las imgenes y ejecutar el software que entrega como
salida una imagen jpeg que puede verse directamente e incluso bajarse a la mquina del usuario.

Se escribieron entonces los mismos programas de los que ya se ha hecho referencia pero los cuales reciben
parmetros de entrada y salida. De esta manera, el proceso es automtico y adems, debido a que no se
requiere de ninguna interaccin con el usuario, los resultados se generan de manera muy rpida. Tpicamente
una imagen que en el programa original de fotoMorsaicos lleva un minuto y medio se reduce a 30 segundos
aproximadamente.

Los fotoMorsaicos generados bajo la pgina web es una muestra del resultado que puede obtenerse con el
programa original. Debido a las limitaciones de la WWW, en particular el ancho de banda, resulta poco
prctico generar un fotoMorsaico de gran tamao (tpicamente entre 3 y 16 megabytes). Simplemente el
tiempo para bajar dicha imagen resultante puede ser enorme. Consecuentemente, se tom la decisin de
generar fotoMorsaicos con imgenes reducidas, que al ser ampliadas pierden resolucin, pero que en trminos
de muestra es suficiente para evaluar la posibilidad de este sistema. As entonces, las imgenes de la
biblioteca son las mismas que se usaron para generar los morsaicos ya descritos, pero reducidas a 50x50
pixeles. El tiempo de carga de cada imagen, para la creacin de la imagen final jpeg es de esta manera mucho
ms rpida.


Casos de prueba

El generador de fotomorsaicos se ha aplicado a diversas imgenes prueba. Los resultados con la imagen de
Ilse Olivo(imagen 12) muestran las tres mtricas usadas. No obstante, es importante analizar los posibles
resultados con otras imgenes. He aqu una prueba con una imagen de la modelo Sofa Vergara usando
tambin las tres mtricas.

Otro ejemplo de prueba con la imagen de Paulina Lpez Noriega que amablemente se prest a colaborar en
este desarrollo:
En todos los casos se gener un fotomorsaico con mosaicos de regiones de 10x10 pixeles y con una base de
imgenes de 5544. Todas las imgenes de la coleccin estn en formato JPEG y la mayora son de 960x1200
pixeles, aunque hay de otras escalas.

Tamaos de las imgenes procesadas:

1. Ilse Olivo 458 x 588 (Figura 12)
2. Sofa Vergara 460 x 554 (Figura 16)

Al igual que los resultados de la imagen (1), pondremos aqu los resultados faltantes como casos prueba:

(2) Sofa Vergara


Imagen original Mtrica lineal

Mtrica euclidiana Mtrica Riemersma

Figura 16

Ntese que en todos los casos hay una prdida de precisin con respecto a la imagen original. Esto por
supuesto es natural considerando que en los trminos matemticos ms simples, estamos hablando de una
funcin no biyectiva (es decir, no es uno a uno y no hay manera de reconstruir la imagen original a partir de la
imagen procesada).





Blending

El truco para mejorar las imgenes procesadas como fotomorsaico es el agregar lo que se denomina
blending. Este mtodo consiste en agregar a cada regin del fotomorsaico creado parte de los colores
originales de la regin que estamos procesando. Algo as como superponer la imagen original sobre la imagen
procesada. Un ejemplo de ello lo tenemos en la siguiente imagen de Ilse:


Figura 17

El efecto final es mucho ms preciso, pero no deja de perder cierto purismo con respecto a la idea original del
fotomorsaico. Sin embargo, existe otra alternativa, la cual consiste en pre-procesar la imagen de manera que
se pueda manipular el brillo y contraste de la misma (usando photoshop o retriever, por ejemplo), evitando as
la necesidad de hacer blending sobre la imagen. El siguiente ejemplo muestra una foto preprocesada y su
respectivo fotomorsaico.


Figura 19
(Mtrica Riemersma sin repeticin contnua)
Puede verse las mejoras en el fotomorsaico resultante.

Conclusiones

La generacin de fotomorsaicos a color es un ejercicio de programacin muy interesante pues se involucran
diferentes factores que todo programador debe tener en mente: espacio en disco y velocidad de proceso.
Igualmente, el hallar las ecuaciones mnimas para comprender el uso de mtricas y la relacin de las mismas
con el sistema visual humano son de inters terico y acadmico de cierta relevancia.

Por otra parte, es claro que la generacin de fotomorsaicos debe poderse comparar contra otros programas
comerciales e incluso, ver las posibilidades de precisamente comercializar esta idea. En particular se observa
que la mayora de los sistemas comerciales para PC son pobres y muchos de ellos simplemente usan blending
como parte fundamental de sus algoritmos, sin importarles mucho el criterio de seleccin (caso tpico en
Lview Poster cuyo autor es Leonardo Loureiro (comercializado por MMedia Research Corp.,
http://www.lview.com ).

Es claro que el preprocesamiento de las imgenes a usar para mejorar el contraste y brillo de las imgenes es
importante y puede dar una mejora significativa a los fotomorsaicos sin necesidad de utilizar tcnicas como la
de blending, que le quita cierto mrito purista.

Por lo que respecta a las cuestiones de inters meramente acadmico puede decirse que los algoritmos para
este tipo de sistemas son relativamente sencillos pero que si se desea un proceso de seleccin mucho ms
preciso se requiere de hacer anlisis mucho ms detallado, como por ejemplo un estudio ms fino sobre
procesamiento digital, sntesis de textura, segmentacin, y discriminacin de imgenes (ver ovel Statistical
Multiresolution Techniques for Image Synthesis, Discrimination, and Recognition (1997); J.S. De Bonet; o
tambin, A on-parametric Multi-Scale Statistical Model for atural Images (1997), J. S. De Bonet and P.
Viola; Advances in Neural Information Processing 1997, y Structure Driven Image Database Retrieval, de
los mismos autores y la misma publicacin. Quizs este ltimo trabajo sea el que lleve la lnea directriz en el
algoritmo de bsqueda y seleccin. Ver http://www.ai.mit.edu/~jsd/Research/Publications ).


Referencias/bibliografa

(1) Recognition of Faces; Leon Harmon, Scientific American, ovember 1973.
(2) Generating Photomosaics: An Empirical Study; icolas Tran, ACM Communications 1998.
(3) Linux Image Montage Project (LIMP); Jordan Husney, http://linux.remotepoint.com
(4) Juggle, a JAVA Photomontage program; Michael Troebs, October 1999, http://www.stud.uni-
hannover.de/~michael/juggle
(5) Colour Metric; Triadmer Riemersma, ITB CompuPhases, 1997-1999, The etherlands,
http://www.compuphase.com.cmetric.htm
(6) Fast Multiresolution Image Querying; Michael; Castelle,
http://www.cs.washington.edu/research/projects/grail2/www/projects/query
(7) ovel Statistical Multiresolution Techniques for Image Synthesis, Discrimination, and Recognition; A
on-parametric Multi-Scale Statistical Model for atural Images (1997), Structure Driven Image
Database Retrieval, J. S. De Bonet y P. Viola; http://www.ai.mit.edu/~jsd/Research/Publications ).

Inteligencia artificial

Conjugacin de verbos regulares


El trmino inteligencia artificial me parece un trmino muy mal elegido (acuado por Marvin Misnky, a
todo esto), porque se da a malas interpretaciones. Para empezar, qu es la inteligencia? Cmo medirla
realmente? Vaya, se puede medir eso que es tan elusivo y que en principio nos diferencia de los dems
animales?

Es claro que hay eventos que revelan la inteligencia de los seres humanos. Conducir un auto, jugar al ajedrez,
resolver incluso sudokus implica cierto nivel de inteligencia. Y s, podemos describir lo que consideramos
inteligente, pero es ms difcil decidir la medida de dicha inteligencia. Por ejemplo, el lenguaje de los seres
humanos describe en cierta medida una capacidad que resulta considerarse inteligente. El cerebro genera a
travs de ideas que se representan por sonidos especficos, expresamos lo que pensamos. Es ms, pensamos
con un lenguaje. Dentro de la cabeza de las personas los razonamientos se hacen en palabras, en la mente, en
silencio, pero con un lenguaje, sin lugar a dudas.

Por ello, el anlisis de los lenguajes humanos es tan importante, pues ah est mucho de lo que somos y
hacemos. El lenguaje tiene una estructura muy bien definida, aparentemente, pero de pronto nos encontramos
con excepciones a las reglas conocidas o bien, ambigedades que nos permiten decir, en una misma frase dos
cosas diferentes. Por ejemplo: veo a esa mujer con un telescopio. Qu estoy diciendo? Qu yo veo a una
mujer a travs de un telescopio o bien, que veo a una mujer que tiene un telescopio? La ambigedad est
presente y con esa simple oracin no podemos llegar a ninguna conclusin sobre quin tiene el telescopio, yo
o la mujer en cuestin.

El lenguaje habla entonces de lo sofisticado que puede ser el cerebro humano, que a travs de ste compone
las ms extraordinarias ideas. Pensemos, por ejemplo, en las matemticas o en la fsica. Hay conceptos que
incluso es difcil de expresar con palabras, pero que su representacin matemtica es poco menos que exacta.
En ese sentido los lenguajes son un medio fascinante para entender ms qu nos hace inteligentes, amn de
que gracias al lenguaje, particularmente el escrito, el hombre ha podido describir y registrar su historia a lo
largo de la historia.

As pues, pensando en estas cosas, pens si sera complicado escribir un programa que pudiese conjugar los
verbos en espaol. Por supuesto que tenemos verbos irregulares, lo cual complica la situacin. Decid
entonces tomar solamente los regulares y hacer un programa en prolog que pueda generar sus posibles
conjugaciones. La intencin de esto era entonces generar la cantidad de diferentes palabras (las
conjugaciones), para cada verbo e incorporarlas a un diccionario de verbos conjugados, todo ello para mi
proyecto del corrector ortogrfico inteligente.

Encontr que hay 51 diferentes conjugaciones de los verbos regulares (con terminaciones ar, er, e ir). El
programa en prolog sali entonces en una media hora, lo que demuestra que con la herramienta adecuada, la
programacin se vuelve incluso ms sencilla:


/* conjugacin de los verbos regulares */

domains
lista = string *

predicates
pide_verbo
member(symbol, lista)
encuentra_sufijo(string, string, integer)
encuentra_prefijo(integer, string, string)
toma_elemento(lista,string)
conjuga(symbol, string, string)

goal
clearwindow,pide_verbo.

clauses

toma_elemento([],_):- nl,!.
toma_elemento([Head|Tail],Prefijo):-
write(Prefijo,Head),nl,
toma_elemento(Tail,Prefijo).

pide_verbo:-
write(Dame un verbo regular: ),
readln(Verbo),
str_len(Verbo,LongVerbo),
encuentra_sufijo(Verbo,Sufijo2,2),
NumPref=LongVerbo-2,
encuentra_prefijo(NumPref,Verbo,Prefijo),
conjuga(presente,Prefijo,Sufijo2),
readchar(_),
conjuga(preterito,Prefijo,Sufijo2),
readchar(_),
conjuga(futuro,Prefijo,Sufijo2),
readchar(_),
conjuga(copreterito,Prefijo,Sufijo2),
readchar(_),
conjuga(pospreterito,Prefijo,Sufijo2),
readchar(_),
conjuga(gerundio,Prefijo,Sufijo2),
readchar(_),
conjuga(participio,Prefijo,Sufijo2),
readchar(_),
conjuga(otras,Prefijo,Sufijo2),
readchar(_),
!,
clearwindow,
pide_verbo.
pide_verbo.

encuentra_prefijo(Numero,Palabra,Prefijo):-
frontstr(Numero,Palabra,Prefijo,_).
encuentra_prefijo(_,_,).

conjuga(presente,Prefijo,ar):-
toma_elemento([o,as,a,amos,ais,an],Prefijo).

conjuga(preterito,Prefijo,ar):-
toma_elemento([astes,,amos,asteis,aron],Prefijo).

conjuga(futuro,Prefijo,ar):-
toma_elemento([ar,ars,ar,aremos,areis,arn],Prefijo).

conjuga(copreterito,Prefijo,ar):-
toma_elemento([aba,abas,aba,bamos,abais,aban],Prefijo).

conjuga(pospreterito,Prefijo,ar):-
toma_elemento([ara,aras,ara,aramos,arais,aran],Prefijo).

conjuga(gerundio,Prefijo,ar):-
toma_elemento([ando],Prefijo).

conjuga(participio,Prefijo,ar):-
toma_elemento([ado],Prefijo).

conjuga(otras,Prefijo,ar):-
toma_elemento([e,es,e,emos,is,en,ara,aras,ara,ramos,arais,aran,
ase,ases,ase,semos,aseis,asen],Prefijo).

conjuga(presente,Prefijo,er):-
toma_elemento([o,es,e,emos,is,en],Prefijo).

conjuga(preterito,Prefijo,er):-
toma_elemento([,iste,i,imos,isteis,ieron],Prefijo).

conjuga(futuro,Prefijo,er):-
toma_elemento([er,ers,er,eremos,eris,ern],Prefijo).

conjuga(copreterito,Prefijo,er):-
toma_elemento([a,as,a,amos,ais,an],Prefijo).

conjuga(pospreterito,Prefijo,er):-
toma_elemento([era,eras,era,eramos,erais,eran],Prefijo).

conjuga(gerundio,Prefijo,er):-
toma_elemento([iendo],Prefijo).

conjuga(participio,Prefijo,er):-
toma_elemento([ido],Prefijo).

conjuga(otras,Prefijo,er):-
toma_elemento([a,as,a,amos,
as,an,iera,ieras,iera,iramos,ierais,ieran,
iese,ieses,iese,isemos,ieseis,iesen],Prefijo).


conjuga(presente,Prefijo,ir):-
toma_elemento([o,es,e,imos,s,en],Prefijo).

conjuga(preterito,Prefijo,ir):-
toma_elemento([,iste,i,imos,isteis,ieron],Prefijo).

conjuga(futuro,Prefijo,ir):-
toma_elemento([ir,irs,ir,iremos,iris,irn],Prefijo).

conjuga(copreterito,Prefijo,ir):-
toma_elemento([a,as,a,amos,ais,an],Prefijo).

conjuga(pospreterito,Prefijo,ir):-
toma_elemento([ira,iras,ira,iramos,irais,iran],Prefijo).

conjuga(gerundio,Prefijo,ir):-
toma_elemento([iendo],Prefijo).

conjuga(participio,Prefijo,ir):-
toma_elemento([ido],Prefijo).

conjuga(otras,Prefijo,ir):-
toma_elemento([a,as,a,amos,is,an,iera,ieras,iera,iramos,ierais,

ieran,iese,ieses,iese,isemos,ieseis,iesen],Prefijo).



member(X,[X|_]).
member(X,[_|Y]):- member(X,Y).

/* busca la terminacin de una palabra: */
/* encuentra_sufijo(PalabraABuscar,SufijoAEncontrar,
CuantasLetrasEnElSufijo) */

encuentra_sufijo(Palabra, Sufijo, Cuantos):-
str_len(Palabra,Longitud),
Longitud >= (Cuantos+1),
PosInicial = Longitud-Cuantos,
frontstr(PosInicial, Palabra, _, Sufijo).
encuentra_sufijo(_,,_).
Inteligencia artificial

Cuadrados mgicos


Existen todo gnero de herramientas de programacin en este mundo del cmputo personal. En Windows es
donde quizs hemos visto las mejores aplicaciones en este sentido. Las herramientas visuales son francamente
excepcionales y hay que ser objetivos: Linux an no cuenta con herramientas de un poder parecido. Sin
embargo, no todo est perdido. La empresa Borland, creadora de Delphi, C++Builder y Jbuilder ha sacado
Kylix (Delphi para Linux), el cual pretende incorporar esta estupenda herramienta en el mundo Linux.
Desafortunadamente, por el momento, la versin 3 de Kylix es menos poderosa que Delphi 3 para Windows,
pero esperemos que esto cambie en el futuro.

Pero claro est, las mejores herramientas de programacin tienen sentido slo si existen programadores que
puedan sacar jugo de las mismas. Para eso se necesita entrenar y capacitar a las siguientes generaciones que
finalmente, son quienes seguirn escribiendo los programas que en el futuro se necesiten. Y es claro algo: hay
que capacitar en la ciencia de la computacin y no meramente en la herramienta de programacin de moda.
Lo importante es que los principios fundamentales de la programacin (comunes a todos los lenguajes), se
conozcan y se difundan. As, cuando el programador necesite aplicarse en algn lenguaje particular, aunque le
parezca desconocido, a la larga notar estos elementos comunes y en un par de semanas podr escribir todo
gnero de aplicaciones.

Curiosamente, ciertos lenguajes de programacin han pasado desapercibidos hoy da. Tenemos a Prolog, que
en su momento fue la gran promesa del proyecto quinta generacin de los japoneses (actualmente cancelado),
el cual supona que el software moderno tendra los elementos ms importantes de la llamada inteligencia
artificial. Los japoneses intentaron crear toda una generacin de computadoras basadas en Prolog para que las
aplicaciones que corrieran tuviesen mucho ms inteligencia que las que actualmente conocemos.

El problema de Prolog, inventado en 1972 por Colmeraur, es que a pesar de sus grandes ventajas para cierto
tipo de aplicaciones es muy ineficiente para una buena cantidad de tareas que hacemos normalmente en la
computadora. Y no es que no pueda escribirse un buen editor de textos o una estupenda hoja de clculo en
Prolog, sino que no es el lenguaje ms indicado para ello.

Prolog se basa en inferencias lgicas. A manera de ejemplo, si me presentan a alguien que se llama Jorge
Flores y yo encuentro un parecido con un amigo mo llamado Luis Flores, quizs mi cerebro haga
automticamente una inferencia y me nazca preguntarle a Jorge: no tienes un hermano llamado Luis?. Ese
tipo de inferencias las puede hacer Prolog. La herramienta, a diferencia de los lenguajes imperativos (Pascal,
C++), prefiere describir el problema a programar el algoritmo (la receta de cocina, pues), que resuelva la
dificultad. Prolog resuelve todo a travs de un motor de inferencias, tambin reconocido como algoritmo de
Robinson (en honor al autor, que public por primera vez el mecanismo en 1968). De esta manera y
abreviando el asunto (quizs demasiado), en Prolog describimos el problema y el lenguaje nos da las
soluciones a travs de dos mecanismos: la recursin y el backtrack.

La recursin es simplemente llamarse a s mismo. En trminos de programacin significa que una rutina se
llame a s misma hasta que cierta condicin impida que se cicle eternamente. El backtrack es, para decirlo en
palabras simples, el regresar sobre nuestros pasos si resulta que la solucin hallada no cumple con nuestras
expectativas. Un ejemplo simple de backtrack puede verse en el recorrer un laberinto. Caminamos dentro de
ste hasta que topamos con pared. Si esto ocurre, entonces retrocedemos sobre nuestros pasos hasta encontrar
la primera bifurcacin posible. Seguimos este procedimiento hasta hallar la salida.

Como ejemplo consideremos la creacin de un cuadrado mgico de orden 3 (impar). Un cuadrado mgico es
una malla cuadriculada en donde la suma de las lneas verticales, horizontales y diagonales mayores
suman todas las misma cantidad. Hay cuadrados mgicos de orden par y de orden impar. Crear cuadrados
mgicos de orden impar es muy fcil siguiendo un algoritmo muy conocido. Sin embargo, aqu intentaremos
en lugar de describir este algoritmo de escribir un programa en Prolog que resuelva el problema y encuentre
todas las soluciones (en caso de haberlas). El cdigo que soluciona el problema de un cuadrado de 3x3.
Todo consiste en describir las condiciones iniciales y las de frontera. Luego entonces, le decimos a Prolog que
nos d las soluciones a travs de probar todas las posibilidades exhaustivamente. Otro detalle notable es que
el programa en Prolog ocupa muy poco espacio. Intente hacer esto en otro lenguaje y notar cmo crece su
cdigo. He aqu la versin en Turbo Prolog 2.0 de Borland:

/* Este programa hace un cuadrado mgico de 3x3 */
/* Utilizando como caracterstica principal el */
/* backtrack que viene integrado en Prolog. */
/* */
/* Dicho de otra manera, el programa no usa el */
/* algoritmo conocido para hallar los cuadrados */
/* mgicos de orden impar. En su lugar, describe */
/* las condiciones iniciales y de frontera que */
/* deben cubrirse en este tipo de cuadrados y */
/* entonces Prolog descubre todas las soluciones */
/* */
/* Program: La_Morsa */
/* Octubre 2000 */

predicates

numero(integer) /* los nmeros que pueden usarse */
ecuacion(integer,integer,integer,integer) /* descripcin de cada suma
*/
cuadrado_magico /* meta a resolver */

clauses

/* condiciones iniciales */
numero(1).
numero(2).
numero(3).
numero(4).
numero(5).
numero(6).
numero(7).
numero(8).
numero(9).

ecuacion(X,Y,Z,R) :- R = X + Y + Z. /* la suma siempre debe dar R */

cuadrado_magico :-
numero(A), numero(B), numero(C),
numero(D), numero(E), numero(F),
numero(G), numero(H), numero(I),
/* vienen las condiciones para los nmeros: */
/* no debe haber nmeros repetidos... */
/* condiciones de frontera, pues */
A<>B,A<>C,A<>D,A<>E,A<>F,A<>G,A<>H,A<>I,
B<>C,B<>D,B<>E,B<>F,B<>G,B<>H,B<>I,
C<>D,C<>E,C<>F,C<>G,C<>H,C<>I,
D<>E,D<>F,D<>G,D<>H,D<>I,
E<>F,E<>G,E<>H,E<>I,
F<>G,F<>H,F<>I,
G<>H,G<>I,
H<>I,
/* escribe en pantalla la combinacin de nmeros a probar */
write(A, ,B, ,C, ,D, ,E, ,F, ,G, ,H, ,I),nl,
/* condiciones necesarias para que sea cuadrado mgico */
ecuacion(A,B,C,R),
ecuacion(D,E,F,R),
ecuacion(G,H,I,R),
ecuacion(A,D,G,R),
ecuacion(B,E,H,R),
ecuacion(C,F,I,R),
ecuacion(A,E,I,R),
ecuacion(G,E,C,R),
nl,write(Solucin),nl,
write(A, ,B, ,C),nl,
write(D, ,E, ,F),nl,
write(G, ,H, ,I),nl,
write(Presiona cualquier tecla para continuar...),
readchar(_), /* presiona una tecla para continuar */
fail. /* dame todas las soluciones */

goal
cuadrado_magico. /*meta a resolver */


Si le incomoda o francamente le da flojera entender cmo es que el programa funciona, no se preocupe, corra
el ejecutable. Si est en Windows 9x en adelante encontrar que todo acontece en una ventana de DOS. Es
increble que tan pocas lneas de cdigo generen tanto procesamiento.
Inteligencia artficial

Corrector fontico


Todos los que usamos la computadora para escribir textos, utilizamos comnmente algn tipo de procesador
de palabras. Este mercado, sin duda fundamental en el cmputo personal, se ha desarrollado de manera
impresionante, a tal grado que algunas empresas venden sistemas completos que contienen todo lo que el
usuario puede necesitar: hoja de clculo, programa para presentacin de conferencias, procesador de textos,
bases de datos, etc. A esto se le ha denominado una suite de aplicaciones y las prestaciones de cada una de
ellas ha logrado su propio nicho de clientes. Sin embargo, es claro que la campaa meditica de algunas
compaas de software, o bien, el hecho de traer preinstalado en las computadoras en venta esas suites, hace
que muchos usuarios se conviertan en una especie de clientes cautivos.

se es quizs el caso de la Suite Office, de Microsoft, que sin duda es lder del mercado en este nicho
particular de aplicaciones y adems de las razones ya expuestas, es evidente que la calidad de sus productos lo
hacen ciertamente uno de los favoritos. Es decir, hay que reconocer que amn de la publicidad que la empresa
de las ventanas pueda hacer, es claro que sus productos realizan con bastante versatilidad las tareas
encomendadas.

Como sea, lo importante de un procesador de palabras no es nada ms que permita la escritura de
documentos, sino que adems, corrija los errores que los usuarios cometemos al escribir algn texto.
MsWord, por poner el programa ms popular en el mercado, tiene sus propias dificultades. Por ejemplo, hace
unos aos se descubri una cantidad de pifias bastante graves en el tesaurus de MsWord. Definiciones como
la de flojo, si mal no recuerdo, que aludan a los de ciertos pueblos latinoamericanos, solamente podan
explicarse por la xenofobia del creador de dicho archivo de definiciones. Microsoft contest a las crticas
indicando que un nuevo equipo de lingistas y gente profesional de la palabra, hara una revisin exhaustiva
de estos problemas para que no volvieran a ocurrir. Hasta donde s, las correcciones se habrn hecho, pues
nadie ms ha encontrado este tipo de errores despus de que fueron sealados.



Imagen 1
La pantalla principal del verificador fontico

Sin embargo, a veces los correctores integrados al procesador de palabras no funcionan correctamente.
Ilustremos el caso: uno escribe la palabra etsa, por decir algo, y el sistema no lo cambia por esta, ni se da
cuenta del error de dedo. Cmo lidiar con este tipo de errores? qu tipo de software podra atrapar estos
problemillas, simples errores de dedo? Pues bien, hace unos aos, para ser precisos, en 1988, Enricco
Wizard, un buen colega y mejor amigo, que muri hace un par de aos, discuta conmigo acerca de esta
dificultad. Despus de un par de horas de someter al ring de las ideas los diferentes aspectos del problema,
Enricco dio con una solucin simptica: se le ocurri hallar todas las parejas de letras posibles en las palabras
en espaol y entonces comparar contra esa lista de dos letras contra cada palabra y as ver si haba errores de
dedo. As, se escribi una primera versin de lo que Wizard llam el turbo verificador (pues estaba escrito
en Turbo Pascal 5.5). El programa trabajaba realmente bien y era muy, pero muy rpido. Hoy, casi 20 aos
despus, decid pasar este esfuerzo a Windows. Tom el cdigo fuente que Enricco escribi, lo modifiqu de
acuerdo a la herramienta que uso actualmente (Delphi) y de nuevo, note que el sistema corre rpido y que
adems, hace la tarea fenomenalmente bien.

Desde luego que el mrito principal de este esfuerzo de software es de Enricco Wizard, que ya no est entre
nosotros, pero que ha dejado en el tintero algunas ideas que han sobrepasado, sin duda, la prueba del tiempo.

Inteligencia artificial

Lapsus: un corrector ortogrfico inteligente


Una de las principales tareas que las computadoras personales realizan a diario es la edicin e impresin de
textos, cartas, memoranda y en general, material escrito. Debido a esto, se han desarrollado mltiples editores
y procesadores de palabras. Sin embargo, todo el material escrito que se alimenta a una computadora debe ser
en muchos casos revisado y corregido antes de ser impreso. En trminos generales, la correccin de los textos
se realiza de manera manual, esto es, mediante la inspeccin visual del texto y en algunos casos, con ayuda de
diccionarios.

El problema de revisar y corregir textos mediante programas de computadora es un problema ya aejo. En la
actualidad existen muchos correctores de ortografa para el habla inglesa, sin embargo, para el idioma
castellano existen muy pocos, adems de que su costo es alto.

Lapsus es un sistema para verificar la ortografa de un texto escrito en espaol. Trabaja a diferencia de los
correctores tradicionales que funcionan mediante gigantescos diccionarios bajo las reglas de la ortografa
castellana, adems de tener la alternativa de usar diccionarios especficos, pues muchas palabras son
excepciones a las reglas gramaticales conocidas.

Evidentemente este proceso no es tan sencillo como parece. El idioma espaol contiene ms de 400,000
vocablos distintos (sin tomar en cuenta las conjugaciones de los verbos), lo cual hace que este procedimiento
sea, en algunos casos, sumamente complejo.

La intencin de Lapsus es permitir al usuario del sistema verificar sus textos automticamente con la
computadora, sealar los posibles errores que surjan en el momento de la verificacin de estos y tomar las
acciones correctivas que sean pertinentes.

Por otra parte, debe tomarse en cuenta que Lapsus no entiende el espaol, no puede comprender el significado
de las frases de un texto. Simplemente es un corrector de ortografa, no de estilo. Este tipo de programas y
sistemas an estn lejos de ser una realidad casera. Sin embargo, es posible que todo aquel que usa un
procesador de palabras pueda sacar provecho de la existencia de Lapsus. La verificacin de la ortografa de un
texto es en algunos casos una labor pesada y tediosa. Lapsus permite hacer este proceso mucho ms eficiente
y rpido para los seres humanos.

Lapsus en suma es un corrector de ortografa que consta de reglas gramaticales y uso de diccionarios
especficos. Debido a esto, es posible que en un texto se encuentren palabras que no estn incluidas en el
diccionario del usuario o se encuentren bajo las normas de las reglas gramaticales.



Imagen 1
El men principal de Lapsus


Lapsus puede crear varios archivos de acuerdo a los intereses del usuario: (1) Archivo de Diagnstico, (2)
Archivo de palabras no encontradas al revisar el texto en cuestin y (3) un diccionario auxiliar, creado por el
usuario. Este ltimo archivo puede ir creciendo cada vez que se verifica un texto o bien, cuando el usuario as
lo requiera, ya que dicho archivo no contiene ningn formato especial.

Lapsus funciona concurrentemente con Word para Windows. Esto quiere decir que el usuario puede pedir que
se haga la correccin de documentos SI necesidad de salir de Word para poder usar Lapsus. Esto, dicho en
otras palabras, significa que Word y Lapsus funcionan comunicndose el primero con el segundo, para que
ste ltimo, a su vez, haga las correcciones y entonces las comunique al documento en Word. De esta manera,
Lapsus puede considerarse, en cierta medida, un plug-in (un aadido) para Word. El programa permite
verificar un documento en Word de diversas maneras, habilitando o deshabilitando opciones para la
correccin.


Uso de reglas ortogrficas

A diferencia de otros correctores del espaol, que utilizan reglas ortogrficas para su funcionamiento. El
espaol, como todo lenguaje humano es cambiante. Palabras, expresiones y reglas que se usaban en el pasado
son obsoletas ahora y en vista de esta situacin, se decidi mantener las reglas ortogrficas en un archivo
especial, el cual es consultado cada vez que el sistema se ejecuta.

Este archivo se denomina Reglas.DB, y contiene alrededor de 260 reglas ortogrficas de uso comn en el
castellano. Las reglas pueden ser editadas con cualquier procesador de palabras (o editor de textos) que utilice
el formato ASCII sin caracteres de control o smbolos especiales. Por ejemplo, WordStar en su modo non-
document, PC-Write, otepad o incluso el editor auxiliar de Lapsus pueden servir para tal fin.



Imagen 2
El men para crear/modificar/eliminar reglas ortogrficas

Cada una de las reglas ocupa un rengln en el archivo Reglas.Db. As entonces, escribir una regla nueva
significa finalmente, agregar una lnea ms al archivo ya mencionado. Las reglas ortogrficas, para que
puedan ser entendidas por Lapsus, requieren de estar en un formato especfico para poder ser ledas por el
sistema. As entonces, puede ser que en un principio, el archivo Reglas.DB le parezca al usuario final difcil
de entender. No obstante la aparente complejidad del mismo, sus elementos esenciales son muy fciles de
comprender y usar.

A continuacin se describe el formato completo de las reglas, indicando la sintaxis que las reglas necesitan y
que -en rigor- deben ser escritas correctamente para que Lapsus pueda trabajar con las mismas:

Las reglas ortogrficas tienen tres posibles alternativas, las cuales pueden aplicar a:

prefijo (p) de la palabra analizada (parte inicial de la palabra en cuestin)
sufijo (s) de la palabra analizada (parte final de la palabra en cuestin)
subcadena (sb) de la palabra analizada (en cualquier subparte de la palabra en cuestin)

Las letras p, s, y sb corresponden respectivamente a prefijo, sufijo y subcadena, y estas letras sern
usadas para informarle a Lapsus en qu parte de la palabra se aplica la regla ortogrfica.
La regla entonces sigue el siguiente formato:

Pasemos al anlisis de esta estructura. En primer trmino aparece la palabra seguido de parntesis que abre.
Esto debe aparecer en minscula estrictamente. Acto seguido, pueden verse cuatro parmetros, a saber:

letra Indica la letra a la cual se aplica la regla. Por ejemplo, si la regla ortogrfica es sobre el uso
de la v, ste es el parmetro que se utiliza. (Vanse los ejemplos ms adelante).

palabra Indica la palabra que no cumple precisamente con la regla que est siendo definida, es decir,
muestra el ejemplo de la contraposicin a la regla ortogrfica misma.

clave es exactamente lo que indica el alcance de aplicacin de la regla (prefijo, sufijo o
subcadena). Utilcese solamente las siguientes palabras claves (entre doble comillas: p, s, sb).

lista Se refiere a la lista de palabras que son la excepcin a la regla en cuestin. Tales
palabras deben aparecer separadas por espacios entre s.


Algunos ejemplos pueden ser realmente ilustrativos. Considrese la siguiente regla:

Las palabras que empiezan con env se escriben siempre con v.

La regla en el archivo Reglas.DB se escribir entonces as:

v enb p

Lapsus reconoce la regla de la siguiente manera: Las excepciones a las palabras que empiezan con env nada
ms pueden ser aquellas que comienzan con enb, que en este caso no hay tales excepciones a la regla y el
rango de aplicacin de la misma es con todos los prefijos de las palabras.

La regla descrita se refiere a palabras en donde el rango de aplicacin corresponde al prefijo de las misma.
Ahora considrese la siguiente regla:

Todas las palabras que terminan con ave se escriben con v.

Esta regla puede expresarse en el lenguaje descrito de la siguiente forma:

v abe s rabe jarabe

La cual puede ser descrita de la siguiente manera: Las excepciones a las palabras que terminan en ave nada
ms pueden ser aquellas que terminan con abe, las cuales son, rabe y jarabe (y nada ms), y el rango de
aplicacin de la regla son los sufijos de las palabras.

Por ltimo, un ejemplo de una regla que se refiera a subcadenas puede ser la siguiente:

Las palabras que tienen dentro de ellas (en cualquier parte de la misma) las letras ilv se escriben siempre
con v.

La cual se traduce en el archivo de reglas de la siguiente forma:

v ilb sb bilbao

Y se interpreta de la siguiente manera: Las excepciones a las palabras que tienen como subpalabra ilv se
escriben siempre con v, excepto la palabra bilbao.


Sobre Lapsus

Lapsus es el primer programa de correccin del lenguaje castellano que utiliza tcnicas de la Inteligencia
Artificial (IA) para la verificacin ortogrfica. La primera versin (circa 1992) fue escrita totalmente en
prolog (turbo prolog versin 2.0) y adems de utilizar un diccionario con ms de 60,000 trminos (en donde
estn consideradas las palabras ms usadas del espaol), se inclua un anlisis de verificacin por reglas
ortogrficas.

La versin actual funciona a travs de la comunicacin entre procesos llamada OLE (Object Linking and
Embedded) y fue escrita usando Delphi 5.0 de Borland.

Para que Lapsus llegue a sus manos, han pasado ms de diez aos de investigacin en temas como anlisis
automtico de textos, verificacin y correccin a travs de computadoras, discusiones interminables sobre
cmo debe hacerse un programa de esta naturaleza, adems de una maestra en bases de datos inteligentes, en
la Universidad de Essex, Inglaterra, en el ao de 1988.

Inteligencia artificial

Creador de crucigramas


Una amiga que editaba una revista de negocios me pidi que hiciese una seccin de crucigramas, siempre y
cuando sta presentara nombres y trminos dedicados a las finanzas y al mundo de los negocios. Yo le dije
que lo hara sin dudarlo, pues a priori pensaba que ya en Internet ms de una persona habra encarado la
creacin de crucigramas a travs de la computadora.

Para mi sorpresa, encontr que el problema realmente no haba sido analizado cuidadosamente. Por un
momento pens que debera haber ya muchos programas que me permitieran crear la malla cuadriculada en
donde se pondrn las palabras, as como poner las casillas vetadas (las marcas negras), que separan las
palabras. Una vez hecho esto, imaginaba que le poda dar una lista de palabras y el sistema intentara
acomodarlas al mejor estilo de un crucigrama. Pues bien, nada de eso existe estrictamente. Por qu? Haba
que investigar el fenmeno.

La razn de esto es que la creacin de crucigramas necesita de diversos pasos, unos que son labores triviales
de la programacin, pero que en ltima instancia los pasos finales son prcticamente difciles de cumplir
adecuadamente. Crear un programa que dibuje la cuadrcula y me permita poner los cuadros negros es algo
sencillo, pero la generacin del crucigrama representa la gran dificultad. Imaginemos que tenemos las
palabras que queremos poner en el crucigrama. Es ms supongamos que tenemos palabras de ms, para que si
una no se puede poner en donde debe ponerse, podamos poner otra de la misma cantidad de letras, por
ejemplo.

Imaginemos el siguiente crucigrama elemental. Ntese que no es ni siquiera una cuadrcula con cierta
simetra. Nada de eso, pero para efectos ilustrativos es muy interesante. Tenemos cuatro palabras que
debemos acomodar en ese crucigrama. La palabra 1 es de 5 letras, la 2 es de 6 letras, la tercera es de 5 letras y
la cuarta es de 7 letras. Ahora supongamos que tenemos las siguientes palabras, las cuales podemos usar para
crear el crucigrama:

2
+---+
| |
+---+---+---+---+---+
1 | | | | | | 3
+---+---+---+---+---+---+
| | | |
+---+ +---+
| | | |
+---+---+---+---+---+---+---+
4 | | | | | | | |
+---+---+---+---+---+---+---+
| | | |
+---+ +---+
| |
+---+


Las palabras que puedo poner son estas: market, trees, monkey, simple, wise, vague, sea, yacht, ocean, foggy,
artista, realice, brave y quite. Estas pocas palabras son suficientes para trabajar en el programa demostrativo.
Cmo resolveremos el problema? Necesitamos poner lo siguiente: Una palabra de cinco letras con otra de
seis letras, en donde se intersecten en la tercera letra de la primera palabra con la segunda letra de la
segunda palabra; adems, requerimos una tercera palabra de siete letra y una cuarta de cinco letras, en
donde la interseccin de la segunda con la tercera palabra sea en la posicin cinco de la segunda palabra
con la tercera posicin de la tercera palabra; finalmente necesitamos que la interseccin entre la tercera y la
cuarta palabra se d en la posicin 5 de la tercera palabra con la posicin 3 de la cuarta palabra.

Esto significa que hablamos de restricciones entre las propias palabras y posiciones especficas en donde
deben coincidir las letras de ambas palabras en conflicto.

Cmo es que prolog resuelve el problema?

Para resolverlo con prolog, apelamos al backtrack, el cual significa regresar sobre sus propios pasos cuando el
sistema se encuentra en un callejn sin salida. El sistema funciona as: primero resuelve en la meta la primera
instruccin: hallar una palabra de 5 letras (M1). Una vez hecho esto, busca una palabra con 6 letras (M2).
Ahora intenta ver si la interseccin de M1 con M2 en la posicin 3 de M1 con la posicin 2 de M2 coinciden
en la letra que va ah, si eso pasa, entonces busca la siguiente meta a resolver, pero si esto falla, el sistema
regresa (hacia atrs, es decir hace backtrack), y busca una nueva palabra de seis letras e intenta de nuevo
satisfacer la interseccin de M1 con M2. Si falla, busca una nueva palabra de seis letras Y si ninguna de las
palabras que tiene de seis letras funciona, sorprendentemente para algunos, el sistema no dice: no se puede
resolver el crucigrama, sino que hace backtrack de nuevo y entonces busca una nueva palabra de cinco letras
y re-empieza todo el proceso descrito antes con la de seis letras.

Dicho en otras palabras, prolog hace un verdadero esfuerzo de procesamiento, que incluso para resolver este
simplsimo crucigrama, lleva cientos de miles de iteracciones a travs del backtrack.

Ahora bien, extrapolemos esto a un crucigrama de 10x10 casilleros, en donde la cuadrcula tiene un dibujo
incluso simtrico (esto es clsico de los crucigramas profesionales). Imaginemos entonces que no tenemos
una decena de palabras, sino unas miles. Si definimos todas las restricciones, cunto tiempo le llevar al
sistema hallar una solucin si es que la hay? No lo sabemos. El sistema es no decidible, es decir, no podemos
saber si hay una solucin o no al crucigrama que acabamos de dibujar para que el sistema nos ponga las
palabras adecuadas. La nica manera de saberlo es intentar generar todos los posibles crucigramas con esas
palabras (y con las restricciones definidas), para ver si existe semejante crucigrama o no.

El tema da para ms. Podr escribirse un programa que genere un crucigrama dadas ciertas palabras? qu
otras restricciones habra que poner para que por lo menos, un programa de esta naturaleza ayudase a los
creadores humanos en esta labor? Quizs ste es uno de esos programas que parecen simples pero que en el
fondo contienen un sinfn de problemas no del todo resolubles incluso a travs del cmputo.

Por cierto, sta es la solucin que entrega el sistema:

2
+---+
| M |
+---+---+---+---+---+
1 | B | R | A | V | E | 3
+---+---+---+---+---+---+
| R | | Q |
+---+ +---+
| K | | U |
+---+---+---+---+---+---+---+
4 | R | E | A | L | I | Z | E |
+---+---+---+---+---+---+---+
| T | | T |
+---+ +---+
| E |
+---+



/*************************************/
/* Crucigramas */
/* Por: La_Morsa */
/* Versin: 1.0 beta */
/* Fecha: Nov 4, 1995 */
/* */
/* */
/* programa basado en el que aparece */
/* en el libro: An Introduction to */
/* programming in Prolog, de Patrick */
/* Saint-Dizier, ed Springer-Verlag */
/* */
/*************************************/

domains
wordlist = char*

predicates
word(wordlist)
num_lets(integer,wordlist)
long(integer,wordlist)
intersect(wordlist,wordlist,integer,integer)
extract(wordlist,integer,char)
crisscross(wordlist,wordlist,wordlist,wordlist)

clauses

word(['m','a','r','k','e','t']).
word(['t','r','e','e','s']).
word(['m','o','n','k','e','y']).
word(['s','i','m','p','l','e']).
word(['w','i','s','e']).
word(['v','a','g','u','e']).
word(['s','e','a']).
word(['y','a','c','h','t']).
word(['o','c','e','a','n']).
word(['f','o','g','g','y']).
word(['a','r','t','i','s','t']).
word(['r','e','a','l','i','z','e']).
word(['b','r','a','v','e']).
word(['q','u','i','t','e']).

/* predicate num_lets(T,X1) is true if T */
/* is the number of letters in the word X1 */

num_lets(0,[]). /* el total de letras que tiene la palabra [] es 0 */
num_lets(T,[M1|M2]) :-
num_lets(T1,M2),
T = T1 + 1.

/* predicate long(T,M) is true if M has lenght T */

long(T,M) :-
word(M),
num_lets(T,M).

/* predicate intersect(C1,C2,N1,N2) extracts */
/* the letters in position N1 from the list C1 */
/* and the one in position N2 from the list C2. */
/* It then ask whether the two extracted */
/* letters are the same. This is expressed */
/* through the ocurrence of the same variable */
/* R in both calls to extract. */

intersect(C1,C2,N1,N2) :-
extract(C1,N1,R),
extract(C2,N2,R).

/* predicate extract(C,N,R) is true if R is the */
/* Nth letter in the list C of letter... */

extract([C1|C2],1,C1).
extract([C1|C2],N,R) :-
M=N-1,
extract(C2,M,R).

/* predicate crisscross is the main call. It */
/* selects words of the appropiate lenght for */
/* a given grid. The lenght of the words here */
/* is, respectively, 5, 6, 7, and 5. It places */
/* constrains on the words through predicate */
/* intersect... */

crisscross(M1,M2,M3,M4) :-
long(5,M1), long(6,M2),
intersect(M1,M2,3,2),
long(7,M3),
intersect(M2,M3,5,2),
long(5,M4),
intersect(M3,M4,5,3).

goal
crisscross(M1,M2,M3,M4),
write(M1),nl,
write(M2),nl,
write(M3),nl,
write(M4),nl.


Inteligencia Artificial

Engaando a la prueba de Turing


De acuerdo a la Wikipedia, se llama Prueba o Test de Turing al procedimiento desarrollado por Alan Turing
para corroborar la existencia de inteligencia en una mquina. Fue expuesto en 1950 en un artculo (Computing
machinery and intelligence) para la revista Mind, y sigue siendo uno de los mejores mtodos para los
defensores de la Inteligencia Artificial. Se fundamenta en la hiptesis positivista de que, si una mquina se
comporta en todos los aspectos como inteligente, entonces debe ser inteligente.

La prueba consiste en un desafo. Se supone un juez situado en una habitacin, y una mquina y un ser
humano en otras. El juez debe descubrir cul es el ser humano y cul es la mquina, estndoles a los dos
permitidos mentir al contestar por escrito las preguntas que el juez les hiciera. La tesis de Turing es que si
ambos jugadores eran suficientemente hbiles, el juez no podra distinguir quin era el ser humano y quin la
mquina. El lmite temporal que Turing puso para que una mquina consiga superar el test engaando durante
bastante tiempo a un buen interrogador, y no dejndole aclarar si se est dirigiendo a un ser humano o a una
mquina. Todava ninguna mquina puede pasar este examen en una experiencia con mtodo cientfico.

Existen, desde luego, muchas versiones de esta prueba pero el afn es siempre el mismo. Si las respuestas de
un programa de computadora es indiscernible de las respuestas que dara un ser humano, entonces estamos
ante al menos un ente inteligente. Ser posible engaar a la prueba de Turing? Enricco Wizard,
extraordinario programador, fallecido hace unos pocos aos, escribi un programa que hace precisamente
esto.

Imagine pues un programa verdaderamente inteligente, uno que pueda responder a cualquier pregunta en
espaol, en el lenguaje que naturalmente hablamos los seres humanos en nuestro pas. Alguno de mis cinco
lectores me dir que ningn programa realmente puede responder cualquier pregunta, porque para esto
necesitara de una amplia concepcin del mundo (y sera algo inteligente no?). Vaya, que simplemente
reconocer las preguntas en lenguaje natural sera ya un mrito ms que suficiente. Pero no hay que cerrarse
ante la posibilidad de imaginar un programa de estas caractersticas. Simplemente imagine que existe. Ahora,
hagamos una pregunta cualquiera: Quin es divina? por ejemplo. Si la respuesta es: Ilse, a lo mejor puedo
suponer que a sabiendas que el programa iba a interactuar conmigo, podran haber programado esta respuesta.
Qu tal preguntarle: Cunto vale mi computadora? Si el sistema me responde con: Muchos pesos,
entonces podr suponer que es una respuesta genrica. Pero sigamos. Tomemos un lpiz y preguntmosle a
nuestro hipottico programa: Qu tengo en la mano? Si la respuesta es: un lpiz, seguramente me
quedar sorprendido, porque no encontrar en primera instancia forma alguna para explicar dicha respuesta.

Wizard a partir de esto elabor su programa y el autor del mismo se demostr como un verdadero
observador de la conducta humana. Enricco cre el programa IQ, que posteriormente llamaron lisa, liza, ouija
electrnica, devil 666, entre otros nombres, el cual supuestamente es un sistema que, efectivamente, responde
cualquier pregunta, tal y como hemos explicado antes. El sistema trabaja considerando que hay un personaje,
denominado Liza, quien es la encargada de responder a las preguntas. Cada vez que se quiere preguntar al
sistema algo, hay que darle a Liza, de buenas maneras, por supuesto, la pregunta. Esto se hace escribiendo:
Liza, favor de responder a la siguiente pregunta: (al escribir los dos puntos, el sistema pasa a la siguiente
lnea en la pantalla). Ahora hacemos la pregunta que nos interese del tema que queramos, por ejemplo:
Ganarn los Pumas en esta ocasin? (Termine con signo de interrogacin). Despus de una breve pausa,
el sistema dir algo as: De acuerdo con mis estimaciones, los Pumas ganarn de nuevo. Por supuesto que
todo es un truco, un acto de magia, como el que ejecutan los profesionales de la ilusin y que nos sorprenden,
pues desafan todas las leyes conocidas.

Cmo trabaja? Muy fcil. Considere a su posible vctima y dgale que tiene un programa fascinante e
increblemente inteligente. Insista que el sistema puede responder prcticamente cualquier pregunta que se le
haga. Ejecute el programa IQ y dgale a su interlocutor que piense en alguna pregunta. Supongamos que dicha
pregunta es: Quin es el Presidente de Mxico?. Entonces escriba usted: .Caldern (empiece con un
punto). Note que cada vez que presiona alguna letra de lo que est realmente escribiendo, no aparece en
pantalla lo que uno debera ver, sino parte del mensaje: Liza, favor de responder... etc. Es decir, el
programa no hace eco en pantalla de lo que teclea uno, sino que siempre pone la frase: Liza, favor de...
etc. Obviamente el sistema est capturando la respuesta que el programa dar al usuario. Cuando termine de
escribir la respuesta elegida, escriba punto de nuevo (.), el cual es el terminador de la misma y entonces,
ahora s, complete la oracin que hay que poner cada vez que se le hace una pregunta a Liza (termine con dos
puntos (:)), y ahora, en la siguiente lnea, escriba la pregunta correspondiente. Despus de algunos segundos
Liza responder: Sin considerar ms datos, se trata de: Caldern.

Puede con esto impresionar a ms de uno, incluso a aquellos que son unos verdaderos expertos en las artes de
la programacin (me consta). Ahora bien, preguntmonos por qu el truco funciona. La verdad es que cuando
tecleamos, nadie observa qu teclas en particular estamos oprimiendo realmente. Otra cuestin es la velocidad
del tecleo, que hace an ms difcil detectar el engao (alguien ha tratado de ver la clave de un usuario
mirando el teclado cuando ste escribe su contrasea?). Finalmente, es claro que la posible vctima est atenta
a lo que aparece en pantalla y eso distrae la posibilidad de atender a lo que se escribe en el teclado.



Imagen 1
Liza para Windows

Tan fue un revuelo el programa de Enricco, que el dizque investigador de ovnis y fenmenos paranormales,
Jaime Maussn, fue engaando por un adolescente que haba modificado la versin original de Lisa y le haba
puesto frases satnicas para as crear un efecto ms dramtico. Maussn se la crey originalmente, hasta que
alguien le explic el truco de cmo funcionaba. Eso revela un dato por dems ya conocido: quien quiere creer
en algo seguramente lo creer sin considerar ninguna prueba en contra de lo que cree. Al televisivo
investigador le pasa eso contnuamente y por eso prcticamente todas sus investigaciones son finalmente
sesgadas por sus propias creencias. Es algo endmico, tanto a favor o en contra de cualquier hiptesis que se
plante la gente.

Cabe sealar que despus de la creacin de este programa, y a sabiendas que ms de una persona lo modific
editndolo con algn programa que manejaba el cdigo como texto (un editor hexadecimal, por ejemplo)
Enricco se dio a la tarea de hacer una versin para Windows y encript todos los mensajes para que fuese
difcil cambiarlos. De esta manera pretenda mantener sin alteraciones el software original.

Slo me resta una advertencia. Demuestre el programa por un corto tiempo, no se trata de hacer una sesin de
dos horas porque entonces s, tarde o temprano hallarn el truco usado. Limtese a hacer no ms de diez
preguntas y nunca deje el programa en la mquina en donde est haciendo la demostracin. Para aadir un
efecto ms dramtico, haga que el programa responda de pronto de manera errnea o muy vagamente (si
contesta siempre con certeza absoluta es ms difcil que le crean). Cuando le pidan una copia del sistema, diga
que no se lo puede pasar a nadie por las cuestiones del pirateo de software, que la BSA lo va a perseguir o
alguna excusa de esa naturaleza... Ah, algo ms, y esto es lo ms importante. Haga como los verdaderos
magos: nunca revele el truco usado.
Inteligencia Artificial

Creacin de sudokus


Hace tiempo una amiga me mostr un libro con cientos de problemas de Sudokus. Le dije que ya haba visto
ese tipo de acertijos pero que no entenda realmente por qu se estaban poniendo tan de moda. As, ella
tom el libro, lo abri en alguna de las pginas y me ense cmo se resolvan dichos problemas. Fue claro
que se trataba de un juego de lgica, en donde hay que asumir que en algunas casillas hay ciertos nmeros, lo
cual en ocasiones no resulta cierto, y entonces hay que asumir otros. Un error en una casilla puede llevar a
tener que cambiar todo lo que hemos asumido, y que pareca correcto, para tener que empezar de nuevo.
Analizando con cuidado empec a entender que el pasatiempo involucraba mucha lgica ms que habilidad
matemtica. Poco a poco descubr que los Sudokus pueden ser, sin duda, muy adictivos.

El objetivo de este juego es rellenar una cuadrcula de 99 celdas (81 casillas) dividida en subcuadrculas de
33 (tambin llamadas cajas o regiones) con las cifras del 1 al 9 partiendo de algunos nmeros ya
dispuestos en algunas de las celdas. Lo que importa es que sean nueve elementos diferenciados. En este
pasatiempo no se debe repetir ninguna cifra en una misma fila, columna o subcuadrcula. Un Sudoku est bien
planteado si la solucin es nica.

Realmente no es estrictamente necesario utilizar nmeros, sino que se pueden usar letras, formas o colores sin
alterar las reglas, pero se utilizan nmeros por comodidad, porque es ms fcil recordarlos. La cuadrcula ms
comn es de 9x9 con regiones de 33, pero tambin se utilizan otros tamaos. Adems, las regiones no tienen
por qu ser cuadradas, aunque generalmente lo son.


Historia

Este rompecabezas numrico pudo haberse originado en Nueva York en 1979. Entonces, la empresa Dell
Magazines public este juego, ideado por Howard Garns, bajo el nombre de Number Place (el lugar de los
nmeros).

Es muy probable que el Sudoku se crease a partir de los trabajos de Leonhard Euler, famoso matemtico suizo
del siglo XVIII. Dicho matemtico no cre el juego en s, sino que utiliz el sistema llamado del cuadrado
latino para realizar sus trabajos en la teora del clculo de probabilidades. Cabe sealar que el nombre de
Cuadrados Latinos se debe a que fue el propio Euler quin utiliz caracteres latinos como smbolos

Una solucin de un Sudoku correcta genera un cuadrado latino, el cual es una matriz de nn elementos, en la
que cada casilla est ocupada por uno de los n smbolos de tal modo que cada uno de ellos aparece
exactamente una vez en cada columna y en cada fila. Por ejemplo:

| a b c |
| b c a |
| c a b |

Un cuadrado latino se dice que est reducido (o normalizado o de forma estandarizada) si la primera fila y la
primera columna estn en orden natural. Por ejemplo, el primer cuadrado est reducido, porque la primera fila
y la primera columna son a, b, c. Evidentemente, es posible hacer un cuadrado latino permutando
(reordenando) las filas y las columnas.

Posteriormente, la editorial Nikoli lo export a Japn, publicndolo en el peridico Monthly Nikolist en abril
de 1984 bajo el ttulo Sji wa dokushin ni kagiru, que se puede traducir como los nmeros deben estar
solos. Fue Kaji Maki, presidente de Nikoli, quien le puso el nombre. Posteriormente, el nombre se abrevi a
Sdoku (s = nmero, doku = solo); ya que es prctica comn en japons tomar el primer kanji de palabras
compuestas para abreviarlas.

En 1986, Nikoli introdujo dos innovaciones que garantizaran la popularidad del rompecabezas: el nmero de
cifras que venan dadas estara restringida a un mximo de 30 y sera simtrico (es decir, las celdas con
cifras dadas estaran dispuestas de forma rotacionalmente simtrica). Esto no siempre se cumple en los
Sudokus actuales. En 1997 Wayne Gould prepar algunos Sudokus para el diario The Times, que los public
bastante ms tarde, en diciembre de 2004. Tres das despus, The Daily Mail public sus Sudokus con el
nombre codenumber. En 2005 muchos otros peridicos de todo el mundo empezaron a incluir Sudoku a diario
en sus pginas.

En el ao 2005 ven la luz pblica los primeros libros sobre Sudoku en espaol, por ejemplo, Los mejores
Sudokus, con 200 Sudokus agrupados en 4 niveles de dificultad, con una extensa descripcin de la historia
de este pasatiempo as como de sus reglas y un ejemplo que lleva de la mano, paso a paso, a la resolucin de
los mismos. A este primero le siguieron 3 volmenes ms, as como un libro sobre Kakuros, otro sobre
Cuadrados mgicos, y uno ms sobre el Cuboku, en donde algunos de estos son simples variaciones del
pasatiempo original.

En el ao 1997, el juez jubilado de Hong-Kong Wayne Gould, de 59 aos de edad, un neozelands, vio un
rompecabezas parcialmente completado en una librera japonesa. Durante unos 6 aos desarroll un programa
de computadora para producir rompecabezas rpidamente. Sabiendo que los peridicos del Reino Unido
tienen una larga tradicin en cuanto a la publicacin de crucigramas y otros rompecabezas, promovi el
Sudoku en The Times en Gran Bretaa, publicndolo el 12 de noviembre de 2004 (llamndolo Su Doku). Los
rompecabezas de Pappocom, empresa de software de Gould, se han impreso diariamente en el Times desde
entonces.

Nationwide News Pty Ltd comenz a publicar el rompecabezas en The Daily Telegraph de Sydney el 20 de
mayo de 2005; se imprimieron cinco rompecabezas con soluciones ese da. La gran popularidad alcanzada por
el Sudoku en los peridicos britnicos y ms adelante, en otras publicaciones internacionales ha hecho que lo
apodaran en los medios de comunicacin mundiales en 2005 como el rompecabezas con un crecimiento ms
rpido en el mundo, quizs comparable solamente con el cubo de Rubik, que tuviese una aceptacin mundial
vertiginosa en los aos ochentas y que gener no solamente ventas millonarias de dicho juguete, sino que
adems alcanz notoriedad por el enfoque cientfico (particularmente en las matemticas), para poder hallar
mtodos para solucionarlo de manera eficiente y satisfactoria.

Sin duda el sudoku es un buen ejercicio de programacin. La pregunta es simplemente cmo se pueden
generar este tipo de acertijos usando la computadora? qu programa hay que escribir? Aparentemente la
tarea no es sencilla, pero cuando pens en Prolog, el lenguaje de programacin diseado para la inteligencia
artificial, llegu a la conclusin que el programa poda escribirse en pocas lneas. He aqu el cdigo que
gener:



/* Generador de Sudokus */
/* Por La_Morsa */
/* Marzo 2010 */
/* Versin 1.0 */


delete(X, [X|T], T).

delete(X, [H|T], [H|S]):-
delete(X, T, S).

resultados(A,B,C,D,E,F,G,H,I) :-
write(A,B,C,D,E,F,G,H,I),nl.

/*permutaciones */
perm([], []).

perm([H|T], R):-
perm(T, X), delete(H, R, X).

suma(A,B,C,D,E,F,G,H,I,R) :-
A+B+C+D+E+F+G+H+I = R.

escribe(A,B,C,D,E,F,G,H,I) :-
write(A),
write(B),
write(C),
write(D),
write(E),
write(F),
write(G),
write(H),
write(I),
nl.

sudoku :-
/* hallamos primero las permutaciones
de los nueve renglones */
perm([1,2,3,4,5,6,7,8,9],[A1, A2, A3, A4, A5, A6, A7, A8, A9]),
perm([1,2,3,4,5,6,7,8,9],[B1, B2, B3, B4, B5, B6, B7, B8, B9]),
perm([1,2,3,4,5,6,7,8,9],[C1, C2, C3, C4, C5, C6, C7, C8, C9]),
perm([1,2,3,4,5,6,7,8,9],[D1, D2, D3, D4, D5, D6, D7, D8, D9]),
perm([1,2,3,4,5,6,7,8,9],[E1, E2, E3, E4, E5, E6, E7, E8, E9]),
perm([1,2,3,4,5,6,7,8,9],[F1, F2, F3, F4, F5, F6, F7, F8, F9]),
perm([1,2,3,4,5,6,7,8,9],[G1, G2, G3, G4, G5, G6, G7, G8, G9]),
perm([1,2,3,4,5,6,7,8,9],[H1, H2, H3, H4, H5, H6, H7, H8, H9]),
perm([1,2,3,4,5,6,7,8,9],[I1, I2, I3, I4, I5, I6, I7, I8, I9]),

/* ahora damos la restriccin:
la suma de cada columna debe dar 45 */
suma(A1,B1,C1,D1,E1,F1,G1,H1,I1, 45),
suma(A2,B2,C2,D2,E2,F2,G2,H2,I2, 45),
suma(A3,B3,C3,D3,E3,F3,G3,H3,I3, 45),
suma(A4,B4,C4,D4,E4,F4,G4,H4,I4, 45),
suma(A5,B5,C5,D5,E5,F5,G5,H5,I5, 45),
suma(A6,B6,C6,D6,E6,F6,G6,H6,I6, 45),
suma(A7,B7,C7,D7,E7,F7,G7,H7,I7, 45),
suma(A8,B8,C8,D8,E8,F8,G8,H8,I8, 45),
suma(A9,B9,C9,D9,E9,F9,G9,H9,I9, 45),

/* ponemos ahora la restriccin de las cajas:
cada caja debe sumar 45 */
suma(A1,A2,A3,B1,B2,B3,C1,C2,C3, 45),
suma(A4,A5,A6,B4,B5,B6,C4,C5,C6, 45),
suma(A7,A8,A9,B7,B8,B9,C7,C8,C9, 45),
suma(D1,D2,D3,E1,E2,E3,F1,F2,F3, 45),
suma(D4,D5,D6,E4,E5,E6,F4,F5,F6, 45),
suma(D7,D8,D9,E7,E8,E9,F7,F8,F9, 45),
suma(G1,G2,G3,H1,H2,H3,I1,I2,I3, 45),
suma(G4,G5,G6,H4,H5,H6,I4,I5,I6, 45),
suma(G7,G8,G9,H7,H8,H9,I7,I8,I9, 45),
nl,nl,nl,
/* escribe los resultados */
escribe(A1,B1,C1,D1,E1,F1,G1,H1,I1),
escribe(A2,B2,C2,D2,E2,F2,G2,H2,I2),
escribe(A3,B3,C3,D3,E3,F3,G3,H3,I3),
escribe(A4,B4,C4,D4,E4,F4,G4,H4,I4),
escribe(A5,B5,C5,D5,E5,F5,G5,H5,I5),
escribe(A6,B6,C6,D6,E6,F6,G6,H6,I6),
escribe(A7,B7,C7,D7,E7,F7,G7,H7,I7),
escribe(A8,B8,C8,D8,E8,F8,G8,H8,I8),
escribe(A9,B9,C9,D9,E9,F9,G9,H9,I9),
nl,nl,nl.


La teora del cdigo es sta:

Para crear un sudoku tengo que poner, en una cuadrcula de 9x9, en cada lnea, 9 nmeros diferentes (del 1 al
9, para ser preciso). Para ello, utilizo el procedimiento perm (las permutaciones, hallado ya escrito en
Internet), y genero una permutacin de los 9 elementos. Acto de igual manera para el rengln 2, 3, hasta el 9,
de la cuadrcula del sudoku. Es claro que para cada rengln, la suma de sus elementos siempre dar 45.

Ahora bien, ahora debo exigirle al software que los nmeros que ponga en cada rengln, en la suma de sus
columnas, d tambin 45. Con ello bastara -pensaba- para que el sistema buscara todas las soluciones sin
problemas. No obstante, podra haber combinaciones de nmeros, no necesariamente todos diferentes, que
dieran 45, por lo cual agregu la restriccin de que cada caja de 3x3 tuviese tambin que sumar 45.

Intent ejecutar este programa en turbo prolog (agregando las secciones de domains, predicates, clauses y
goal), pero el sistema me marc un error parecido a: too many structures in a predicate error, lo cual
obviamente no tiene solucin. Intent entonces en SwiProlog, pero el sistema se qued pensando y despus
de un largo rato me hart y cancel la ejecucin del mismo.

Qu est pasando? La realidad es que Prolog en teora podra resolverlo en un tiempo finito, pero la cantidad
de clculos que tiene que hacer parece que sobrepasa todas las expectativas. Por ejemplo, permutar 9 objetos
diferentes implica 9!, lo cual es 362880.

Cuando el programa corre, pone la primera permutacin de 9! para cada rengln, la cual da:

123456789
123456789
123456789
123456789
123456789
123456789
123456789
123456789
123456789

Obviamente, al pasar a hacer la primera suma, la de cada columna,

suma(A1,B1,C1,D1,E1,F1,G1,H1,I1, 45)

fallar e intentar va backtrack, la siguiente permutacin de la ltima lnea, lo cual podra darle algo as como
esto:

123456789
123456789
123456789
123456789
123456789
123456789
123456789
123456789
213456789

como puede verse, la primera suma de nuevo no podr hacerse, por lo que el sistema buscar todas las
permutaciones, pero ninguna dar el resultado necesario. As, har backtrack sobre la permutacin de la
octava lnea, con resultados parecidos, y as hacia atrs sucesivamente. Eventualmente encontrar
permutaciones que cumplan con eso, pero tendr que verificar tambin la suma de las cajas de 3x3. Cuando
eso falle, har de nuevo backtrack y as estar por un buen rato. de nuevo, en algn momento, esperara, el
sistema podra hallar la solucin adecuada, pero para ello el programa habr tenido que hacer un sinnmero
de permutaciones invlidas hasta hallar alguna adecuada.

Mis clculos estiman que el sistema tendra que hacer, en total, para resolver el problema completamente, con
todas las posibles soluciones, alrededor de

1.09 x 10^50

iteraciones, lo cual resulta una cantidad inmanejable para la computadora casera.

Estrictamente hablando, el programa presentado crea todos los posibles sudokus que pueden generarse.

De acuerdo a un artculo de Tom Davis
2
, no se sabe an cul es la cantidad mnima de nmeros dados para
que el sudoku tenga solucin, aunque hay ejemplos que parecen indicar que 17 nmeros es el mnimo
indispensable. Hallo adems que un par de matemticos del Reino Unido y Alemania
3
, indican que han
revisado la cantidad de posibles sudokus:

5,472,730,538

El nmero de posibles sudokus es verdaderamente inmenso! (ms de cinco mil millones).


El cdigo que escrib en Prolog es sin duda la aproximacin ms purista en este lenguaje para resolver el
problema de generar pasatiempos como el sudoku. Desafortunadamente las computadoras caseras no pueden
resolverlo por falta de recursos, probablemente en particular en lo que se refiere a memoria y a
implementacin del lenguaje usado
4
.


2
http://www.geometer.org/mathcircles/sudoku.pdf
3
http://www.afjarvis.staff.shef.ac.uk/sudoku/
4
Una version de 4x4 la resuelve de manera fcil cualquier implementacin de Prolog. La razn es que con 4
nmeros tenemos solamente 4!, es decir, 24 permutaciones y esto es manejable sin duda por los intrpretes y
compiladores de Prolog actuales.
Ajedrez

Creador de diagramas de ajedrez


Cuando tuve en mis manos un primer libro de ajedrez qued fascinado. Por una parte me sorprenda que
alguien escribiera de este tema. Mi sorpresa fue en aumento cuando descubr muchos ms libros desde los
ms elementales a los ms especficos de una variante de apertura. Con el tiempo la bibliografa ajedrecstica
que llegaba a mis manos empez a llenar todo estante disponible, as como los gases llenan completamente el
envase que los contiene. No tardaron en caerme revistas especializadas y obviamente stas se encontraban
llenas de informacin fresca. Una vez ms los resquicios de los estantes se llenaron entonces de cuanta
publicacin apareca sobre el juego ciencia.

Con el tiempo ms de una vez quise escribir algn articulillo de ajedrez y as empec a hacerlo en el boletn
El Caballo egro, que el Maestro Internacional (MI) Willy de Winter editaba en el desaparecido Club
Pomona de la ciudad de Mxico. Estamos hablando de ya algunos aos, cuando no haba computadoras,
Internet o estos artilugios que en definitiva han cambiado para siempre la manera de ver, estudiar y gozar de
este fantstico juego de mesa. Mis artculos para el club local estaban escritos con una poderosa mquina de
escribir elctrica y para distinguir los anlisis de las jugadas (en las partidas que comentaba de vez en
cuando), segu la idea que se utilizaba en una revista de ajedrez por correspondencia: las jugadas de la partida
en cuestin en maysculas. Los anlisis en minsculas (recurdese que en ese entonces la notacin descriptiva
era de uso comn). Pero entonces enfrent un problema comn a todos los que escribimos alguna vez de
ajedrez: no podamos poner diagramas de las posiciones ms interesantes porque simplemente no existan las
herramientas para precisamente hacer esto. Adems, y por si fuera poco, el boletn del Pomona eran un par de
cuartillas impreso en mimegrafo.

Con el tiempo aparecieron algunas posibilidades. Por ejemplo, la federacin norteamericana venda una serie
de sellos con los figurines acostumbrados en los diagramas y los venda, con sus correspondientes hojas
impresas con diagramas vacos para as uno poder poner las posiciones que uno quera inmortalizar en un
diagrama. Claro est que la calidad era muy pobre, pero era una alternativa. Ms adelante salieron planillas de
el equivalente al letraset (pequeas calcomanas con las figuritas de las piezas), las cuales se colocaban
simplemente desprendindolas de la hoja de acetato en las que venan. Eso daba mayor calidad pero sin duda
era un trabajo un poco ingrato pero era la mejor solucin.

Al aparecer las computadoras la tipografa computarizada, no slo la de ajedrez, se convirti en algo comn y
corriente. Actualmente cualquier equipo de cmputo puede hacer tanto o ms que ciertas imprentas viejas. La
calidad de salida, ahora con las verdaderamente econmicas impresoras lser, convirtieron en casi a cualquier
escritor en su propio editor. Los paquetes como PageMaker o incluso el mismo Word para Windows se
convirtieron en algo cotidiano. Pasaron algunos aos y con la llegada de Windows 3.x y la tecnologa
truetype, se crearon finalmente tipos de letra que eran precisamente los figurines usados en los diagramas de
ajedrez. Ahora solamente haba que hacer la sustitucin de cada pieza en cada casilla por su equivalente en el
tipo de letra que usramos. Esto, sin embargo, siempre puede ser una labor tediosa.


Imagen 1
La ventana principal de WinZug para Windows

As, se me ocurri escribir un programa que generara diagramas para poder entonces hacer publicaciones de
buena calidad. En primera instancia los diagramas se salvaban como imgenes PCX (un formato que ha cado
en desuso con la llegada de la tecnologa JPEG), y el software funcionaba (y an corre) en MsDOS.
Programar para Windows siempre estaba vetado a todo aquel que no quisiese usar el API (Application
Program Interface), que Microsoft daba a los programadores. Pero llega Borland con una herramienta
formidable: Delphi, la cual hace de la programacin en Windows un paseo por el campo. Se pueden generar
aplicaciones poderosas, slidas, en tiempos rcord. Cuando tuve dicha herramienta visual decid entonces
transportar mi software a Windows.

Aunque la tarea no fue tan simple como pensaba (el manejo de grficos cambia en la interfaz Windows), en
unos das tuve una primera versin funcionando. El sistema ahora guardaba las imgenes como BMP. Con el
tiempo y gracias a las necesidades del MI Guil Russek, se incorpor al software la generacin de diagramas
usando los tipos de letra truetype especficos para ajedrez, como los que pueden encontrarse en ChessBase,
Chess Assistant, etc. y ms adelante se le dio soporte a los del Sr. Marroqun, un estupendo diseador de este
tipo de letras que tenemos en nuestro pas. Pero como todo programa terminado se vuelve obsoleto, hace unos
das intent hacer una revisin del software. Hall que la parte de salvar a BMP no funcionaba correctamente
y la cambi. Igualmente, debido a que mucha gente tiene pginas dentro de Internet, le agregu la posibilidad
de crear diagramas para la WWW, usando las imgenes GIF que existen en ChessBase (de dominio pblico,
se aclara).

Por supuesto que hay detalles que agregar y mejorar. Por ejemplo, yo trabajo en 1024x768 pixeles de
resolucin. Otras resoluciones de vdeo hacen que no se vea correctamente las ventanas o que stas haya que
cambiarles el tamao. Esto no tiene compostura inmediata pero se trabaja en ello. Igualmente Russek sugiri
salvar en formato JPEG (y ya en esta versin esto se ha implantado).
Ajedrez

Protector de pantalla en honor de Kasparov


El retiro del mejor jugador del mundo, Kasparov, en marzo del 2005, me ha dejado como a muchos
ciertamente consternado. La razn es que en alguna medida Garry, al despedirse del escenario competitivo,
nos ha privado de futuras actuaciones y de otras magnficas producciones en el tablero que ya no veremos. Sin
duda la decisin del azerbayano debe haberla meditado profundamente y como las jugadas de ajedrez, tiene su
consecuencia.

Kasparov se mantuvo como el mejor del rating mundial los 20 aos pasados. Su carrera ajedrecstica fue
notable en todos sentidos. Como campen del mundo fue un jugador activo, que compiti y gan
prcticamente las justas ms importantes en el mundo (y adems, ms de una vez, como por ejemplo en
Linares, en donde se coron campen nueve veces). Su estilo violento y su profundo trabajo de anlisis
terico, ayudado por Fritz, Shredder, Junior, todos estos ingenios cibernticos, le dio dividendos y demostr
un nivel de profundidad extraordinario. Sin duda que Kasparov es ejemplo de tenacidad, lucha, trabajo
constante, amor incondicional y obsesin por el ajedrez, y aunque se retira de las competencias, no parece que
se retira del ajedrez mismo. Yo s que veremos ms libros de l, ms DVDs con sus clases, ms ajedrez,
aunque ya no desde la trinchera de los torneos, sino desde un ambiente ms pacfico pero igual de importante.



Imagen 1

Garry Kasparov, quizs el mejor jugador del planeta

Me queda claro que independientemente de si juega o no, Kasprov es uno de esos hroes del tablero, un
icono mundial que tendr siempre admiradores. Y yo, como admirador de su gran nivel de juego, de sus
hazaas ante el tablero, se me ocurri que era un buen momento para hacerle un pequeo homenaje. As,
escrib un protector de pantalla, un screensaver, que reproduce algunas de las partidas ms notables del ruso.
De esta manera, cuando Ud. deje de usar la computadora por un tiempo razonable, en lugar de que se ejecute
alguna simptica animacin, ahora podr ver cuatro partidas de Garry Kasprov, con el Cannon de Pachelbel
de fondo. Para hacerlo ms interesante an, hall en la red algunas fotos de nuestro hroe y las incorpor.
Cada cinco movimientos aparece una foto (de 25) al azar.


Imagen 2
Kasparov con el patriarca, el excampen mundial Mijail Botvinnik

Cambiando el archivo game.txt es posible incorporar otras partidas. De hecho, este protector de pantalla
podra servir incluso para estudiar. Puede quien as est interesado en alimentar dicho archivo con partidas
de su variante favorita y verlas reproducirse en su pantalla. Quizs el hecho de observarlas cotidianamente le
ayude a memorizarlas o tal vez, en algn momento recuerde esa posicin en alguna partida suya y pueda
aplicar esos conocimientos que su computadora le mostraba al reproducir las partidas de Kasparov. Ntese
que este archivo contiene unos comandos muy simples que permiten mover las piezas en el tablero, desplegar
los nombres de los jugadores y el resultado final del encuentro. El sistema se instala en el directorio system
de Windows, que es donde residen los protectores de pantalla y lo nico que tiene que hacer el usuario es dar
de alta el protector de pantalla de Kasprov para que pueda usarlo.

Ajedrez

El Secreto de los Grandes Maestros


Recientemente me lleg un correo electrnico que deca lo siguiente: Sgen un eiudsto de una uinsrvdiead
iglensa, no iomtpra el odern en el que las lerats etsn ectasirs, la cina csoa inrmptoate es que la prirmea y
limta lreta etsn esracits en la poicisn ccrertoa. El resto peduen eastr ttmeatolne mal y an prdos lelreo
sin poamblers. Etso es pruoqe no leeoms cdaa ltrea por s mmsia, snio la pbarlaa cmoo un tdoo.
Peonmrestalne me pacere ilnrebce.

Aunque probablemente la mayora de los lectores puedan entender el prrafo en cuestin, he aqu la
traduccin al espaol perfectamente correcto: Segn un estudio de una universidad inglesa, no importa el
orden en el que las letras estn escritas, la nica cosa importante es que la primera y ltima letra estn
escritas en la posicin correcta. El resto pueden estar totalmente mal y an podrs leerlo sin problemas. Esto
es porque no leemos cada letra por s misma, sino la palabra como un todo. Personalmente me parece
increble.



Imagen 1
El software en accin

As, si creamos que leemos letra por letra un texto, pues nos hemos equivocado. Aparentemente nuestros
cerebros han asimilado una serie de patrones, los cuales no son otras cosas que las palabras, las cuales se
codifican y se guardan de manera misteriosa, pero sin duda, de forma muy eficiente, de manera que al ver una
palabra, en lugar de leerla y armarla letra por letra, lo que estamos haciendo es simplemente buscar en nuestro
acervo de palabras para ver si est y la reconocemos. De ser cierta esta idea, lo cual parece serlo,
encontraramos una explicacin a ese misterioso fenmeno de los errores en un texto que escribimos, y que
solamente encontramos despus de haberlo impreso. Es decir, no importa las veces que lo revisemos en la
pantalla de la computadora. Es regla general que cuando se imprima el documento encontremos errores que
nunca vimos.

Lo simptico del asunto es que tiene la clave para jugar mejor al ajedrez y que en cierta medida revela lo que
los grandes maestros hacen al jugar. La curiosa frase recibida en mi buzn da un dato fundamental: el cerebro
es una mquina de procesamiento de patrones. As entonces, en muchos sentidos, los jugadores fuertes saben
qu jugada hacer prcticamente desde el momento que ven una posicin. Cuando se les pregunta cmo es que
encontraron prcticamente a vuelo de pjaro la mejor jugada, responden con un mohn moviendo la nariz en
seal de es una especie de olfato.

Pero bajo el esquema de lo que estamos considerando, es mucho ms probable que este olfato no sea ms
que una coleccin de patrones ajedrecsticos, de posiciones tpicas, y no slo de estructuras de mate, sino de
otros gneros de posiciones, incluso en las aperturas. Por eso, me parece, es importantsimo estudiar ajedrez.
De esta manera el cerebro va adquiriendo estos patrones arquetpicos que muestran cmo se deben manejar
cierto tipo de posiciones. Quienes no estudian y creen que pueden resolver todo en la partida viva, pues se
equivocan, si no totalmente al menos en parte. Es cierto que s, un jugador talentoso encontrar quizs las
jugadas correctas analizando meticulosamente la posicin. Sin embargo, podra ahorrarse un valiossimo
tiempo de reflexin si conociera de antemano ciertos patrones, producto probable de estudiar
sistemticamente nuestro juego.

Desde luego que no todo son patrones. Sin duda el jugador fuerte, el gran maestro, tiene una certeza sobre la
manera de evaluar correctamente una posicin. Eso se adquiere a travs de varias actividades:

(i) ver muchas posiciones parecidas, analizando lo que otros han jugado en esa posicin (por eso las
bases de partidas son fundamentales para todo aquel que quiera mejorar su juego);
(ii) conocer los elementos bsicos, como por ejemplo, los finales ms comunes, desde los de peones
hasta los de torres;
(iii) conocimiento de las partidas modelo ms importantes de la historia del ajedrez, aqu hay cientos
de encuentros memorables, que todo jugador debe entender para tener una visin histrica y
prctica de cmo se atacan cierto tipo particular de posiciones y, desde luego,
(iv) un trabajo constante en el desarrollo de la habilidad tctica, la cual se traduce en precisamente en
analizar patrones de combinaciones tpicas, que nos darn una ventaja enorme sobre aquel que
no haya hecho este trabajo.

Si usted hace eso (lo cual requiere tiempo, dedicacin, disciplina y trabajo constante), entonces no habr
quien lo detenga en el camino a la maestra ajedrecstica.


Postscriptum

Hace ya relativamente cierto tiempo escrib sobre esto. A partir de esta idea me di a la tarea de escribir un
programa que hiciese este intercambio de letras. Al principio, por cuestiones de simplicidad, utilic un
intercambio simple de letras, la segunda con la tercera, la cuarta con la quinta, etc. Ms adelante puse un
algoritmo ms sofisticado que hace este intercambio de letras (recurdese siempre dejar la primera y ltima
letra de cada palabra igual), y lo incorpor al programa. Y as lo dej, el ejercicio de programacin funcionaba
bien.

Pero he aqu que en un curso de reconocimiento de patrones, pens que la labor inversa deba ser interesante
de programar. Es decir, dado un texto escrito con esta tcnica de poner al azar las letras de cada palabra (a
excepcin de la primera y ltima letra, repito), se podr hacer un programa que lo pase a un formato legible?

Ah encontr, entre otras cosas, que el hecho de que podamos leer textos as escritos no significa simplemente
que el cerebro reconoce la palabra que creemos que es, sino que tiene un acervo de palabras, el cual es
enorme, y adems, gracias al contexto, puede reconocer lo que est escrito. Para ser ms claro, imaginemos
que encontramos la siguiente palabra:

Sirhdcogeenr

Probablemente no pueda usted saber de qu palabra se trata, puesto que no hay contexto. Pero ahora veamos
esta frase completa:

Sirhdcogeenr fue uno de los ms eairrtoarxnoids fiocss de la mcienca cnituca
probablemente nos cueste trabajo si jams nos hemos ocupado de la fsica y mecnica cuntica. Para cualquier
fsico ser relativamente fcil y podr leer:

Schroedinger fue uno de los ms extraordinarios fsicos de la mecnica cuntica

Dicho en otras palabras, el mecanismo que usa el cerebro para entender un texto desarticulado con la tcnica
mencionada se puede volver a su sentido original si se cumplen dos factores:

el lector tiene un buen conocimiento del lenguaje
el lector tiene un conocimiento del mundo exterior o de temas particulares que le facilitan el
entendimiento de pasajes as escritos.

Esto en el fondo es un tema de la inteligencia artificial. Se podr hacer una rutina que lea un texto mal
formado y lo ponga correctamente?



Imagen 2
El programa con la opcin de reconocimiento inteligente


Para que esto sea posible, tenemos que alimentar al programa con una base de datos de palabras (nuestro
conocimiento del lenguaje), para que as, al ver una palabra, el sistema pueda buscar en dicho archivo y hallar
la que corresponde.

Curiosamente la bsqueda no es en ningn sentido algo comn, como lo que se hace frecuentemente. Aqu
tenemos que buscar con los siguientes criterios:

1. La palabra a buscar debe ser mayor de tres letras (no hay cambio en uno, las, si, no, y, por
ejemplo)
2. la primera y ltima letra de la palabra a buscra debe coincidir con la primera y ltima letra, adems
de la longitud en caracteres de la misma.
3. La palabra a buscar debe contener las mismas letras que la palabra original.


En el punto 3 surge un problema. Supongamos que buscamos la siguiente palabra:

dnrtmvaescutiete (destructivamente)

De cada palabra que debo buscar en mi diccionario, debo saber que estn todas las palabras de la palabra
original sobre la que busco, en este caso el subconjunto 'nrtmvaescutiet'. Al principio, pens que lo ms fcil
sera sacar todas las permutaciones de estas letras y ver si se cumplan dentro de la palabra elegida en cada
bsqueda, pero encontr que es una mala idea, porque si tengo 7 letras, hay que calcular 7! permutaciones. En
el caso del ejemplo, hay que calcular 14!... Obviamente hay que buscar otra solucin.

Al final de cuentas lo que se me ocurri es crear una tabla de frecuencias para la palabra que busco y las
opciones que tengo. As me aseguro que ambas palabras (la que eleg como candidata y la original), tengan
las mismas letras dentro de la primera y ltima que no cambian.

El algoritmo lo agregu al programa original y podra decir que de alguna manera busca tener un sistema con
visos de inteligencia.

Cuando se le pide al programa que convierta un texto mal formado a uno correctamente escrito, hall que:

Tuve que poner todas las palabras en minsculas, pues mi diccionario de palabras est todo en
minsculas
El diccionario consta de casi 500,000 palabras, pero no tienen acentos y ees. La razn de esto es
que en el formato original del mismo los autores (para un proyecto de correccin ortogrfica en
Linux), pusieron caracteres especiales para sealar acentos, derivaciones de las palabras, etc. Como
eso complicaba la bsqueda de las palabras en mi aplicacin se los quit en esta primera versin.
El programa tarda en relativamente en procesar el texto mal formado. La razn es que tiene que
analizar prcticamente las casi 500 mil palabras, pues una bsqueda binaria simplemente en este caso
no se puede hacer.
Cuando el programa no encuentra una palabra, la marco en MAYSCULAS para que se vea el
cambio de manera notable.

Ajedrez

Calculadora de rating Elo


La Federacin Internacional de Ajedrez (FIDE), clasifica a sus jugadores de acuerdo a su fuerza ajedrecstica.
Dicha fuerza se representa por un nmero que va desde los 1000 puntos (muy dbil) hasta no ms de 3000
aproximadamente (extraordinariamente fuerte, de hecho, nadie ha llegado a esta cifra nunca). Los jugadores
de ajedrez toman muy en cuenta este nmero, su rating, porque para los profesionales, ser uno de los
jugadores ms fuertes del planeta implica ser invitado a participar en torneos magistrales, en donde hay
jugosos premios y, muchas veces, dinero a los jugadores por el simple hecho de participar. As, todos se
preocupan por mantenerse e incluso, si es posible, subir su rating cada vez ms. La FIDE publica cada tres
meses la lista de rating oficial, la cual rige para los torneos en todo el mundo.

Pero cmo se calcula el rating? a quin se le ocurri una frmula que pueda representar en un nmero la
habilidad ajedrecstica de un jugador? Arpad Elo, un matemtico hngaro, nacido en 1903 y emigrado a los
EEUU a la edad de 10 aos. Fue profesor de fsica y astronoma de 1935 a 1965 en la Universidad Marquette.
De 1935 a 1937 fungi Elo como administrador de la Federacin Americana de Ajedrez, la cual se convertira
ms tarde en la USCF (United States Chess Federation). Elo fue nueve veces campen o co-campen de
Wisconsin. En 1959 Elo decidi trabajar sobre un sistema de clasificacin de los jugadores, el cual la USCF
adopt en 1960 y hasta 1970 por la FIDE. Elo pas al saln de la fama del ajedrez norteamericano en 1988 y
muri en 1992.

Para quienes jueguen al ajedrez, el nombre Arpad Elo les ser familiar. Siendo matemtico, Elo desarroll una
serie de frmulas para calcular lo bien que un jugador se desarrolla en las competiciones ajedrecsticas. Tan
buena fue su idea que al incorporar el rating, la Federacin Internacional de Ajedrez logr un esquema que
permita validar los resultados de los jugadores para as otorgarles los ttulos de maestro FIDE (MF) maestro
internacional (MI) y gran maestro (GM).

La primera lista oficial de rating fue publicada por la FIDE (Federacin Internacional de Ajedrez, por sus
siglas en francs), en 1970, a partir de los resultados de 210 jugadores de alto calibre ajedrecstico en partidas
disputadas en los aos 1968 y 1969. Tiene tanto xito este sistema, que los nuevos resultados en los torneos
son calculados a partir del 70 y en 1972 se establece tambin el rating femenino, en donde solamente hay 112
jugadoras. En ese entonces, las dos mejores de lo que ahora es la ExUnin Sovitica, Nona Gaprindashvili,
que ya para ese entonces era la campeona mundial y a la postre lograra la obtencin del ttulo de GM pero
entre los hombres. La otra mujer mejor clasificada era All Kouchnir. Esta dupla se mantuvo como primero y
segundo sitio mundial por alrededor de diez aos.

El ajedrez ha crecido desde el ao 1970 de manera notable. Por ejemplo, la lista de rating de la FIDE de 1980
contena a 3103 jugadores pero en 1990 la lista ya era de 9186 ajedrecistas. En 1997 dicho listado
contemplaba a 18555 ajedrecistas activos. Un incremento que cualquiera observar como notable. Desde
luego que el aumento de participantes en los torneos no se debi exclusivamente a la existencia de una lista de
rating internacional, sino a que adems, muchos torneos pudieron significar las aspiraciones de ttulos
deportivos a los jugadores que lograran los primeros lugares. Eso sin duda motiv la participacin de muchos
jugadores. Cabe recordar que los primeros cinco grandes maestros de la historia nacieron en el torneo de
Petrogrado, en donde el Zar concedi el ttulo mximo (sin contar el ttulo de campen mundial), a Emmanuel
Lsker, Jos Ral Capablanca, Alexander Alekhine, Siegbert Tarrasch y Frank J. Marshall.

Pero regresando al asunto del rating, se sabe en los crculos ajedrecistas que el empate entre dos jugadores no
significa la nulidad. En trminos de rating puede significar ms puntos para el jugador ms dbil y esa misma
cantidad de puntos menos para el jugador ms fuerte. Es decir, el ms dbil consigue un buen resultado si
arranca unas tablas , mientras que el ms fuerte, por el hecho de no imponerse, cosecha un mal resultado. La
diferencia de clasificacin Elo (o rating) sirve para establecer los mritos de cada uno de ellos. Arpad Elo
estableci, basndose en la estadstica elemental (ley normal de Poisson), una tabla de probabilidad de
victoria en funcin de la diferencia de puntos Elo entre los jugadores. Pongamos un par de ejemplos: si la
diferencia de ratings entre dos jugadores es de cero a 3 puntos, cada jugador tiene un 50% de ganar la partida.
En cambio, si la diferencia es de 99 a 106 puntos, el jugador ms fuerte tiene 64% de obtener la victoria
contra un 36% del jugador dbil de alzarse con el triunfo. Una diferencia de 268 a 278 hace que el jugador
fuerte tenga a su favor un 83% de ganar, contra 17% de que su rival le gane. Dicho de otra manera, cuando la
diferencia es de ms de 267 puntos, el jugador fuerte debiese ganar al menos 8 partidas de 10 jugadas.

Establecidos estos valores (compilados en una tabla de probabilidad que confeccion Elo mismo), el clculo
de los jugadores se haca a travs de unas frmulas por dems simples. Hoy da hay manera de otorgar un
rating provisional a un jugador (a partir de una frmula modificada de las originales del Profesor Elo), el cual
a partir de esta primera clasificacin, empezar a moverlo (hacia arriba o hacia abajo), de acuerdo con sus
restantes actuaciones. Pero obviamente aqu no pretendemos dar un curso de lgebra para poder usar estas
ecuaciones y encontrar el rating de un jugador. En lugar de esto, el software a escribir en esta ocasin es una
calculadora Elo, que permite al ajedrecista calcular cunto sube o baja su puntuacin despus de jugar un
torneo en particular (conociendo, desde luego, los ratings de sus adversarios).

El sistema de rating puede parecer misterioso, pero se basa en una teora puramente estadstica. Obviamente,
dos jugadores que tienen el mismo rating tienen la misma oportunidad de ganar una partida de ajedrez (50%).
Menos obvio es, sin embargo, que la misma diferencia de rating entre dos jugadores implica la misma chance
de triunfo, es decir, un jugador de 2400 puntos Elo que juega contra un jugador de 2200 puntos tiene la misma
chance de ganar que un jugador de 1400 puntos que enfrenta a uno de 1200 puntos. La diferencia es en ambos
casos de 200 puntos.

Elo as describi una tabla que muestra la probabilidad de un jugador de ganar una partida, de acuerdo a esta
diferencia de rating entre los jugadores. Esto puede extenderse, desde luego, al rating promedio de un torneo.
De la tabla de diferencia de ratings (copiada de http://chess.about.com/library/weekly/aa03a25.htm)



Tabla 1
Tabla de esperanza contra diferencias de rating

Podemos ver que un jugador que le saque 253 puntos a su contrario equivale a que tiene un 82% de
posibilidades de triunfo. As, si el jugador de menor nivel gana, le quitar a su rival una cantidad de puntos,
basada en una constante K, 25 si es su primer clculo de rating hasta completar 30 partidas; 15 mientras el
jugador no llegue a 2400 puntos Elo; 10 para jugadores con ms de 2400 puntos Elo. Este valor entonces ya
no se modifica ms.

La tabla de Elo es curiosa:



Grfica 1

Puede verse que no es una funcin estrictamente lineal, aunque en gran parte de la misma se mantiene como
si as lo fuera. Da la impresin que Elo quiso darle peso a las grandes diferencias de rating de manera que no
sea tan brusco el cambio de puntuacin en esta situacin. No me meter mucho en este punto porque creo que
el matemtico Jeff Sonas sabe mucho ms de esto y est mejor calificado para discutir estos aspectos de la
frmula de Elo (ver chessmetrics.com). As, de acuerdo a la frmula Elo, si gana el jugador ms dbil en este
hipottico caso, ganar 12.5 puntos. En cambio, si gana el favorito, le quitar al perdedor solamente 2.8
puntos.



Imagen 1
Calculadora Elo

Una vez entendida la tabla y los fundamentos de la frmula del rating, me sent un par de das y como mero
ejercicio acadmico, me hice mi propia calculadora de rating para la PC y adems le agregu el clculo del
desempeo.



Ajedrez

Ajedrez a la ciega


Existen muchas modalidades de ajedrez. Algunas son ms recreativas que el ajedrez competitivo, donde los
jugadores buscan, por todos los medios, vencer al rival. Por ejemplo, las simultneas de ajedrez, donde un
avezado jugador (normalmente un maestro), juega al mismo tiempo contra 10, 20, 30 40 competidores.
Aqu, los aficionados intentan vencer al maestro de ajedrez, y en ocasiones un par de jugadores lo logran
aunque, en general, los maestros gracias a su experiencia en el tablero logran la mayora de los triunfos.

Tambin existen modalidades artsticas. Por ejemplo, concursos de problemas y estudios en ajedrez, donde las
ideas ms sorprendentes, ms sutiles, cobran vida en el tablero. Es tan interesante esta forma de ajedrez que
incluso hay grandes maestros de la composicin ajedrecstica. Kasparin o Kubbel, por ejemplo, son dos de
los compositores de problemas de ajedrez ms importantes que haya tenido jams el juego ciencia.

Hay, sin embargo, otra modalidad de ajedrez, de la que se habla poco y quiz con razn. Se trata de jugar el
ajedrez a la ciega; es decir, sin tener a la vista un tablero con sus piezas. Hay que considerar que si el tablero
de ajedrez contiene 32 piezas y 64 casillas, quien juega de memoria, sin ver el tablero, debe acordarse
dnde estn las piezas propias y rivales en cada momento. Esto, dicen los psiclogos, se hace en la memoria
de corto plazo, pues una partida de ajedrez es un evento dinmico que dura unas cuantas horas.

Si consideramos que hay estudios que indican que las personas comunes y corrientes pueden recordar hasta
siete datos de una sola vez (es por ello que no es fcil recordar a la primera oportunidad un nmero de
telfono), entonces el jugar ajedrez apelando solamente a la imaginacin de dnde estn las piezas, puede
considerarse una labor muy compleja, por decir lo menos. Por ello, cuando se hace una demostracin pblica
de alguien jugando una partida de ajedrez con los ojos vendados, no nos resta ms que admirarlo. Esta es la
pregunta que surge: es posible aprender a jugar a la ciega? Y si esto es as, qu beneficios/perjuicios se
pueden tener por esta actividad?



Imagen 1
Pantalla inicial del software de entrenamiento de ajedrez a la ciega

Para quienes jueguen competitivamente al ajedrez, es evidente que el poder jugar a la ciega, al menos
limitadamente, nos permite mover las piezas en la cabeza sin moverlas en el tablero, porque bien sabemos
que pieza tocada es pieza jugada, y esa regla es absoluta y sin excepciones. As, si tuviramos la capacidad de
ver cmo quedar el tablero sin mover las piezas en el mismo, tendramos una ventaja sobre muchos de
nuestros adversarios. Esta prctica de visualizar el tablero se hace frecuente en la medida que uno compite en
torneos. Poco a poco, con prctica, trabajo constante, estudio de muchas posiciones sin mover las piezas, los
ajedrecistas dedicados logran empezar a ser eficientes en este clculo mental de jugadas. Obviamente, la
mayora no logra poder calcular todas las posibles posiciones que pueden darse en una partida de ajedrez,
pero s profundizar a un nivel en donde se puede tomar la decisin si una jugada es correcta o no.



Imagen 2
El software en su ventana principal

La habilidad del clculo a la ciega es algo que todo jugador debe saber realizar. Como una habilidad ms,
puede aprenderse, sin lugar a dudas, aunque para ello se requiere de paciencia y trabajo cotidiano. Aqu no se
trata de simular esas hazaas como la del viejo Najdorf, el gran maestro polaco-argentino, quien pudo jugar
hasta 45 partidas a la ciega, simultneamente, perdiendo dos, ganando 39 y empatando 4. Una hazaa que le
llev ms de 20 horas y, que despus de ello, el ajedrecista no durmi las siguientes 48 horas, pues su cerebro
mostraba cada partida como una pelcula en cmara lenta. Najdorf aseverara ms adelante que una locura
como esa no la vuelvo a repetir. De hecho, los jugadores de la escuela rusa prohben el espectculo de las
partidas a la ciega por considerarlo daino a la salud, aunque no s de muchas experiencias que demuestren
esto (aunque acabo de recibir un correo electrnico de Javier Gonzlez Solabarra, que me dice: soy un
jugador de categora preferente y desde hace aos practico simultneas de ajedrez a la ciega. Mi rcord es
de hace dos aos donde jugu con nueve oponentes de diversas categoras. Hace tres aos, al finalizar unas
simultneas con ocho adversarios, me puse malo y consegu a duras penas llegar a casa).

El software en esta ocasin permite practicar el juego a la ciega, pero no con afn de hacer ningn espectculo
de circo. selo para desarrollar su capacidad de anlisis en ajedrez. Ver con el tiempo diferencias al respecto
de cun lejos poda ver en unas variantes antes de trabajar con el software y despus.
Ajedrez

Tarjetero electrnico de posiciones de ajedrez


Leo un artculo del MI Ral Ocampo, sobre la informtica aplicada al ajedrez, en donde dice lo siguiente:
Uno de los mtodos de estudio ms preconizados por la escuela sovitica de ajedrez era el uso de
tarjeteros. La idea es poner en una tarjeta una porcin de conocimiento, como puede ser una posicin
bsica (de las mticas 300 posiciones), una posicin fundamental de una variante o sistema de apertura, o de
alguna posicin con una idea especial. Tenindolas en tarjetas, el jugador puede prepararse revisando una y
otra vez las diferentes tarjetas del tarjetero, como una manera de aprenderlas al dedillo literalmente. De
la misma manera que un tarjetero con temas de cualquier disciplina acadmica. Un mtodo muy
recomendado por pedagogos de cualquier rea.

En los aos anteriores a la informtica, como fueron la gran mayora de los de la existencia de la URSS, los
entrenadores soviticos laboriosamente elaboraban para sus pupilos estos tarjeteros. Utilizaban unos sellos
para imprimir diagramas y piezas para poner una posicin en una tarjeta y ya sea a mano como con
mquina de escribir se hacan las anotaciones correspondientes. Ejemplos de esta manera de trabajar nos lo
relata la GM Kira Zvorkyna al comentar el apoyo que como entrenador le dio en los aos 1950s, el GM Piotr
Arsenievich Romanovsky; uno de los mejores entrenadores soviticos, en un artculo publicado por la revista
rusa 64 en su nmero 7 de 2003. El ms afamado entrenador ruso, el MI Mark Dvoretsky, en muchos
artculos menciona su famoso tarjetero con su coleccin de posiciones interesantes. El uso de tarjeteros o
cuadernos para recolectar posiciones y variantes era un estndar entre los entrenadores del siglo XX.
Personalmente en los aos 1980 a 1990 escrib varios artculos al respecto, recomendando el uso de las
famosas libretas de tres argollas que es comn utilizar en las escuelas. La idea es poder intercalar hojas
cuando es necesario .

El GM Aaron Nimzovich en su libro de Cmo llegue a ser Gran Maestro
5
escrito en la dcada de 1920,
refiere que mando a un encuadernador insertar una hoja en blanco entre cada hoja impresa de un libro sobre
un torneo de maestros para poner sus propios comentarios a cada partida. Pero el caso del tarjetero es para
facilitar el repasar una y otra vez las mismas posiciones, como revisando un paquete de naipes, incluso para
alterar el orden a placer. Repeticin una y otra vez era el lema de los entrenadores soviticos, hasta aprender
esas posiciones bsicas y las ideas contenidas, perfectamente. Memorizarlas, o incluso ms de ello, vivirlas,
sentirlas. Para luego aplicar esas ideas y esquemas en posiciones similares pero nuevas. Pasar de la nocin,
caso aislado, a un concepto, agrupacin de casos que estn unidos por un patrn, para luego pasar de nuevo al
caso concreto. De lo particular a lo general y luego de nuevo a lo particular. De la nocin al razonamiento
conceptual y luego a la aplicacin a una situacin especfica y nica.

5

Hasta donde s, no es un libro, sino un largo artculo del viejo maestro dans, que aparece transcrito en el
libro de Raymond Keene: Aron imzowitsch, a repraissal, Ed. Batsford.


Imagen 1
El logotipo del programa


A partir esta idea, llegu a la conclusin que no hay software en el mercado especializado que haga
precisamente esto, es decir, que permita a los ajedrecistas hacer estos famosos tarjeteros. Ms de uno podr
decir que realmente ya no es necesario, pues con Chessbase
6
, por ejemplo, se pueden tener este tipo de
tarjetas electrnicas. En alguna medida es cierto, aunque es claro que lo que hace el software alemn no es
estrictamente esto. As, por qu no tener un software especializado para hacer este tipo de tarjetas
ajedrecsticas?, como menciona Ocampo en su artculo.

Dada entonces esta motivacin, me di a la tarea de escribir mi propia versin del tarjetero ajedrecstico. Me
llev todo el sistema unos cinco das, pues hubo que definir la base de datos, es decir, cul es la informacin
mnima que el sistema debe manejar. El programa debera no slo poner texto, sino que adems, incluir un
diagrama en cada tarjeta. Igualmente, debera poder imprimir las tarjetas y desde luego, hacer bsquedas
sobre los temas definidos en las mismas. De esta manera tendramos esta vieja herramienta modernizada en
las computadoras de hoy.


6
www.chessbase.com



Imagen 2
Ventana principal de Chesscards

Aprovechando que actualmente existen muchos tipos de letra que despliegan figurines, es decir, las piezas
de ajedrez, pude crear en modo texto los diagramas, de manera que no ocupan tanto espacio en la base de
datos con respecto a lo que usaran en caso de usar imgenes bmp o jpg.

Poco a poco el software fue tomando forma y en el momento de escribir esto, ya tengo una versin beta, la
cual denomine ChessCards. Y s, ya s, por qu en ingls? De acuerdo a la teora de mi hermano Pedro, al
mexicano le encanta ser malinchista. Vaya, si el manual de algn dispositivo viene en coreano, entonces
estar encantado.
Ajedrez

Qu tan bueno es su ajedrez?


Jugar bien al ajedrez no es solamente cosa de tener facultades para el juego. Es claro que la mayora de los
jugadores tienen cierta capacidad, la cual quizs se vislumbr en la mayora de los casos a tierna edad. Sin
embargo, es evidente que el estudio puede hacer maravillas y sustituir en cierta medida lo que la naturaleza se
neg a darnos. As, es claro que el jugador de ajedrez que lo desee puede subir de nivel si su constancia en el
estudio es la adecuada y si puede jugar una serie de torneos para ir probando lo que, precisamente, va
aprendiendo con el estudio sistemtico.

Hoy da, gracias a la computadora, el ajedrez ha cobrado cierta relevancia, la cual se traduce en bases de datos
con millones de partidas, sistemas que juegan al ajedrez con un promedio de 2600 de rating (que compiten ya
al t por t con los campeones del mundo), programas especficos de anlisis de alguna variante en particular,
etc. Hay de todo y para todos y quien saque provecho de todas estas nuevas herramientas seguramente podr
progresar incluso ms rpido que hace apenas unos 10 aos. La informacin est a la orden del da.

Desafortunadamente esto tiene un costo: los programas ms poderosos de ajedrez no son gratuitos. Los discos
compactos con software especializado para estudiar lneas especficas de apertura o resolver ejercicios de
diferente dificultad cuestan sus buenos pesos (traducidos, claro est, a dlares). En vista de eso, se me ocurri
que algo deba hacerse As pues, decid que era hora de escribir mi propio software de entrenamiento

Entrenamiento Tctico es una herramienta para estudiar ajedrez. Indudablemente son muchos los factores
para llegar a jugar bien, empezando por un dominio de lo que se llama tctica, de la posibilidad de calcular
largas variantes con precisin. Para ello, no basta con ver jugadas, hay que encontrar las mejores, las que
causan ms problemas al adversario, las que encierran amenazas ms poderosas. Es claro entonces que el
aprender el arte de las combinaciones se basa en realizar muchos estudios al respecto. Tenemos algunas
decenas de libros con ejercicios de combinacin, en donde se repiten los patrones de las piezas en ubicacin y
poder. Una vez que hayamos resuelto cientos de estos ejercicios empezaremos a acumular estos patrones de
ubicacin de piezas adems de las ideas tcticas como pueden ser la clavada, el ataque doble, el ataque
descubierto, etc. Todo jugador, si quiere llegar a jugar medianamente bien, tendr que hacer muchos
ejercicios de esta naturaleza. De eso ni hay duda alguna.

Pero an falta el elemento competitivo Cmo entrenar cuando uno participa en torneos? En este caso el
Ajedrez solitario puede darnos la respuesta. El estudio de cualquier tema exige que quien quiere aprender se
involucre, que tenga un inters genuino por comprender lo que se est estudiando. Ir a la escuela, por ejemplo,
no es garanta de aprendizaje y el hecho de saber que existe un alto porcentaje de desercin escolar en la
enseanza media superior, simplemente indica que no hay la suficiente motivacin para que esa gente siga en
la universidad.

En el estudio del ajedrez muchas veces pasa lo mismo, con el agravante de que en la mayora de los casos, la
instruccin es autodidacta, lo cual hace de todo este asunto del aprendizaje algo ms difcil y complejo. Los
ajedrecistas leemos muchos libros de ajedrez, consultamos bases de datos, hacemos ejercicios de tctica,
estudiamos incesantemente las aperturas y, adems, participamos en torneos. Mucho de este trabajo lo
hacemos solos, sin ayuda de terceros. Frecuentemente nuestros esfuerzos en el estudio no parecen reflejarse
en los resultados de las competencias. Esto pasa por muchas razones, aunque quizs la principal sea que
enfocamos incorrectamente el trabajo casero de aprendizaje.

En repetidas ocasiones he visto a compaeros ajedrecistas sentarse frente al computador para ver partidas de
una variante especfica. Ponen la partida y la reproducen en el tablero electrnico en breves minutos, pasan a
la siguiente partida y hacen lo mismo. Al final se fastidian y se observa que slo tratan de recordar algunas de
las ideas que pudieron percibir en esa veintena de partidas vistas con celeridad. A la larga, este trabajo es una
prdida de tiempo.

Es fcil darse cuenta que una partida efectuada en cuatro horas no se puede comprender en todos sus aspectos
si uno le dedica unos cuantos minutos. Desde luego, podra pensarse que no vamos a estar cuatro horas
analizando una sola partida, pues pareciera que eso es tambin perder el tiempo. Sin embargo, no
necesariamente tiene que serlo as. De hecho estoy convencido que es preferible analizar una sola partida
usando un par de horas, que viendo dos decenas a velocidad constante.

Ahora bien, es evidente que no todas las partidas merecen un anlisis exhaustivo por parte del estudiante. Hay
sin embargo muchos modelos de estrategia que vale la pena estudiar con detalle. Es claro que hablamos de las
partidas de los grandes maestros del tablero, tanto los clsicos como los modernos. Siempre, desde luego,
parece preferible voltear hacia los viejos maestros como Alekhine, Lasker y Capablanca, por ejemplo, porque
sus partidas han sido analizadas hasta el hartazgo por muchos jugadores, y ya sabemos que las partidas con
buenos comentarios siempre sern mejor que cientos de partidas en bloque sin ninguna nota.

Considrese tambin que cuando uno participa en un torneo, esas partidas que uno juega, gana, empata o
pierda, se conservan mucho ms tiempo en nuestra memoria. La razn es que dichos encuentros fueron
analizados por uno mismo a profundidad, sin contar, desde luego, con la parte emocional. Por ejemplo,
cuando uno ve la posibilidad de un remate brillante y el corazn empieza a palpitar ms fuerte. En otras
palabras, el recuerdo permanece porque nos involucramos en el problema, en intentar ganar y as resolver la
partida de ajedrez a nuestro favor.

Y a partir de estas reflexiones surge la pregunta: cmo poder hacer, en buena medida, de una partida de
estudio algo propio, algo tan personal como cuando jugamos un encuentro nosotros mismos y que
ponemos todo el inters en dicho momento? Imaginemos que estudio un juego de alguien como, por
ejemplo, el excampen mundial Boris Spassky y quiero que esa experiencia ajena a m entre dicho personaje
y otro gran maestro pase a mi acervo de manera tal que se quede en mi memoria como si fuese una partida
que yo hubiese jugado. Qu debo hacer? Se puede experimentar en cabeza ajena?

Podr sorprender al lector, pero la respuesta es afirmativa y el mecanismo se llama ajedrez solitario. Este
esquema de estudio no es nuevo y, de hecho, es comn en las revistas especializadas. Curiosamente no parece
haberse comprendido el gran valor didctico que puede ofrecer al estudiante dicho esquema. La idea consiste,
primero, en seleccionar una buena coleccin de partidas. Una vez hecho esto, el mtodo consiste en que el
estudiante se imagine jugando hombro con hombro con el maestro que gan la partida, e intente entonces
acertar a las jugadas que en dicho encuentro se produjeron. Si en algn momento no se predice la jugada
correcta, se hace la que hizo el maestro as como la respuesta del adversario y de nuevo estamos en el camino
de buscar la siguiente jugada que hizo el ganador de la partida.

Existen algunos libros que siguen esta idea
7
pero con un elemento que refuerza la enseanza: el calificar cada
jugada que hace el maestro. Muchas veces en una partida de ajedrez hay ms de una buena jugada. As, si
uno estudia un encuentro va esta tcnica del ajedrez solitario, es posible que el autor de los comentarios de
dicho encuentro otorgue puntos por ms de una jugada y no solamente por la jugada que hizo el maestro. La
retroalimentacin que significa una calificacin positiva en las jugadas que uno hace resultan en un afn ms
serio, por parte del estudiante, para hallar la jugada que sigue. Al final del encuentro, normalmente el autor
del ejercicio califica el desempeo del estudiante. Al principio, probablemente, las jugadas que uno hace estn
alejadas de las que el maestro ha realizado. Sin embargo, con prctica y un intenso esfuerzo por comprender
lo que est ocurriendo en las partidas con este formato, nos puede hacer mejorar notablemente en nuestro
ajedrez.

Es claro que este tipo de ejercicios deben hacerse simulando las condiciones de juego estrictamente, es decir,
con el tablero enfrente e incluso, ponindose un tiempo razonable para el anlisis personal. Digamos entre una
hora y noventa minutos para el estudio de una sola partida.


7
Libros como How Good Is Your Chess?, Daniel King, Ed. Cadogan; How Good Is Your Chess? Leonard
Barden, Ed. Dover; (los dos libros son diferentes, aunque el ttulo es exactamente el mismo); Solitaire Chess,
I.A. Horowitz, Ed. CornerStone Books o incluso revistas como Chess Life (EEUU) o Jaque (Espaa), Chess
(Reino Unido).
Kotov describe en su famoso libro
8
la manera de entrenarse: Seleccion de libros de torneos las partidas en
las que haban tenido lugar grandes complicaciones. Luego las vea sobre el tablero, pero cuando se llegaba
al punto crucial donde se encontraban dichas combinaciones y el mayor nmero de variantes posibles,
dejaba de leer los comentarios. Colocaba a un lado el libro o cubra la pgina con una hoja de papel y me
pona la tarea de pensar larga y profundamente, con el fin de analizar todas las posibles variantes. Al mismo
tiempo intentaba ponerme en el estado de nimo que tena cuando estaba sentado ante el tablero en la sala
del torneo. Y contina: cuando haba pasado entre media y una hora en este trabajo, algunas veces
(especialmente en posiciones muy complejas), escriba las variantes que haba examinado, y entonces las
comparaba con las del comentarista. Al principio haba una gran discrepancia a favor de este ltimo, pero
luego aprend cmo ampliar mi campo y a describir cada variante con considerable exactitud. aturalmente,
analizaba sin mover las piezas para hacerlo igual que en una partida de torneo.

La descripcin del gran maestro ruso es notable, porque precisamente estos ejercicios de ajedrez solitario
proveen todo esto que busc Kotov en su momento para analizar y disciplinar su estudio.



Imagen 1
Ventana principal del programa de entrenamiento tctico

Por eso, adems de servir Entrenamiento Tctico para, precisamente, el estudiar posiciones de tctica, es
factible crear sus propios libros electrnicos con posiciones especficas. El sistema se ha diseado mediante
un lenguaje de comandos los cuales se escriben en un archivo de texto (sin caracteres de control o tipos de
letras especiales). De esta forma cualquiera que as lo desee puede generar sus propios libros de ejercicios, a
los cuales puede incluso dotarlos de una calificacin (de acuerdo a la dificultad del ejercicio, por ejemplo), y
eso puede servir para ver cunto progresa quien ejecuta los ejercicios en cuestin.

Como ejemplo de lo que puede hacerse con este software, el cual est en su primersima versin (le faltarn
cosas importantes, como suele pasar con los programas de computadora), se transcribi el primer captulo del
librillo de tctica del MI Guil Russek (Para Ganar en Ajedrez, Ed. Selector).

8
Op. cit. pg 16.
Ajedrez

Editor de partidas de ajedrez solitario


En el captulo anterior hablamos de un programa que permite jugar una partida de Ajedrez Solitario. La idea
es entrenarse para la batalla, intentando encontrar las jugadas correctas de uno de los jugadores de una partida
magistral (normalmente quien gan), y adems, recibiendo puntos por jugada acertada, de manera que en
alguna medida el ejercicio no slo nos muestra una partida magistral, sino que adems nos da el estmulo de
retroalimentacin positiva cuando acertamos las jugadas.

El programa del captulo pasado sirve entonces para reproducir la partida de ajedrez solitario, la cual est
codificada en un sencillo lenguaje de script, es decir, como un guin que se ejecuta lnea por lnea y as
entonces, se va reproduciendo el encuentro en el tablero electrnico. El sistema tiene instrucciones que
permiten aadir puntos al score de quien est haciendo la prueba de ajedrez solitario, entre otras cuestiones.

Evidentemente el codificar la partida para que quede en el formato que el programa necesita se hace en un
editor de textos como notepad, pues es un texto sin formato que contiene las instrucciones que el programa
desplegador simplemente interpreta. As entonces, lo que tenemos es un intrprete de comandos de un sistema
basado en guiones, el cual es muy sencillo de programar, con la ventaja de poder aadir nuevas instrucciones
cuando stas se necesitan. Sin embargo, por simplicidad y porque el sistema de ajedrez de esta naturaleza no
lo necesita, no hay ciclos iteractivos, es decir, es un archivo de instrucciones lineal, que se lleva a cabo paso
por paso, lnea por lnea.

Despus de haber codificado cuatro o cinco partidas, empec a fastidiarme en lo repetitivo del asunto y me
pregunt si no habra una manera ms simple de hacer esto. Y ms pronto que tarde me di cuenta que
necesitaba un programa para editar las partidas, para que as, por una parte se minimizaran los errores de dedo
y por otro lado, la tediosa labor de transcripcin fuese ms sencilla.



Imagen 1
Generador de scripts para ajedrez solitario

El sistema generador de partidas de ajedrez solitario es un editor de textos que contiene todas las instrucciones
que el sistema necesita y adems, permite jugar en un tablerito electrnico la partida que se quiere codificar,
de manera que hace fcil y sencilla la labor de codificacin de este tipo de partidas. Cabe sealar que las
instrucciones del sistema tienen una sintaxis muy simple y en la medida de lo posible el programa generador
automatiza cada una de ellas, indicndole al usuario qu debe poner en un momento dado.

Las instrucciones del sistema empiezan con punto y se escriben en la primera columna de cada lnea. Hay
instrucciones para mover las piezas, para regresarlas, para asignar puntuaciones, para hacer preguntas al
ajedrecista (que est haciendo la prueba) en tiempo real, de manera que se le puedan aadir ms puntos si sus
respuestas son correctas.

El generador simplemente entra en un loop (ciclo iteractivo) y lo termina cuando encuentra la instruccin
.end. Cabe destacar que todas las instrucciones del lenguaje de script estn en ingls. La razn es que el
trabajo se hizo para una pgina de ajedrez en Inglaterra (www.improveyourchess.com), y por ende, la
codificacin de las partidas deba ponrselas de manera fcil a los maestros que en Europa iban a codificar las
partidas para el sitio en cuestin. Pero independientemente, la tradicin obliga a que los lenguajes de
programacin, incluso los de scripts, se programen en ingls, pues eso es el estndar y as los que entiendan o
tengan bases de programacin podrn siempre minimizar la curva de aprendizaje.



Ajedrez

Patrones en Ajedrez


Se dice que un maestro fuerte de ajedrez tiene en su cabeza alrededor de 50,000 patrones tpicos que se dan en
el juego. Esto podra explicar por qu un jugador dbil no ve con la misma facilidad una buena jugada que su
contraparte magistral. Es claro que en muchos sentidos las posiciones tienen caractersticas familiares y el
hecho de conocer los detalles tpicos nos dan la pauta para encontrar la jugada correcta en una partida.

Quienes estudien profundamente la tctica ajedrecstica notar que ya muchos autores han hecho la tarea por
uno, es decir, han catalogado por temas las posiciones: sacrificios en h7, clavada, combinaciones de empate
por ahogo, doble ataque, ataque al descubierto, etc. Los temas son muchos pero finitos y en muchos casos las
combinaciones, la tctica en ajedrez, se basa en detalles que describen finalmente una posicin y que por
ende, no hay ni que analizar qu jugada hacer: puestos todos los elementos en su lugar, la combinacin nace
por s misma, casi automticamente. Por eso la recomendacin de estudiar tctica no hay que echarla en saco
roto.

Pues bien, a fines de diciembre, casi para empezar el ao 2002, me atac el virus gripal. Me tir en cama tres
das con sus respectivas noches. Quien haya estado con gripa sabr lo intil de dicha enfermedad. Pareciera
que su nico afn es mantenernos en cama por algn tiempo, aburrindonos con la tele encendida
prcticamente todo el da y sonndonos las narices hasta el hartazgo. Pues bien, en esas condiciones
deplorables, cuando me hartaba de la TV me pona a hojear algunos de los libros de ajedrez que tengo a mi
alrededor. Dentro de uno de ellos, hall una partida que le gan al FM Isidro Daz Lombardo hace algunos
aos. Ah ejecut una bonita combinacin con la que obligu a mi rival a rendirse de inmediato. He aqu la
mencionada posicin crtica:

XIIIIIIIIY
8-+-+-trk+0
7zp-+-wQ-vlp0
6-zp-+-+p+0
5+-tr-+-+-0
4-+-+P+-+0
3zP-+-+-+-0
2-zP-wq-zPPzP0
1tR-+-+RmK-0
xabcdefghy

Daz Lombardo, I Lpez, Manuel
Mxico 1993
Juegan las negras

1. Dxf2!! Y las blancas abandonan, ya que despus de 2.Txf2 Tc1+ y mate a la siguiente.

Dej la papeleta para caer dormido durante algn tiempo. Cuando despert tom otro libro. Se trataba de The
Inner Game of Chess, de A. Soltis. Lo abr en cualquier pgina y me encontr con la siguiente posicin:

XIIIIIIIIY
8-+r+-trk+0
7zpR+-vlpzpp0
6q+-+p+-+0
5+-+-zP-+-0
4-+-zP-+-+0
3+-sN-+Q+-0
2P+-+-+PzP0
1+-+-+R+K0
xabcdefghy

Lee-Sakharov
Campeonato Mundial Juvenil 1963
Juegan las blancas

De pronto ca en la cuenta que era el mismo tema que mi partida contra Daz Lombardo. Despus de 1.Txe7
las negras confiaban en 1. Txc3 especulando con que la dama blanca est defendiendo la torre de f1, pero
las blancas dieron una sorpresa: 2. Dxf7!! Y las negras abandonaron inmediatamente por el inminente mate.

Me pareci curioso encontrar una posicin similar casi por azar. Pero eso no fue todo: Ms tarde hojeaba la
revista holandesa ew in Chess 98/2. Encuentro la partida siguiente en donde, no lo poda creer, se repite la
combinacin de la que estamos hablando:

XIIIIIIIIY
8-+-+-trk+0
7+Q+-+pzpp0
6p+-zp-+-+0
5+-+Pvl-+-0
4P+-+-+-+0
3+-+-+-+-0
2q+r+-+PzP0
1+R+-+RvLK0
xabcdefghy

Barua-Maherramzade
Ubeda (op) 1998
Juegan las negras


El blanco est perdido. Aqu, sin embargo, el conductor de las negras comete un grave error: 1. Txg2?? Y
Barua, ni lerdo ni perezoso contest: 2. Dxf7!! Y las negras se rindieron.

Este pareca en final de la historia. Pero unos das despus de levantarme finalmente de la cama, hall en el
libro del MI Kopec (Mastering Chess), el siguiente diagrama:

XIIIIIIIIY
8-+-+-trk+0
7+-+l+pzpp0
6-+-+-+-+0
5+-zPp+-wq-0
4-+-zPn+-+0
3+-+-+-+-0
2-tr-+-wQPzP0
1tRN+-+RmK-0
xabcdefghy

Mcab-Mullen
Juegan las blancas

Despus de 1.Dxf7!! las negras tienen que rendirse.

Curiosamente, hace poco aqu en la pgina de noticias de ajedrez www.Chessbase.com, Frederic Friedel
public una serie de combinaciones que se dieron en un fuerte torneo en Turqua. Aqu hall la misma
combinacin pero con un nuevo atuendo, es decir, en una posicin totalmente diferente a las ya vistas:

XIIIIIIIIY
8-+q+ktr-+0
7+-+l+p+-0
6-+nzPpwQr+0
5+-+-+-+-0
4-+-+-+-+0
3+N+-+-+R0
2-zPP+-+PzP0
1+-mK-+R+-0
xabcdefghy

Atakisi, U Ruck, R
4th IECC Estanbul, Turqua 2003
Juegan las blancas

Las negras aqu se equivocaron, pues su ltima jugada fue 30. ... Tg4-g6 en lugar de la requerida, 30. ... Tg4-
g8. Y aqu las blancas sorprendieron sin duda a su rival brillantemente: 31. Df7!! Tf7 32. Th8 Tf8 33. T8f8
mate.

Notar el atento lector que el tema se repite. El patrn es el mismo incluso cuando la posicin no lo parece. Si
uno ve decenas de situaciones parecidas, si se le presentan en la prctica, es seguro que hallar la
combinacin ganadora. En muchos sentidos el ajedrez es bsqueda de patrones conocidos. Para
conocerlos entonces hay que ejercitarlos. Es decir, en otras palabras, a trabajar esa visin combinatoria.

La pregunta que surge de todo esto es: se puede programar una computadora para que encuentre los patrones
tpicos? (como los mostrados en este artculo). Sin duda se necesita de un lenguaje que describa el tablero en
las patrones que definan las posiciones ganadoras, y cmo actuar en esos momentos. En ese trabajo me he
involucrado y ya he comenzado con la codificacin de un software especfico que defina patrones y jugadas.
Ajedrez

Patrones en ajedrez II


Veo en http://npr.etri.re.kr/ un programa de computadora que pinta al leo una fotografa.



Esto en realidad no algo nuevo para nosotros. En este mismo libro puede hallarse mi propia versin de dicho
filtro para leo digital. Sin embargo, la gracia del software en cuestin es que pinta de manera imperfecta. Los
investigadores a cargo de este trabajo se han preguntado Cmo es que ser humano hace una pintura? Y a
partir de esto se entra en el fascinante mundo del non-photorealistic rendering, lo cual quiere decir,
generacin de imgenes no fotorrealstas. Las imgenes generadas con este programa nunca se repiten, no son
exactamente iguales, cambian porque el software est diseado a pintar con errores, como los seres humanos.
Fantstico no?

De la misma manera me he preguntado muchas veces cmo es que los jugadores juegan al ajedrez? Ya
sabemos que ningn jugador de carne y huesos usa los algoritmos que las computadoras utilizan en general
para poder jugar. Muchos investigadores de este fenmeno han encontrado que los jugadores de ajedrez no
perciben una posicin como una entidad esttica, sino como una coleccin de acciones potenciales. As,
entonces, esto puede verse como que un jugador humano busca seguir las jugadas ms prometedoras sin
considerar todas las alternativas que existen. Para que esto pueda suceder, el jugador de ajedrez tiene que
evaluar las posibles jugadas y en muchos casos tiene motivos para desechar muchas jugadas, pues no son las
mejores, o al menos no lo parecen. Entonces qu hace? Aparentemente busca esquemas conocidos, patrones
muy especficos, en donde las jugadas correctas son claramente identificadas porque hay una continuacin
que gana o que adquiere una ventaja muy evidente.

A partir de esto se me ocurri que por qu no incorporar estos patrones a los programas de computadora? Si
esto pudiese hacerse, entonces en lugar de que la mquina analizara todas las posibilidades, podran bien
ahorrarse anlisis que no lleva a ningn lado. El problema entonces es cmo generar estos patrones de
manera que una mquina pueda buscar en ellos y llegar a la conclusin de que hay un patrn especfico
aplicable?

Despus de muchos meses meditando sobre el asunto, encontr que se requiere de un lenguaje grfico, que no
slo defina el patrn, la posicin en el tablero, sino tambin la existencia de este anlisis dinmico de qu
pieza ataca a qu pieza/pen, para as llegar a configurar un lenguaje de patrones, que defina de la manera
ms humana posible, cmo es que pensamos en cada posicin de ajedrez. Me tard mucho en llegar a esta
conclusin, porque en mi fuero interno estoy seguro que bien debe haber un lenguaje simblico, algo parecido
al que tiene la geometra analtica, que a travs de ecuaciones puede manipular hiprbolas, parbolas y
elipses. As, para quienes sean avezados en estos temas, les debe quedar claro que y = x habla de una
parbola, con centro en (0,0). Mientras se me ocurra cmo generar dicho lenguaje simblico, me puse a
trabajar sobre esta idea de los patrones de ajedrez y del cmo podra ser til para poder hacer un programa
que jugara al ajedrez y buscara las jugadas ms prometedoras, en primera instancia, buscando patrones
existentes en las posiciones que se estn jugando.

Por ejemplo, considrese el siguiente patrn:

XIIIIIIIIY
8-+r+-+k+0
7zp-+-+p+p0
6-zp-+p+-wQ0
5+-+-+-+-0
4-+q+-+-+0
3+-+-zP-+P0
2P+L+-zPP+0
1+-+-+-mK-0
xabcdefghy

Juegan las blancas

Aqu el patrn es claro: hay mate en cuatro jugadas (empezando por 1.Axh7+). Ntese que en este caso, la
situacin de algunas piezas parece irrelevante (por ejemplo, los peones blancos y el rey blanco). Desde luego
que en algunos casos habr necesidad de observar si es necesario tomar en cuenta otras figuras en el tablero.
Y aunque la idea sera crear un sistema en donde todas estas cuestiones las decidiera el propio software, an
se requiere elaborar mucho ms.

No obstante esto, si consideramos que los jugadores de ajedrez humanos, al analizar esta posicin, bien nos
dirn algo as como esto: mira, el Alfil de c2 amenaza peligrosamente h7, que en realidad est indefenso,
pues slo el rey negro lo protege y en cambio las blancas, adems del alfil, tienen su poderosa dama ubicada
en h6 con doble ataque a dicho pen. Por otra parte, el pen de f7 no est defendido por nadie, por lo que la
combinacin de mate 1.Axh7+ Rh8 2.Ag6+ Rg8 3.Dh7+ Rf8 4.Df7# es posible.

El patrn entonces ser: la amenaza del Alfil blanco a h7. La misma amenaza, pero ahora con la dama blanca
que est en h6, y adems, hacer notar que el pen de negro no slo no est defendido ms que por el rey, sino
que adems, impide el escape del monarca negro del inevitable mate. Esto en mi programa se ve en el
diagrama as:


Ntese que las flechas azules describen las piezas blancas interactuando unas con otras, es decir, cmo se
defienden entre ellas. Las flechas rojas, en cambio, muestran las piezas negras que estn siendo atacadas por
las respectivas piezas blancas. Si quitamos todo lo que sobra, es decir, lo que no interacta con el patrn que
buscamos tendremos el siguiente diagrama definido:
XIIIIIIIIY
8-+-+-+k+0
7+-+-+p+p0
6-+-+-+-wQ0
5+-+-+-+-0
4-+-+-+-+0
3+-+-+-+-0
2-+L+-+-+0
1+-+-+-+-0
xabcdefghy

Y su patrn:






Una vez con esta informacin, bien podemos poner la secuencia de mate u orientar al software para que
entonces slo analice esta posicin especfica, lo cual quitara de tajo todos los anlisis intiles que la
computadora hace cada vez que valora las jugadas en una posicin dada (aunque lo haga muy velozmente,
que conste).

Si se tiene una coleccin de patrones, el problema se reduce a hacer una bsqueda en la base de datos de
patrones y si se encuentra alguno, ya se sabe qu hacer, cmo jugar, cmo actuar en el tablero.


El software en accin

Aunque mi programa es an experimental y no est terminado (no estoy an muy convencido si necesito una
simbologa ms rica, por ejemplo, una pieza en el tablero que sirva simplemente para identificar que una
figura blanca ataca una casilla determinada porque en este caso sera parte de un patrn especfico y
totalmente claro). Igualmente, aunque desde luego que tengo muchos libros e informacin ajedrecstica
acumulada en tantos aos, quizs ya alguien ha hecho una especie de catlogo de patrones de posiciones de
ajedrez. Probablemente los haya para la tctica, pero para la estrategia? No podra generalizarse algo de esta
naturaleza para este tema siempre ms complejo que el clculo de jugadas? Me parece que esta idea tiene sus
virtudes y hay que explorarla ms a fondo.



Imagen 2
El software de anlisis de patrones
Internet

Est conectado a Internet?


Hace quizs ya unos pocos aos, cuando empez la conexin de banda ancha a Internet, contrat con la
empresa Cablevisin su servicio. ste, comparado con su mayor competencia, Infinitum de Telmex, era
mucho ms barato pero como dicen por ah: lo barato sale caro. Y s, porque un par de meses despus de
que tena mi brillante servicio de banda ancha, ste comenz a fallar. Si se iba la seal televisiva de
Cablevisin, fallaba tambin la de Internet. Poco despus, sin importar si la seal de tv por cable funcionaba,
simplemente Internet no se conectaba a ninguna velocidad. La experiencia fue de mal en peor, porque en ese
tiempo (no s ahora, porque despus de esta experiencia no quiero saber ms de ellos), el soporte tcnico de
Cablevisin era poco menos que psimo. No solucionaban nada, lo dejaban a uno en la lnea de atencin a
clientes por tiempo indefinido y cada problema llevaba al menos una semana intentar resolverlo. De hecho,
en alguna ocasin, que reclam porque no tena Internet por horas, quien me atendi en esa empresa me dijo
que anotara cada vez que el cablemdem me desconectara de la red. Obviamente su peticin era un poco
absurda, porque no iba a estar monitoreando la red, minuto a minuto para ver si segua conectado o no.

As, me cambi a Infinitum. Pens en ese entonces, y no me equivoqu, que finalmente hay que irse con el
gigante en el mercado. Telmex, nos guste o no, es una megaempresa y su servicio de Internet de banda ancha
es muy slido, funcional prcticamente todo el tiempo y con un rea de soporte que ninguna otra compaa
que d servicios de Internet puede tener. La realidad es que el servicio de Telfonos de Mxico lo hace muy
bien y no tengo quejas Pero he aqu que un amigo mo me dice que hace un par de das que su conexin a
Infinitum parece estarlo desconectando contnuamente. Le dije que hablara con el proveedor y que le platicara
su problema y entonces aad: si el problema no se ha arreglado an, puedes usar un programa que escrib
para monitorear la conexin a Internet, all por los tiempos en que estaba conectado a Cablevisin. Porque
s, cuando tena mis dificultades con el servicio mencionado, escrib un programa que verificaba minuto a
minuto la conexin con la red de redes. El sistema creaba una bitcora (un archivo de texto), que me
indicaba, al final de la jornada, si hubo desconexin y cunto tiempo efectivo no se tuvo acceso a Internet.

Promet enviarle a mi amigo el software y as lo hice. No obstante que el programa es an funcional, decid
darle una manita de gato al cdigo fuente, corregir un par de situaciones que no me terminaban de gustar y
as, en unas pocas horas he salido con un programa renovado, actualizado, que sigue teniendo la funcionalidad
del original, pero ahora luce una interfaz ms moderna.



Imagen 1
El monitor de Internet midiendo si uno est conectado a la red

Para quienes estn interesados en la parte tcnica, he de decir que saber si uno est conectado a Internet es un
problema que puede resolverse de muchas maneras. La ms fcil, a mi entender, es intentar saber si algn
sitio que comnmente est funcionando en la red de redes est activo o no. Si no lo est, es bastante
probable que lo que est pasando es que estamos desconectados nosotros. Un ejemplo es usar yahoo
(www.yahoo.com) o google (www.google.com), pues ambos sitios siempre estn funcionando. Una vez
elegido el sitio, utilizamos un comando llamado ping, que precisamente me dice si el sitio web est activo.
Para ello, el ping manda una serie de bytes al sitio y ste responde con otra secuencia en milisegundos. Con
ello podemos asegurarnos que estamos o no conectados. Curiosamente, el comando ping, el cual es un
programa originalmente en Unix, no es el acrnimo de Packet InterNet Grouper, sino que, de acuerdo al
autor, le puso ping porque pensaba que haca el mismo ruido que lo que hace un sonar cuando encuentra un
punto de inters en la pantalla del mismo. (La historia completa en http://ftp.arl.mil/~mike/ping.html).
Internet

Mi solucin contra el correo chatarra


Hace unos das empec a recibir una centena de correos en donde se me indicaba que mis mensajes estaban
rebotando, es decir, no llegaban a su destinatario. Se me hizo raro, porque no suelo mandar cientos de
mensajes de correo por da. Lo que descubr entonces fue que un spammer usaba para mandar su propaganda
de medicinas contra la impotencia mi direccin de correo como remitente. Cuando algn destinatario no
exista o rebotaba por la razn que fuere, yo, y no el spammer, reciba los mensajes de error. Llevo as una
semana con cientos de mensajes por da de correos no recibidos o fallidos. Lo peor es que en algunos sitios ya
me bloquearon pues mi direccin es de spam. Vaya, que estoy como boletinado por spammer, aunque claro
est, no es mi culpa. Lo peor del asunto es que no se puede hacer nada para evitar que alguien use una
direccin de correo especfica para usarla como remitente. Esto ocurre porque el protocolo de correo (SMTP -
Simple Mail Transfer Protocol, por sus siglas en ingls), no fue diseado para autentificar al remitente. Y de
hecho, Microsoft est apelando por una iniciativa para cambiar el protocolo de correo y as hacerlo ms
robusto, minimizando el problema del spam.

El spam ha sido considerado ya un problema serio en la red. Para empezar, como el envo de correo
electrnico es gratuito, entonces hay quien se sirve de inmediato con la cuchara grande. Para un usuario de
Internet, mandar mil mensajes o uno solamente es igual, no tiene costo. Cuando la mercadotecnia se dio
cuenta de las posibilidades que esto ofreca para promover sus bienes y servicios, entonces nos inundaron
nuestros buzones virtuales con cuanta basura, desde proponer hacerse rico poniendo una granja de avestruces,
hasta el comprar una estrella y bautizarla como mejor queramos (aunque esto es un fraude porque no se
pueden comprar los nombres de las estrellas). La realidad es que mucho del spam existente bien podra
eliminarse si quienes proveen los servicios de Internet limitaran la cantidad de correos que sus usuarios
pueden mandar. Cuntos correos por da mandar una persona normal en Internet? cincuenta? cien?
mil? Yo creo que mil por da ya es excesivo, pero asumamos que los proveedores del servicio de Internet
limitaran a 1000 mensajes diarios por usuario. Sin duda mucho spam desaparecera, porque estamos hablando
que los spammers mandan miles de mensajes diariamente.

Como el asunto del spam no parece tener una solucin trivial, se han buscado muchas alternativas. Una de
ellas, que se me ocurri a m (aunque no soy el nico), es la de atacar el fuego con fuego. Si reconozco a un
spammer, le mando 1000 correos idnticos, reclamndole su actitud. Obviamente eso slo puede hacerse con
un programa, el cual escrib en el 2004 con las herramientas que en ese entonces tena. Hoy, usando
actualizaciones del software que uso para programar (Delphi), hacer un programa que mande correos
idnticos a una direccin de email es un asunto casi trivial. As que le di una manita de gato al que escrib en
el 2004 y lo actualic. Usando Indy, unos componentes especficos para Internet (que vienen en Delphi), los
cuales estn ms trabajados que en versiones anteriores, ya no he encontrado errores de sockets ni de
sincrona al hacer la conexin a la red de redes, asunto cotidiano con la versin del 2004 (y el cual no saba
cmo resolver).


Imagen 1
Contra el correo chatarra

S que ms de uno dir que con mi solucin slo doy pie a que exista ms spam an. Yo creo que tenemos el
derecho a atacar con las mismas armas a quienes nos atacan, sino pues estamos en desventaja. Pienso que mi
software no ser la solucin final y que quien decida usarlo lo haga de manera responsable y no a todo aquel
que piense que lo spamea, valga la expresin.
Internet

Biomtrica: o es lo que escribes, sino cmo lo escribes.


Los sistemas de cmputo estn en todos lados. Son parte de nuestra vida cotidiana y no se concibe el mundo
moderno sin computadoras, cajeros automticos, telfonos celulares, la red internet, etc. Para que dichos
sistemas sean efectivos, deben de ser seguros, de tal manera que la informacin que posean solamente est
disponible para los usuarios autorizados. La seguridad de los sistemas de cmputo modernos se basa
usualmente en mecanismos de autentificacin a travs de nombres (login) y contraseas (passwords). Algunas
instituciones con informacin muy sensible o importante requieren del uso de tarjetas de identificacin
personalizadas o bien, de terminales especiales.

El mecanismo tradicional de nombres de usuario/contrasea ya no es quizs suficientemente seguro debido
a los ataques constantes de terceros por hacerse de esta informacin para ingresar a sistemas de cmputo de
manera ilegal. Debido a esto, aqu exploramos la posibilidad de incorporar la dinmica del teclado, como una
expresin medible de un usuario de forma tal que ahora no solamente se puede acceder a un sistema con el
nombre y la contrasea correcta, sino adems, midiendo si el usuario escribe su contrasea como acostumbra
hacerlo.

Se sabe, desde hace mucho, que el ritmo al escribir en un teclado es especfico para cada usuario
9
. Este ritmo
depende, desde luego, de las costumbres y prcticas que tenga la persona con el teclado. Quienes usan
frecuentemente mquinas de escribir o teclados de computadora incluso, escriben correctamente sin necesidad
de mirar las teclas. Quienes tienen menos experiencia son ms lentos en su escritura. De esta forma, es
factible pensar que la manera de escribir es una medida biomtrica y que es susceptible de ser analizada e
incorporarla en esquemas de nombre/contrasea, para as autentificar de manera ms slida al usuario que
pretende ingresar en un sistema de cmputo.

El mtodo aqu estudiado tiene que ver con los tiempos que el usuario tarda en oprimir cada tecla de su
contrasea, lo cual forma un perfil biomtrico digital, el cual puede ser analizado y comparado para saber si
se trata del usuario con permisos para ingresar al sistema.


Est en tus manos, en tu cara, en tus ojos

La biomtrica es la medida de las caractersticas fsicas y de comportamiento que nos hace a cada ser humano
nico. A diferencia de los nombres/contraseas de los sistemas de cmputo, ciertas medidas biomtricas no se
pierden, no pueden ser duplicadas o robadas. Pertenecen a cada ser humano en particular. Esto da la
posibilidad de sistemas que sean imposibles de ser violados por terceros de manera ilegal, puesto que la
informacin biomtrica de los usuarios es nica e irrepetible.

Las caractersticas fisiolgicas como pueden ser las huellas digitales, son buenas candidatas para la
identificacin de personas, ya que son nicas para cada ser humano, incluso si se trata de gemelos idnticos.
Ms an, son difciles de copiar sin causar dao severo a la persona. De esta forma, la biomtrica est
ganando popularidad, porque cuando es usada en conjunto con mtodos como contraseas o incluso tarjetas
de identificacin electrnicas, proveen un nivel extra de seguridad. Algunos de los sistemas biomtricos
usados para identificacin humana se basan en la geometra de las manos, patrones trmicos en el rostro, las
venas en la retina, voz y firmas manuscritas. Hoy en da hay algunos dispositivos de reconocimiento
biomtrico en el mercado. Sin embargo, algunas tcnicas usadas por estos mecanismos son fciles de burlar o
bien, son generalmente costosas e invasivas.


9
Benjamin Miller. Vital Signs of Identity. IEEE Spectrum, pp 22-30, 1994
o es lo que escribes, sino cmo lo escribes

La forma en que un usuario escribe en el teclado de la computadora tiene ms de medicin del
comportamiento humano que de caractersticas fisiolgicas. Esto sin embargo, no lo hace ms pobre que una
medida biomtrica tradicional y tiene una gran ventaja: es prcticamente gratuita, pues no se requieren de
dispositivos extras. El nico hardware requerido es el teclado.

La intencin en este caso, se basa en medir los tiempos de retardo que cada usuario en particular tiene al
escribir su contrasea. Una vez realizado esto, se define un perfil digital de cada usuario. As, cuando el
usuario alimenta su contrasea, sta pasa por dos filtros: (a) ver si se trata de la contrasea correcta y (b) si se
cumple con el perfil digital, el cual funciona similarmente a la firma manuscrita que la gente tiene. La medida
de su parecido es la que decide si se da acceso al sistema al usuario en cuestin. Debido a factores que se
explican ms adelante, debe existir un factor de tolerancia para intentar discernir si la contrasea alimentada
al sistema y su perfil, se parecen lo suficiente como para dar acceso a ese usuario particular al sistema.


Caractersticas del sistema

Un perfil digital del teclado se obtiene midiendo los tiempos que el usuario tarda en escribir una tecla y la
siguiente. Algunos autores le denominan a esto tiempos de latencia o retardo. Bajo esta concepcin, lo que se
necesita es un programa que mida primero dichos tiempos de retardo y los guarde, para posteriormente ser
analizados.

El hardware actual de las computadoras permite medir tiempos hasta de milisegundos. Debido a esta
resolucin, es factible entonces medir con relativa precisin los tiempos de retardo entre tecla y tecla
oprimida. En algunos casos es factible incluso medir los ciclos de reloj a travs de instrucciones de bajo nivel
o de ensamblador. De hecho, no importa qu medida se tome, siempre y cuando sea lo suficientemente
precisa. De esta manera, es lo mismo, para efectos prcticos, medir ciclos de reloj de la mquina que
milisegundos. En este caso, se decidi utilizar ciclos de reloj para generar el perfil del usuario.


Los perfiles. Cmo son?

Un perfil digital del teclado se define como el tiempo que tarda un usuario en escribir su clave o contrasea,
permitindole al sistema medir los tiempos de retardo entre tecla y tecla oprimida. Los datos obtenidos
pueden ser analizados a travs de una grfica cartesiana, donde el eje x contiene el nmero de teclas orpimidas
y el eje y los tiempos de retardo de una tecla oprimida a la siguiente. La imagen 1 muestra el perfil del usuario
cuya contrasea es la_morsita.



Imagen 1
Perfil de un usuario cuya contrasea es la_morsita.

Todos los perfiles tienen finalmente una forma de diente de sierra, por la naturaleza discreta de los eventos
dentro del teclado. La magnitud de cada diente de sierra ser mayor en la medida que el usuario tarde ms al
pasar de oprimir una tecla a la siguiente.

Evidentemente los usuarios no escriben de la misma manera, y tardndose estrictamente lo mismo, su
contrasea. Sin embargo, la forma del perfil se mantiene constante. Pruebas empricas demuestran que al
escribir repetidamente una palabra (contrasea), un mismo usuario mantendr constante un mismo perfil.


Anlisis de los perfiles

Existen muchas ideas al respecto de cmo analizar un perfil digital del teclado para as saber si el usuario es el
correcto y no un impostor. Los mtodos van desde la estadstica descriptiva (usando la t de student para
comparar la muestra de un usuario contra la hiptesis (el perfil))
10
hasta aquellos que utilizan redes neurales,
intentando discernir si el tipo de perfil pertenece al que el usuario ha introducido. Sin embargo, lo que parece
evidente es que, considerando el perfil grfico mostrado en la imagen 1, el anlisis debe hacerse directamente,
en una primera aproximacin, sobre las pendientes que dicho perfil tiene. De esta manera se pretende
identificar a un usuario legal de un impostor considerando la analoga del perfil contra una firma manuscrita.

Dicho de otra manera, en un cheque, por ejemplo, el cajero tiene que hacer una validacin de la firma
mostrada en le documento contra la que l tiene en sus registros computarizados. Si la firma le parece que no
coincide visualmente, por lo menos en un buen porcentaje, el cajero rechaza el cheque y no lo paga (o bien,
pide al cobrador ms pruebas de su identidad). De la misma manera puede analizarse el perfil digital de una
contrasea para saber si es lo mismo que el usuario escribi al digitar su contrasea. La comparacin se basa
ms en la forma de la grfica que en otros datos.

As entonces, el anlisis de perfil es un arreglo que muestra las pendientes de la curva diente de sierra del
perfil y compara, pendiente de una tecla a la siguiente, contra la alimentacin de la contrasea por parte del
usuario. En esta primera aproximacin, no estamos siquiera considerando el valor de la pendiente, solamente
si es positiva o negativa. En este sentido, lo interesante es hacer un primer anlisis y descubrir si es lo
suficientemente adecuado para los fines de seguridad que se persiguen.

De esta forma, el perfil digital se convierte en una lista de valores que definen si la pendiente es positiva o
negativa (la pendiente, debido a la naturaleza de la grfica, jams puede ser infinita, es decir, una lnea
vertical). El perfil de la imagen 1 se convierte entonces en: positivo negativo positivo negativo positivo
negativo positivo negativo positivo. Desde luego, si un usuario impostor conoce el mtodo que se est usando
para medir el perfil digital, podra hacer las pausas adecuadas para as acertar al perfil registrado. Sin
embargo, la idea es que el sistema mantiene en secreto la manera de validar un perfil. Sin esta informacin
parece ms difcil que un impostor acceda a un sistema a travs del robo de alguna contrasea.


Factor de Tolerancia

Si le pedimos a un usuario que haga su firma manuscrita un par de veces, observaremos que ambas firmas no
son estrictamente iguales. Sin embargo, hay ciertos elementos que la identifican como escrita por la misma
persona. Ciertas curvas en las letras, cierta fuerza y presin en algunos de los rasgos escritos identifican de
manera general a un usuario verdadero de uno falso.

Con el mismo criterio, aqu necesitamos un factor sobre la comparacin de los perfiles digitales contra los que
el usuario escribe. A este factor le llamamos Tolerancia y lo tomamos como una medida porcentual sobre la
cantidad de pendientes donde se es igual el perfil registrado a la contrasea alimentada. As, este factor va de

10
Fabian Monrose, Michael K. Reiter, Susanne Wetzel. Password Hardening Based on Keystroke
Dynamics. Proceedings of the 6
th
ACM Conference on Computers and Comunications Security, November
1999, pp. 73-82.
0% a 100%. Si nuestro factor de tolerancia es de 80% le estamos diciendo que mientras el sistema no
identifique el 80% de las pendientes correctamente, no se le dar acceso al usuario.

La imagen 2 presenta el intento de un impostor de duplicar el perfil del usuario cuya contrasea es
la_morsita.



Imagen 2
Contrasea alimentada por un impostor (en azul) contra el perfil de la contrasea la_morsita. El
porcentaje de coincidencias es de 39%. El acceso es rechazado.

Aqu el sistema da un porcentaje de acierto de 39%. De esta manera, si el factor de tolerancia es, por ejemplo,
65% (an as bajo), el sistema rechazar a este usuario. La imagen 3, en cambio, muestra al usuario correcto
escribiendo su contrasea. Aqu las coincidencias son del 79% por lo que el usuario tiene acceso al sistema.



Imagen 3
Contrasea alimentada (en azul) por el usuario legal contra el perfil de la contrasea la_morsita. El
porcentaje de coincidencia es de 79% y el acceso es permitido.


Software de demostracin

Todos los anlisis se llevaron a cabo en un programa de demostracin para entender en la prctica la validez
de los perfiles digitales biomtricos del teclado. El sistema est escrito para Windows 98 en adelante en el
lenguaje Delphi 5 (de Borland). La imagen 4 muestra la ventana principal del programa de demostracin:



Imagen 4
Ventana principal del software de demostracin

El sistema contiene una serie de botones que permiten las diferentes acciones de procesamiento y anlisis. A
continuacin la descripcin de los mismos:

Botn Inicializa valores: Limpia el campo de alimentacin de la contrasea y la ltima grfica (y perfil)
alimentado.

Botn Aade password/perfil: permite una vez alimentada una contrasea guardarla en el archivo de
contraseas (passwords.txt), el cual contiene la contrasea alimentada y los nmeros que describen el perfil
de quien aliment ese dato.

Botn Lee perfil: permite graficar cualquiera de los perfiles que se encuentran en el archivo de contraseas.
De esta manera se pueden comparar los valores alimentados contra un perfil determinado.

Botn Ver/esconder grfica: permite al usuario desplegar solamente las grficas que le interesen.

Botn Verificar contrasea: Aqu el sistema comparar la contrasea alimentada contra el perfil que dicha
contrasea tenga. Se miden dos factores, (a) que la contrasea sea la misma y (b) el porcentaje de similitud de
las pendientes del perfil registrado contra el perfil alimentado.

Botn Acerca de...: despliega informacin sobre el autor de este software.

Botn Ayuda: despliega una nueva ventana con la ayuda sobre los botones y comandos del sistema.

Botn Salir: termina la ejecucin de este programa.

Barra deslizable de tolerancia: Permite al usuario definir cunta tolerancia (entre la contrasea de un perfil
y la alimentada por el usuario) debe haber para aceptarla o rechazarla. Por ejemplo, 90% de tolerancia
significa que el usuario debe escribir su contrasea con un mnimo de certeza del 90%, porque de ser menor,
el sistema rechazar esa contrasea por invlida.

Algunas conclusiones preliminares

Para probar que este esquema de perfiles digitales biomtricos basados en el retardo entre teclas puede validar
a usuarios legales de impostores, se necesitan pruebas estadsticas considerando todo gnero de usuarios.
Obviamente, ante la falta de perfiles las conclusiones sobre la bondad de esta idea an estn en tela de juicio.

Sin embargo, podemos concluir que el esquema del anlisis de las pendientes, considerando solamente si son
positivas o negativas da un buen acercamiento a la validez de la idea. Desde luego que es posible generar ms
parmetros de comparacin, as como una incertidumbre de tolerancia, en donde una pendiente, por ejemplo,
comparada contra la del perfil, sea igual en 10%, por ejemplo. De esta manera, se estara incorporando ms
precisin a la comparacin, evitando as que un impostor pudiese, incluso sabiendo el mtodo de verificacin
usado, duplicarlo.

Es evidente que si un usuario legal en un sistema no viene en las condiciones adecuadas para usarlo (enfermo,
drogado, etc.), el sistema podra as evitar que se introdujera al mismo. Esto puede ser interesante en sistemas
de cmputo con informacin muy sensible.

Cabe sealar que las pruebas se hicieron con un teclado estndar de computadora, pero es obvio que el perfil
de un usuario y su contrasea puede ser muy diferente si se usa un teclado de laptop o computadora porttil. A
la fecha no tenemos ninguna respuesta a esta problemtica. Esto quiere decir que el perfil de un usuario a
travs de la dinmica del teclado es susceptible del tipo de teclado que se est usando. Quizs en este caso la
nica manera de soslayar esta dificultad sea subir el nivel de tolerancia sobre el perfil alimentado contra el
que pueda dar el usuario al alimentar la contrasea.

Es nuestra opinin que un sistema basado en contraseas y perfiles dinmicos del teclado pueden incrementar
la seguridad de los sistemas de cmputo. Sin embargo, entendemos que se necesita muchas ms experiencias
prcticas para validar los beneficios de esta idea.


Internet

Cuide a sus hijos


Internet puede ser una herramienta estupenda, pero claramente, como todo lo que hace el ser humano, puede
ser llevada a los extremos. La naturaleza humana parece estar dispuesta a estirar todas las reglas al lmite.
Cuando stas se rompen entonces vienen las consecuencias.

Por ejemplo, es claro que la facilidad para encontrar informacin en Internet, la red de redes, es uno de los
inventos ms notables de nuestra poca. No obstante, debido a la naturaleza pblica y sin censura de la red,
muchas veces hay contenidos para adultos en un sinfn de pginas. Por ello mismo, si hay pequeos en casa, o
preadolescentes, es necesario llevar un control sobre los sitios que visitan y a qu pginas acceden.

Debido a que muchas veces no es posible estar al pendiente de los menores, y considerando los peligros que
ciertos contenidos pueden ser malinterpretados por los pequeos, La Morsa Software Co. decidi poner
manos a la obra, generando annyWare como una posible solucin al problema de control de contenidos en la
red.

NannyWare es un programa que bloquea los sitios que un adulto no quiere que sean vistos por menores u
otras personas. La tecnologa de NannyWare captura las direcciones que se escriben en el navegador Internet
Explorer, sin importar que haya ms de una instancia del mismo, y bloquea cerrando la ventana del
navegador ofensor automticamente.

El sistema analiza cada 15 segundos los programas que estn ejecutndose en la PC y as, si encuentra algn
contenido ofensivo (o declarado as por el usuario), cerrar dichas ventanas de cada navegador en donde
aparezca esa parte de la palabra dentro de la direccin www de internet.

Es posible bloquear direcciones especficas as como aquellas que contengan secciones de palabras. Por
ejemplo, si queremos bloquear las direcciones en donde aparezca la palabra sex, basta con escribir esa
palabra en los URLs a bloquear. El sistema revisar que cuando Internet Explorer se encuentre en un sitio en
donde sex aparece en alguna parte, bloque la ventana cerrndola para no poder ser accedida.

Por ejemplo, supongamos que queremos, por los motivos que sean, bloquear el acceso a www.chesscafe.com,
www,chessbase.com e www.inforchess.com. Como ejemplo ilustrativo, abramos tres instancias de Internet
Explorer. En cada una pngase una de las direcciones web mencionadas. Crrase NannyWare y dgasele que
se quiere bloquear todas las direcciones que tengan la palabra chess. En 15 segundos a ms tardar, esas tres
pginas se cerrarn automticamente.

El sistema, una vez ejecutado, no puede ser eliminado de la memoria, es decir, no se puede cerrar. El usuario
podr notar que no funciona el botn X para cerrar la aplicacin o bien, desde el men de la ventana
principal. No quiere decir que el sistema funcione mal. Se han deshabilitado estas opciones. Se sugiere que el
sistema se cargue siempre desde el arranque de Windows. Esto puede hacerse copiando el programa al
directorio o carpeta: C:\WINDOWS\Men Inicio\Programas\Inicio (considerando que usa Windows 98. Vea
su manual del usuario para hacer este cambio en Windows 2000, XP o Vista).


Imagen 1
annyware, para proteger a los menores

El sistema cuenta con un programa que genera una clave o contrasea para que solamente un usuario
autorizado pueda dar de alta/baja/cambios ligas de Internet (URLs). Dicha clave se guarda en el directorio en
donde fue instalado nannyware y se llama password.txt. El archivo no se puede ver normalmente porque el
propio generador lo pone de modo invisible en la carpeta o directorio en donde se instal, de forma tal que sea
difcil saber cul es la contrasea y as dar de baja el programa y evitar su funcionamiento.

Cabe sealar que en trminos generales, cualquier persona con ciertos conocimientos de cmputo y
particularmente, del sistema operativo, podra cancelar este programa y con ello su posible efectividad. Sin
embargo, considerando que el nivel promedio de los usuarios de la computadora personal carece de
conocimientos al respecto, nannyware puede ser una estupenda herramienta para proteger de contenidos
ofensivos o indeseables en un momento dado.

NannyWare funciona en esta versin slo con navegadores de Microsoft (Internet Explorer). Se est
trabajando para poderlo usar con navegadores como Netscape, Mozilla, Avant Browser y otros.
Internet

Bloqueador del msmessenger


Uno de los problemas que se estn convirtiendo en endmicos en el cmputo actual es el uso y abuso del
mensajero instantneo, en particular el MSN Messenger. Lo he visto instalado en oficinas de gobierno, en las
universidades, en todas partes, pues. Sin duda que da a da millones de mensajes instantneos pasan entre
mquinas y eso, evidentemente, es un extraordinario avance de la comunicacin, ya que los mensajes y
plticas se dan incluso de continente a continente.

Sin embargo, en las oficinas no est an valorada la cantidad de tiempo que se pierde (horas de trabajo, me
refiero), porque la gente est platicando va este programa. En algunas ocasiones, la ayuda de este tipo de
programas para comunicarse incluso en un negocio, es importante, y entiendo que en muchos casos, no es
posible bloquear en una oficina el uso de este programa pues quienes primero brincarn son los que lo usan
para el trabajo mismo. Por supuesto, a quienes que habra que bloquear son a aquellos que de alguna manera
abusan, lo cual en mi opinin, son la mayora.

Una manera de enfrentar el problema es hablar en la oficina con quienes consideramos abusan de este
privilegio del mensajero instantneo. Probablemente la reprimenda caiga mal en quienes la reciben y ante la
eventual amenaza de un despido, se midan ms en el uso del Messenger. Sin embargo, con el tiempo, tales
regaos tienen poca efectividad y a la larga no queda ms remedio que tomar acciones ms severas.



Imagen 1
Logotipo del bloqueador de mensajeros instantneos (cortesa de Juan Lpez)

Obviamente los administradores de las redes locales cuentan con herramientas para bloquear cualquier
programa, pero cuando esto se hace el efecto es general, es decir, todos los usuarios de la red estn
imposibilitados de usar el programa prohibido. As pues, esta solucin no es la mejor. Por ende, se me ocurri
escribir un programa bloqueador de MSN Messenger. El sistema debe instalarse en la mquina del usuario
que usa este programa (es decir, el software trabaja de manera local), de tal forma que cuando quiere entrar a
platicar en lnea, mi programa se da cuenta y cierra inmediatamente la aplicacin. El monitoreo se hace cada
dos segundos y tiene algunas caractersticas que lo hacen difcil de detectar en la computadora, de tal manera,
que si el usuario no es muy avezado en cmputo (incluso algunos con cierta pericia tcnica), lo nico que
notar es que el messenger se ha estropeado e incluso, reinstalndolo, no le permite reiniciar su antigua
prctica de platicar mientras est trabajando
11
.

Desafortunadamente, de acuerdo a mi experiencia, al ser humano muchas veces no se le puede tratar con la
razn, explicndoles el abuso en el que incurren, pues simplemente no hacen caso. Si nos fijamos en el mundo
moderno, las reglas de convivencia casi exigen siempre un castigo o multa a los eventuales infractores a una
regla del sentido comn, que nos beneficia a todos, pero que desde luego, no falta quien quiere sacar ventaja
de ello o se siente ms inteligente que los dems porque hay personas que creen que las reglas son para los
tontos nada ms.

Hay otros mensajeros instantneos en el mercado, con su nicho de usuarios muy bien establecido. Por
ejemplo, los que consideran que Google es una maravilla, usan con alegra Google Talk, y ms an, sus
cuentas de correo estn, desde luego, en GMail. Tambin est Yahoo! Messenger, AOL Instant Messenger e
incluso Skype. Todos ellos son sistemas de chateo, y ste ltimo incluso va voz. La realidad es que la idea de
la comunicacin instantnea va Internet es muy buena, pero el abuso es el que le da al traste completamente.

De esta manera, despus de entender cmo bloquear al MSN Messenger, desarroll todo un sistema
bloqueador de mensajeros instantneos. A la fecha bloquea los mensajeros ya mencionados.


11
Cabe sealar que un usuario ms o menos avezado en cmputo podra hallar la manera de desbloquear el
Messenger. De hecho, se ha intentado esconderlo lo suficiente para que sea difcil de deshabilitar. Este
esquema se llama seguridad por oscuridad, es decir, esconder una aplicacin dentro del sistema y no
indicar cmo est escondida para hacerle difcil de detectar. No es, sin duda, el mejor mtodo, pero para el
problema que nos ocupa resulta bastante acertado el enfoque.

Proyectos varios

Juego de palabras

Veo en la televisin un concurso, en donde se trata de formar palabras. Dichas palabras pueden ser de una
cantidad de letras variables, inicialmente, pero una vez que ya se puso la primera palabra, la longitud de las
siguientes palabras queda fija. El concurso trata de encontrar palabras que empiecen con la primera letra de la
primera inicial, tenga la misma longitud que la palabra original, pero que no se repitan ninguna de las letras en
el orden que estn en la primera palabra.

Por ejemplo, imaginemos jugamos nosotros (por telfono es el concurso), y que la primera palabra (la que se
da inicialmente en la televisin) es

PELOTA

Ahora sabemos que tenemos que formar palabras que empiezan con P, que deben de ser de seis letras, y que
adems, con las siguientes restricciones: ya no puede ponerse en la nueva palabra una E en la segunda letra,
una L en la tercera, una O en la cuarta, una T en la quinta y una A en la ltima letra. Qu palabra
podemos poner? A mi se me ocurre

PASTAS

Entonces si esa es la palabra elegida por el concursante tendremos

PELOTA
PASTAS

Aqu entonces empiezan ms problemas. Ahora la tercera palabra no debe tener ni una A ni una E en la
segunda letra, ni S ni L en la tercera posicin, ni O ni T en la cuarta posicin, ni A, ni Ten la quinta
posicin y tampoco A ni S en la sexta posicin. Las restricciones crecen palabra a palabra. Pensemos en
alguna otra... Por ejemplo PIEDRA, pero no sirve, porque termina en A y ya est en la sexta posicin (en
PELOTA) esa A. Pensemos en alguna otra... PUDRIR. Parece que sta s se puede poner... Veamos

PELOTA
PASTAS
PUDRIR

Y as sucesivamente. El juego como puede verse tiene cada vez ms restricciones y cada vez resulta ms
difcil poner una palabra. Debe llegar el momento en el que ya no se puede poner ninguna. Por cada palabra
puesta, se gana dinero, creo que se va duplicando, as que se puede llegar a un monto interesante.


El software

Hasta aqu el juego. Cuando lo vi pens que sera muy fcil hacer un programa que buscara en un diccionario
las palabras y dadas las restricciones, me fuera diciendo qu palabras sera posible poner. No debe ser un
programa difcil de hacer. pero la cuestin era, de dnde sacara yo un diccionario con muchos trminos para
ser usado? Casualmente ese da, mientras pensaba cmo hacer, me reun con el Gemelo (Jess Ortega,
tambin conocido como Yixus), que ha sido (o es) el campen nacional de Scrabble. La tesis del gemelo fue
precisamente sobre un programa para jugar scrabble y l, por ende, tena un amplio diccionario, el cual, al
platicarle mi idea, comparti para que este programa pudiese hacerse.

Al llegar a mi casa encontr que Jess ya me haba mandado el archivo con 449,305 palabras, casi medio
milln. Nada despreciable... As, puse manos a la obra y en un par de horas hall cmo hacer las bsquedas,
incrementando las restricciones obligadas por el juego.

Desde luego ahora haba que programar las bsquedas lo cual es un interesante ejercicio de programacin,
pues con la seleccin de cada palabra se va limitando el nmero de posibles palabras que pueden ser elegibles.
Tal vez sta fue la parte ms difcil de programar.



Imagen 1
El software en accin


Cmo se usa el software?

Instale el programa corriendo el ejecutable. Este procedimiento es todo automtico y al final tendr un icono
que al darle doble click, ejecuta el software. Encontrar entonces un men muy simple: Juego y Ayuda.
Normalmente puede empezar el juego o bien pedirle que haga un juego nuevo. Coloque la primera palabra en
el casillero que dice

Palabra del concurso

sta es la palabra inicial. Ahora puede decirle al programa, dando click sobre el botn Buscar, que le d una
palabra diferente a la primera, considerando las restricciones que inicialmente se ponen. Consideremos el
ejemplo original, en donde la palabra inicial es

PELOTA

Si le damos buscar, nos dar un montn de palabras... De aqu eleg, por ejemplo, PANZON. As, el juego
queda as:

PELOTA
PANZON

Podemos escribir la palabra en la caja de palabra del juego o bien, marcar la palabra con el ratn y dar doble
click. la palabra pasar a la ventana del juego. Puede verse que el programa encontr 796 palabras que pueden
ponerse ah. Ahora intentemos una segunda bsqueda, que por ende, ser ms restrictiva que la anterior y nos
dar, definitivamente, cada vez menos palabras... Nos da 371 palabras. Eleg PICADO y la puse como la
tercera palabra:

PELOTA
PANZON
PICADO

Sigamos. Una nueva bsqueda y tenemos...170 palabras que puedo poner... Eleg PLACAS...

PELOTA
PANZON
PICADO
PLACAS

Una bsqueda ms y obtenemos ahora slo 36 palabras... Elegimos PORQUE y la pongo en el juego.

PELOTA
PANZON
PICADO
PLACAS
PORQUE

Hacemos una bsqueda ms y slo hallamos 9 palabras... Elijo PRIMER y la coloco en el juego

PELOTA
PANZON
PICADO
PLACAS
PORQUE
PRIMER

Hagamos una bsqueda ms... Genial! el programa encontr dos... Pongo PUERIL...

PELOTA
PANZON
PICADO
PLACAS
PORQUE
PRIMER
PUERIL

Una bsqueda ms no da ms palabras... Pero el sistema nos dio siete palabras y no tuvimos ni que pensar...



Proyectos varios

Mensajes subliminales


Ya en los escritos de Demcrito (400 a.C.) se poda leer: mucho de lo perceptible no es percibido por
nosotros. Platn habl de esta nocin en su escrito Timeo. Aristteles explic de modo ms detallado los
umbrales de la conciencia subliminal en su Perva aturalia hace casi dos mil aos, y parece se el primero en
sugerir que los estmulos no percibidos de modo consciente bien podran afectar los sueos. Hace 2.250 aos
Aristteles explic en su teora del Sueo: Si los impulsos que tienen lugar durante el da no son demasiado
fuertes y poderosos pasan inadvertidos debido a impulsos altamente despiertos. Pero mientras dormimos
tiene lugar lo contrario, entonces los pequeos impulsos parecen grandes. Esto aclara lo que pasa en el
sueo. Cuando slo hay ecos dbiles en sus odos los hombres creen que se trata de algo relampagueante y
extraordinario.

As pues, se denomina percepcin subliminal a la captacin de un estmulo que, por diversas circunstancias,
como baja intensidad, falta de atencin o breve duracin del mismo, no alcanza la representacin consciente
y, sin embargo, determina la conducta de la persona al margen de su voluntad consciente.

En 1957, James Vicary, investigador del mercado norteamericano, demostr el taquistoscopio, mquina que
sirve para proyectar en una pantalla mensajes invisibles que pueden ser captados por el subconsciente.
Durante la proyeccin de una pelcula apareca un fotograma (En el cine se muestran 24 por segundo) con el
siguiente mensaje: Tienes hambre, come palomitas. Tienes sed, bebe coca-cola. El resultado fue asombroso:
La venta de palomitas se dispar un 57.5%, mientras que la de la bebida tan slo un 18%. En 1958, despus
de publicarse el libro de Vance Packard The Hidden Persuaders, los investigadores de la motivacin Ernest
Dichter y Louis Cheskin fueron amonestados pblicamente debido a sus contribuciones cientficas que haban
sostenido los intentos de los publicistas por manipular a las personas.

Hay muchos ejemplos de mensajes subliminales en el cine y la televisin: Uno de ellos es El Exorcista. El
director Friedkin ha empleado tcnicas subliminales visuales y auditivas para reforzar los efectos
emocionales. Por ejemplo, entre los efectos de la banda sonora se incluye el zumbido de un enjambre de
abejas enfurecidas, as como gruidos de cerdos al ser degollados, rugidos de len y maullidos de gatos. Entre
los sub-estmulos visuales, cabe destacar una mscara de la muerte, proyectada en numerosas ocasiones
durante el filme, que ocupaba toda la pantalla. Incluso en pelculas de Walt Disney podemos encontrar
imgenes subliminales. De hecho, la American Life League, de Virginia (EE.UU.) ha denunciado a la Disney
por el empleo de sexo subliminal. Un ejemplo de estimulacin subliminal lo podemos encontrar en El rey
len. La escena transcurre en plena noche, Simba, ya mayor, se encuentra en lo alto de una montaa con el
firmamento repleto de estrellas al fondo. stas se van moviendo hasta que finalmente construyen la palabra
sex. La intencin de esta manipulacin sigue siendo una incgnita.

Independientemente de que sea cierto que es posible influir en el comportamiento y hbitos de las personas a
travs de mensajes subliminales, es evidente que se hace uso de estas tcnicas desde hace muchos aos. No se
necesita ser un genio para darse cuenta que, por ejemplo, en la televisin, los actores y actrices influyen en la
moda cotidiana. Si ciertas estrellas de la farndula usan algunos accesorios, o fuman, o se visten de una
peculiar manera, sin duda alguna su influencia alcanzar a un nicho (pequeo o grande) de la poblacin
expuesta a estos estmulos.

Es posible usar la computadora para generar mensajes subliminales? Sin lugar a dudas. Algunos piensan que
mediante la computadora personal es posible ayudar mediante mensajes subliminales a dejar de fumar, por
ejemplo, enviando letreros alusivos al respecto a la pantalla por muy poco tiempo, tan poco como para que el
consciente no pueda advertirlo. De esta manera se han diseado multitud de programas que precisamente
hacen esto: enviar mensajes muy especficos a la pantalla, por tan poco tiempo que los usuarios simplemente
no lo notan, pero que de ser cierta la teora subliminal, podran estar influyendo en el comportamiento y
hbitos de las personas.




Imagen 1
Pantalla principal del software subliminal

As entonces, se ha decidido investigar si es posible que los mensajes subliminales afecten realmente a los
usuarios en sus comportamientos, modos de ser, hbitos de compra, etc. El sistema permite mandar mensajes
(definidos por el usuario del software) por un tiempo muy pequeo y sin importar en la aplicacin que se
encuentre activa. Para evitar el mal uso de este programa, quizs enviando mensajes no constructivos o poco
benficos, se decidi que el sistema no pudiese esconderse o minimizarse sin que el usuario lo note. Quien
use este programa debe estar consciente de que se le estn aplicando tcnicas subliminales y debe estar de
acuerdo. De no estarlo, simplemente puede cerrar la aplicacin, deshabilitando los mensajes programados.

Proyectos varios

Programando la Palm


Los asistentes personales (PDA, por sus siglas en ingls) son verdaderas computadoras, con un poder de
cmputo francamente espectacular, considerando su pequeo tamao. Caben en la palma de la mano y tienen
una capacidad de memoria y poder de procesamiento mucho mayor que las computadoras a bordo del mdulo
lunar de la nave espacial Apolo. Por ejemplo, una maquinita Palm Zire 71, cuyo costo no es de ms de mil
pesos, tiene dos megas de RAM y corre a ms de 200 Mhz. Es decir, supera en velocidad doscientas veces a
una Apple IIe y tiene veintitantas veces ms memoria que la computadora personal mencionada. Y, que
conste, estoy hablando del modelo barato de Palm. Otros modelos tienen ms de 32 megas de memoria RAM
y corren a 400 Mhz, amn de una pantallita de vivos colores y una coleccin de programas fantsticos para
todo tipo de actividades.

Si usted quiere hacerse de una de estas maquinitas, la recomendacin es irse con el fabricante lder del
mercado. En este caso olvdese de los asistentes personales que no sean compatibles con Palm o con
Windows CE. La realidad es que estas dos plataformas contienen muchsimos programas, cientos de ellos en
la modalidad compartible (shareware) y los hay tambin de dominio pblico o freeware. Cualquier otra
plataforma no compatible limitar mucho su radio de accin por, precisamente, la falta de software.

Pues bien, despus de experimentar un ao completo con la Zire 71, me hice de una Palm Tungsten E, la cual
contiene 32 megas, tarjeta de expansin de memoria, pantalla de color, pilas recargables, adems del clsico
software de respaldo y sincronizacin con la PC. El paquete vena con un disco de regalo, el cual traa seis
juegos, entre los que destacan un juego de tenis en tres dimensiones, un futbol sccer de las mismas
caractersticas y un fascinante juego de carreras de coches que sorprende por su realismo.



Imagen 1
El emulador de la Palm, indispensable cuando se programa este dispositivo

Todo esto en una computadorcita que cabe en la palma de la mano. La verdad sea dicha, compr semejante
artilugio porque vi un programa de ajedrez llamado PocketChess Deluxe, el cual, adems de jugar contra el
contrario humano, tiene integrada una base de datos de partidas de ajedrez en formato PGN (portable game
notation). ste es el estndar que describe la notacin de una partida de ajedrez. Adems, PocketChess
Deluxe contiene el PocketChess Companion for Windows, el cual permite integrar nuevas bases de datos de
partidas a la Palm, de acuerdo a las preferencias del usuario. As, como obsesivo y apasionado del ajedrez,
encontr que este programita, que cuesta 20 dlares, me permite llevar a los torneos mis bases de datos de
aperturas ms usadas sin necesidad de tener que cargar con computadora personal, ms cara y costosa que
estos PDA. Pero lo mejor an estaba por venir. Me sumerg en la red buscando herramientas para programar
la Palm, porque finalmente debe haber manera de crear aplicaciones para este juguete, ya que, de hecho, hay
miles en el mercado.

Hall algunos sistemas comerciales y otros shareware y freeware. Encontr que PocketStudio es la mejor
opcin si sus antecedentes como programador (como son en mi caso) es Delphi. PocketStudio es Delphi para
Palm. Lo malo es que cuesta alrededor de 150 dlares, aunque hay una versin de prueba por 30 das.
Igualmente, encontr PDAToolbox, el cual permite crear aplicaciones de bases de datos en pocos minutos. Es
como una versin superrecortada de un sistema de desarrollo ms completo pero hace muy bien la tarea. El
sistema shareware tiene un par de limitaciones poco importantes. Antes de decidir comprarlo bien puede
echarle un vistazo. Pues bien, usando PDAToolbox dise una demostracin de una base de datos telefnica.
Me llev un par de horas entender la mecnica de desarrollo y hoy, en 20 minutos escasos, gener toda mi
aplicacin.

El cdigo fuente en este caso requiere de PDAToolbox, el ambiente de desarrollo, el cual puede ser bajado de
www.pdatoolbox.com.
Proyectos varios

Es usted honrado? (parte I)


(A diferencia de los otros artculos de este libro, aqu se narra tal y como se public en un medio de
circulacin nacional)

El mundo de la tecnologa casi siempre va de la mano con el de la mercadotecnia. Alguien inventa un
dispositivo X, que resuelve una dificultad Y, y en menos de lo que imaginamos, ya hay un tercero que est
viendo la manera de comercializarlo. Esto se da incluso cuando hablamos de software, que curiosamente, es
algo intangible. Uno compra un programa que nos permite realizar alguna tarea en la computadora. Nos dan
un medio fsico en el cual el programa est almacenado. Lo instalamos y el cdigo al final de cuentas son
ceros y unos en la memoria de la computadora. Pero incluso esto tambin se vende.

Pues bien, con el avance de la electrnica y las telecomunicaciones, ya no es de extraarse ver casi a
cualquiera con un telfono celular o un biper (supongo que se llama as porque hace bip). En un inicio,
hacerse, por ejemplo, de un telfono mvil, significaba tener un contrato por un tiempo determinado, firmar
de aceptado, etc., es decir, el clsico protocolo que aceptan dos partes en cualquier negocio. Eso, en lo que
respecta a la telefona celular, se ha acabado. Ahora hay el plan amigo (y todos esos nombres agradables y
bonitos para cobrarnos), en donde los usuarios de algn servicio de telefona mvil compra tarjetas con
tiempo-aire, de manera tal, que uno solamente tiene acceso a usar el telfono por el tiempo contratado.
Cuando ste se agota, hay que ir a la tienda ms cercana y comprar una nueva tarjeta, la cual nos dar ms
tiempo telefnico.



Imagen 1
El programa generador de IP para telcel


Las tarjetas telefnicas no son ms que un pedazo de papel tamao tarjeta de crdito que tiene un cdigo
que se alimenta al telfono y entonces nos da tiempo aire. Si el cdigo alimentado no es correcto, pues
simplemente no hay manera de usar el telfono. Para evitar que cualquiera copie el cdigo de la tarjeta de
tiempo-aire, ste viene cubierto por una tinta que protege todo el largo nmero. El comprador entonces usa
una moneda para raspar y retirar la tinta y descubrir el cdigo impreso. La idea es genial, sin duda. De esta
manera, todo el control del tiempo-aire de cada telfono celular se lleva a travs de un software que valida, en
la central telefnica, cada cdigo de cada tarjeta y entonces el negocio es redondo.

Sin embargo, una cadena es tan fuerte como su eslabn ms dbil, y el software en este caso es
probablemente, la parte ms susceptible de ser atacada por los bandidos cibernticos. Imaginen entonces que
alguien encuentra la manera en como se generan los cdigos que otorgan tiempo aire y crea un programita
que le da al usuario del mismo, el cdigo legal sin pagar desde luego por ste. Ms de uno dir que esto es
ilegal, pero no es ilegal copiar msica de discos compactos y pasarla a los reproductores de mp3 como el
iPod? O no es ilegal copiar pelculas en DVD? todo el mundo lo hace, o no? O vayamos ms lejos: No es
el costo del telfono celular carsimo en nuestro pas? Noms compare lo que paga cualquiera en Estados
Unidos por ese mismo servicio, quien se horrorizar de saber lo que pagamos aqu. Pero bueno, si le pregunto
a usted, lector, lectora, si es honrado, qu me contestara? Invariablemente que s, o me equivoco?

Pues bien, me encontr hurgando en la red Internet un programa que da tiempo aire gratis, s, gratis! Lo
quiere? le gustara tener tiempo aire sin pagar por l? Mndeme un correo si quiere el programa y le dar
instrucciones de cmo hacerse de l, sin pagar un solo centavo. Finalmente, como alguien me dijo cuado vio
el programa: bueno, es un crimen sin vctimas, verdad?
Proyectos varios

Es usted honrado? (parte II)


Hace unos das (ver artculo anterior), escrib sobre un programa de computadora que generaba las secuencias
necesarias para obtener cdigos, que al ser alimentados en el celular, daban tiempo aire gratis. El software
funcionaba tanto para telfonos mviles de la compaa Telcel y Pegaso. Hubo gente que me lo pidi de
inmediato. Al momento de escribir esto he recibido alrededor de 30 mensajes de gente que no pudo
aguantarse a tan jugosa oferta de hacerse de tiempo para hablar desde su celular sin pagar por ello.

Hoy da, todos aquellos que me pidieron (y que recibieron) el software en cuestin, habrn cado en la cuenta
de que dichos programas son un fraude, porque efectivamente, no pueden generar esos cdigos que las
compaas celulares usan para activar ms tiempo a los usuarios de los telfonos mviles. Lo nico que hace
el programa es un bonito espectculo con visos cientficos (por los letreros que manda cuando ste se ejecuta),
en donde aparentemente est generando la clave correspondiente para abonar, en breves segundos, 200 pesos
de tiempo aire a la cuenta de dicho celular.

La intencin original era mostrar finalmente, que los seres humanos somos capaces de querer obtener
beneficios, sin pagarlos, desde luego, si se nos da la oportunidad. Cuantims, si podemos hacer que todo esto
sea annimo. Dicho en otras palabras: ms de uno habr pensado alguna vez en si hay forma de hacerse de
dinero, quizs de mucho dinero, sin comprometerse. Los Bejaranos e Imaz que rondaron hace un par de aos
por el gobierno capitalino as lo creyeron pero se les pas por alto que los estaban videograbando. Ahumada,
personaje que me sorprendi por sus mltiples negocios en todos los mbitos existentes en este pas, y que
adems, ahora parece ser que lo conocen todos los polticos de Mxico, los hizo caer en este espectacular
gambito, con las consecuencias conocidas en los video-escndalos.



Imagen 1
Un clsico telfono celular

Cuando comentaba con una alumna de la Ibero sobre este programa de claves telefnicas para tiempo aire me
dijo: yo lo quiero, psamelo, si? Pero cuando le dije que eso era hacer trampa, que era literalmente robar,
me contest: es que es muy caro tener telfono celular, aunque es una necesidad. Le dije que no era una
necesidad, tan es as es que yo no uso telfono mvil. Por supuesto que entenda perfectamente su
argumentacin, pero yo solamente me estaba poniendo pesado para hacerle ver lo mal que actuaba insistiendo
en que le pasara semejante software. Al final le aclar el truco para que no se fuese con la idea de que no
quera ayudarla en su economa.

Hubo gente que me escribi dicindome que no tena ningn remordimiento en usar este programa, pues Slim
es el tercer hombre ms rico del mundo y unos pesos ms o menos no le afectarn (argumento falso. Si un
milln de usuarios usa una sola vez este supuesto programa de tiempo-aire gratis, Telmex perdera 200
millones de pesos en un momento), as que no son unos pesos ms o menos. Otro ms, con argumentaciones
similares, no bajo de cerdo a Slim. No se a cuenta de qu esa necesidad de insultarlo, pero en fin, tendr sus
razones.

Sin embargo, entre los que me pidieron el software, hubo un par que me preguntaron si era truco o verdad.
Les confes por correo privado mi estudio estadstico, mi sondeo sobre el tema y mi intencin de mostrar
que todos (me incluyo), podramos ser capaz de estas actitudes totalmente fuera de la ley (calificadas al
menos como robo, en este caso a la compaa celular). Evidentemente no es mi idea moralizar ni decirle a
nadie si hace bien o mal. Cada quien sabr cmo acta y se responsabilizar de sus actos. Cabe destacar que
como el software no funciona, pues no hay crimen que perseguir y eso nos libera de una carga innecesaria a
todos.

Pero lo mejor del asunto fue el mensaje que me envi el Sr. Miguel A. Soto Rivera, de Villahermosa Tabasco.
Lo transcribo tal y como me lo mand: He ledo su artculo y quiero decirle que tiene razn al hablar que
estamos tan acostumbrados a la corrupcin, que no nos asombra ya casi nada; es algo que esta enquistado
ya en nuestra esencia nacional, siempre lo hemos sabido. Pero la diferencia es que ahora salen a la luz los
videos que prueban lo que ya sabamos, y, quin sabe?, a lo mejor maana salen videos tricolores o
blanquiazules. [...] Pero el punto al que quiero llegar, es que yo soy usuario de telfono celular y creo que es
perfectamente posible crear un software para robar tiempo aire a las compaas telefnicas, pero no me
interesa. Tal vez sea tambin un ser corrupto. Algunas veces le he entrado a la mordida por algn
motociclista salvaje con mirada de perro, no lo negar, pero s creo que podemos empezar a dar la batalla a
la corrupcin desde uno mismo, dndole yo mismo el ejemplo a mis hijos que apenas son unos nios,
negndome a pagar mordidas y si cometo alguna falta y es justo, entonces pagar multas exigiendo mi recibo
de la tesorera. Le agradezco su oferta del programa para robar tiempo aire, pero declino en nombre mo y
de mis hijos. Quedo a sus apreciables rdenes. Ojal todos acturamos como el Sr. Soto, al cual felicito por
esa contundente negativa a ser cmplice de un fraude, de un acto ms de corrupcin finalmente.

Debo agradecer enormemente a Enricco Wizard (quien ha fallecido hace un par de aos), creador del
software mencionado.


Postscriptum

Cierto tiempo despus de haber publicado el artculo sobre tiempo aire gratis, recib un correo que deca esto:

Hola morsa:

Nuevamente me pongo en contacto contigo, no pude nisiquiera ingresar a la
liga que anotaste, sin embargo creo que es mejor as, porque no es
correcto llevar a cabo lo que haces, no por algo no das la cara, de
cualquier forma espero que como usuario de Telcel y empledo del mismo,
porque yo trabajo en la programacin de los mismos y estoy en busqueda de
jakers que intentan encontrar la forma de hacer fraude, te recomiendo que
retires tu publicidad si no quieres tener legales con el dueo de mi
empresa (Ing. Slim), ya que para esto me pagan.

Quedo a tus ordenes para cualquier duda.
Te estoy rastreando.

Atentamente

Ing. Sergio Luna

Este seor, el ingeniero Sergio Luna, slo ley la primera parte del artculo o quizs nunca entendi las
explicaciones del mismo.

Esta fue mi contestacin:

Hola, Sergio,

a ver, no entiendo el problema. El programa que menciono es meramente una
broma. No puede generar ningn cdigo ni de telcel, ni de pegaso, ni de
ninguna otra compaa. Te sugiero que leas lo que escrib despus de que
habl del supuesto programa que daba tiempo-aire gratis. Entra a la liga
en mi blog:

http://la-morsa.blogspot.com/2007/03/tiempo-aire-gratis-para-celulares-
las.html

para que veas que todo fue un estudio, un sondeo para saber qu tan
honrada es la gente.

Ahora bien, es extraa tu percepcin porque siempre he dado la cara. Mi
blog tiene mi foto, est mi correo y con gusto te doy mi telfono,
xxxxxxx, por si quieres hablarme y discutimos lo que quieras.

Si tu trabajo es buscar hackers (con h, no j), pues lo celebro, pero yo
no tengo nada que hacer en ese rubro. Soy desde hace muchos aos un
profesional del cmputo (fsico por la UNAM y maestra en inteligencia
artificial, por la Universidad de Essex), y no tengo ni ganas ni tiempo
para buscar hacer trampas o hallar maneras de defraudar a nadie. As que
tu percepcin sobre mi persona est fuera de lugar.

Pero para que veas lo absurdo de todo el asunto, supongamos -en beneficio
de la discusin- que tuviese un programa que me diera tiempo aire gratis.
de verdad crees que lo andara repartiendo gratuitamente y de forma
pblica?

Como sea, me parece lamentable tu amenaza o pseudo amenaza de que me
ests rastreando. De una vez te aviso que no quitar nada de mi blog,
porque no hago nada ilegal, porque tus amenazas legales estn, de nuevo,
fuera de lugar. Quiero saber como de qu me piensas acusar.

En fin, dudo que el ingeniero Slim sea tan tonto como para perder dinero
y tiempo demandndome -no s exactamente cmo- por un mero estudio
estadstico sobre la honradez de los que me leen.

Te reitero que estoy en la mejor disposicin de aclarar tu percepcin
sobre este asunto, que estoy convencido has sacado de proporcin.

saludos
Manuel Lpez Michelone

Finalmente me comuniqu con el ingeniero en cuestin y resolvimos la dificultad cuando termin por
entender que no tena un programa como el crea.
Proyectos varios

Bosquejo de un curso de ruso


Cuando era estudiante de la Facultad de Ciencias, en algn momento decid ir al Centro de Enseanza de
Lenguas Extranjeras (CELE), en la UNAM, para aprender ruso. Mi plan tena como objetivo poder leer quizs
la literatura rusa de ajedrez. No obstante esto, encontr que el lenguaje ruso por s mismo es fascinante.
Estuve seis semestres con el mismo grupo y la misma maestra, la cual sin duda le pona pasin y empeo a su
trabajo. La maestra Svetlana Dougar-Jabon es sin duda un pilar en el departamento del ruso en el CELE y me
alegr saber que an est trabajando ah. La cuestin es que muchos aos despus de estos estudios, decid
que tena que re-empezar, puesto que sin prctica estas cosas suelen olvidarse. As, en algn momento se me
ocurri tomar mi manual de ruso y estudiar por mi cuenta. Sin embargo, despus se me ocurri que mejor
sera regresar al CELE para hacer este estudio de manera formal.



Imagen 1
Pantalla inicial del software

Me apena un poco regresar y decirle a la maestra Svetlana que necesito prcticamente empezar de cero. As
que decid ir al CELE a buscarla con un pretexto: un bosquejo de curso, hecho en la computadora, para el
aprendizaje del idioma ruso. Me bas en lo que el manual que tengo dice, obviamente quitando algunas partes
que en mi opinin, ya salen sobrando, y sali este programita. Es apenas la leccin primera y desde luego, no
est completa. De hecho, he notado que necesito un sistema para poner las partes de gramtica, por ejemplo,
de manera que sea fcil de alimentar, porque como bien sabemos, el ruso usa el alfabeto cirlico, y eso, al
tener que escribir las notas en espaol y ruso, se complica enormemente, o mejor dicho, quita mucho tiempo
de la programacin. Para la cuestin de pronunciacin le peda a Marianna echytalo, exalumna ma en
Sistemas Computacionales, de Ucrania (que a todo esto habla perfectamente espaol y ruso), que me ayudara
con las frases que quiero alimentar al sistema. Para el inicio del software puse la imagen que pueden ver en
este artculo y le agregu una introduccin musical muy rusa (y qu mejor que el tema del inicio del juego
del tetris?).



Imagen 2
Parte de la primera leccin

Tengo otras ideas para incorporar: no slo poner el audio de cmo se pronuncia, sino tambin vdeos de
Marianna, mostrando cmo se pronuncian las palabras, as como la entonacin. La verdad es que es un trabajo
monumental, porque el manual de ruso tiene muchas lecciones, y eso hace complicado el pasarlas todas a un
programa. No obstante, el esfuerzo puede valer la pena, porque incluso uno aprende mucha ms gramtica
cuando tiene que armar cada leccin.

En fin, esto es apenas un bosquejo, pero podra progresar en un curso completo (porque no califica como un
programa de enseanza de ruso an por s mismo.
Proyectos varios

Portafolio para modelos


Todos los nichos de mercado parece que pueden ser atacados desde el mundo del software. Por ejemplo,
tengo una amiga, Isabelle, que es actriz. Ha hecho algunos comerciales y alguna pelcula por ah. S que no se
ha aplicado lo suficiente para desarrollarse en ese campo porque tiene otras actividades y adems, ahora ya es
madre de un nio. Sin embargo, en algunas ocasiones la llaman para que vaya a hacer el casting para un
comercial, por ejemplo. Ah es donde se eligen a los actores y actrices que participarn en el comercial de
marras y muchas veces los productores tienen que hacerle pruebas a muchos de los aspirantes para que
despus, comparando notas, decidan a quin le dan el trabajo.

Prcticamente todos los artistas llevan a estos procesos de casting sus fotos o videos, para que los productores
puedan registrarlos adecuadamente y ya con las imgenes puedan acordarse mejor de quienes aspiran a
conseguir el trabajo en un anuncio publicitario, pelcula, corto, o lo que sea.

A partir de esto se me ocurri que por qu no llevar el portafolio a los productores en disco compacto, de
manera que solamente el productor tendra que poner el ced en su computadora y de inmediato un sistema
automatizado le desplegara toda la informacin del actor o actriz, incluyendo fotos, telfonos, curriculum
vitae, etc.

Le platiqu esto a Isabelle y ella entonces me dio un disco con una sesin de fotos que le hicieron hace algn
tiempo. Son ms de una centena de fotografas en buena resolucin y entonces me puse en campaa.
Obviamente existen algunas soluciones simples, por ejemplo, poner en powerpoint cada imagen con algn
efecto de transicin de una imagen a la que sigue. Sin embargo esto implica que el usuario, es decir, quien va
a ver este portafolio de fotografas tenga instalado el powerpoint. Por ello mismo, pens que la solucin era
crear un archivo ejecutable que hiciese todo. Se podran leer las fotografas del disco y el sistema dara la
opcin de hacerlo automtico o manual. Tambin decid incluir msica de fondo ad hoc para que la
presentacin del portafolios fuese ms atractiva a los sentidos.



Imagen 1
El portafolios de Isabelle
Un problema a resolver era el de las transiciones entre imagen e imagen. Para ello decid que no tena sentido
romperme la cabeza programando las transiciones visuales, sino que podra ver si en Internet ya alguien haba
programado algo por el estilo. Y no me equivoqu: encontr un componente para Delphi que me hace las
transiciones de una fotografa a la siguiente. El componente es muy verstil pues tiene muchos efectos que
pueden usarse de manera muy simple.

Con todos estos elementos a la mano en un par de horas tuve una versin funcional. Limpi los detalles que
no me gustaban. Copi todo a un disco compacto (del tamao de una tarjeta de crdito para que as sea
adems, ms fcil de llevar) y le di la primera versin a Isabelle de su portafolio de modelo. La virtud de mi
enfoque es que cambiando las fotografas y un par de archivos de control, es posible modificar el
comportamiento del programa para hacer otros portafolios, para actores y actrices que andan buscando
trabajo.
Proyectos varios

Sintetizando la voz


La tecnologa casera ofrece muchas posibilidades, algunas inimaginables para la mayora de los usuarios. Esto
ocurre porque i. la ciencia y los avances tecnolgicos son cada vez ms rpidos y ii. el poder actual de los
equipos de cmputo caseros sobrepasa muchas veces las alternativas que se tenan hace apenas un par de
aos. As, si observamos cualquier computadora casera, hallaremos probablemente la multimedia, la cual se
representa a partir de tarjeta de sonido de alta resolucin (mnimo 16 bits en estreo en canales A/D), lector de
DVD, de 24 velocidades, tarjeta de vdeo con 24 millones de colores, etc. Esto representa muchsima ms
tecnologa que lo que se poda conseguir a nivel laboratorio de cualquier prestigiada universidad hace no ms
de diez aos. Los avances son increbles, sin lugar a dudas.

Las computadoras actuales para la casa contienen muchas una tarjeta de sonido SoundBlaster o compatible, es
decir, uno de los pretendidos estndar en esta industria. Sin embargo, en los ltimos aos las computadoras ya
incluyen todos los dispositivos ms populares dentro de la misma tarjeta madre (motherboard). As,
prcticamente cualquier computadora actual contiene una tarjeta de vdeo y otra de audio compatible con el
estndar ms reconocido en su momento.

Hacer un programa que -por ejemplo- lea un texto en viva voz podra depender de si la tarjeta tiene algn
subsistema o interfaz para hacer sntesis de voz. Afortunadamente actualmente la mayora de las tarjetas de
audio tienen esa posibilidad. A partir de esto se me ocurri qu tan difcil sera hacer un programa que leyera
un texto con voz. Puse pues manos a la obra.

Lo primero que pens es que quizs cada fabricante tena su propio driver (manejador) para hacer sntesis
de voz. Si as fuese, evidentemente eso limitara las posibilidades de cualquier software. La idea es tener
compatibilidad con todas las posibles tarjetas de audio, en la medida de lo posible. Encontr la solucin: usar
una biblioteca que sea compatible con Windows y que adems, nos permita acceso a la tarjeta de audio
particular que el usuario tenga disponible. Por ello, se tom la decisin de usar SAPI 5.3, el cual es Speech
Application Program Interface, el cual contiene toda la informacin relevante y necesaria para hacer que la
computadora hable. Dicho de otra manera, gracias a esta biblioteca (que Microsoft incluye en su Windows),
podemos hacer que la computadora lea (por decirlo de alguna manera), a travs de sta, un texto en espaol.
Desafortunadamente, el SAPI 5.3 que Microsoft pone a disposicin de los desarrolladores, el cual es el
manejador del sintetizador de voz, est pensado para el idioma ingls y no para el castellano. Si nosotros
usamos este paquete para pedirle al sistema que lea un texto en formato ASCII, encontraremos que lo dice
como si fuese un gringo leyendo algo en espaol. Con todo respeto, francamente pattico.

En cierto sentido el SAPI 5.3 se convierte en una puntada, en una curiosidad que no usamos mucho. No
obstante, debido a la manera en que est construido este sintetizador, es posible modificarlo (va software),
para que hable en espaol. Microsoft y otras empresas venden sintetizadores con fonemas para otros
lenguajes, incluyendo el espaol mexicano. Desafortunadamente, hay que adquirlos por separado, es decir, no
vienen gratuitamente como el SAPI 5.3 en ingls.

Habiendo decidido esto, comenc a trabajar sobre un programa que permitiera leer un texto en espaol usando
el sintetizador de voz de la tarjeta de sonido, modificndolo de manera que use los fonemas ingleses en su
modo ms espaolizado posible, o bien, usando simplemente el sintetizador que SAPI 5.3 otorga. Esto es un
sistema de demostracin que pretende mostrar cmo se hace la interfaz del usuario, cmo se liga el programa
con el sintetizador de voz y gracias a que se entrega con todo el cdigo fuente, el usuario interesado puede
revisarlo y modificarlo a su antojo.

Para que este software funcione, lo que se hizo fue hacer que los fonemas del ingls se comportaran en la
medida de lo posible como si estuviesen en castellano. Esta tarea fue realizada por Michael Covington y la
explica en su artculo: El Hablador, que apareci en PC Techniques, de feb/mar 1995.

Es importante destacar que la discusin que sigue a continuacin no necesita ser seguida por nadie que quiera
usar el programa. Es de utilidad como una referencia elemental sobre el sintetizador y el cmo se han
manipulado los fonemas. Que sirva como introduccin al tema apasionante de la sntesis de voz.

La pronunciacin de las palabras en espaol es muy fcil de deducir a partir de la manera en que se escriben y
eso hace la tarea mucho ms sencilla. El proceso a seguir contempla los siguientes pasos:

Separar las palabras de la oracin.
Analizar cada palabra y acentuarla adecuadamente (ver la funcin acentua).
Fonetizar la palabra (traducir a fonemas) (ver funcin fonemizas).
Pasar a sonidos que dir el manejador del sintetizador (ver funcin fonetics).

Dada la oracin a decir, primero hay que separar las palabras de la oracin. Esto se hace a partir de la funcin
ExtractWords de la unit StrngTTT. Teniendo cada palabra, el siguiente paso es acentuar adecuadamente cada
palabra. Esta acentuacin es artificial, porque las palabras graves no se deben acentuar si terminan en n, s o
vocal. Sin embargo, para que el programa hable lo ms correctamente espaol, hay que acentuar
ortogrficamente las palabras correspondientes. Por ejemplo, considrese la palabra pelota. No necesita
originalmente acento ortogrfico. As entonces, la palabra pasa a la siguiente etapa del procesamiento como
pelta.

Una vez realizado este paso, el siguiente es el de pasar a fonemas las palabras. Esto quiere decir, transformar
la palabra a los fonemas que la representan. Mucho ojo, esto no son los sonidos que el sintetizador debe decir,
sino que son los smbolos que representan estos sonidos. Por ejemplo, la palabra astillero Al acentuarla para
procesarla adecuadamente, es decir, para que el Monologue la diga de manera correcta, pasa a ser: astillro.
Una vez hecho esto, la funcin fonemiza la convierte en los fonemas correspondientes. Esto quedara as:
astiyro.

Habiendo hecho uso de esta funcin, resta entonces traducir a los sonidos que el SAPI tendr que decir. Estos
tienen una representacin, la cual le dice a SAPI 5.1 qu decir, as como los silencios o aspiraciones que debe
tomar. En este sentido, la palabra astillero se termina por convertir en AasstIYyEHEHDXOW que es
precisamente lo que dice el SAPI. La funcin que hace esto es fonetics.

La siguiente Tabla I (resumida) es la de los fonemas en espaol:


Smbolo Ejemplo Smbolo Ejemplo

P

peso

y

yo, buey, llamar
T tabla w lingista, aureola
K kilmetro, cosa, quince C chico
B burro, vaca m mal
D desde n tener
G gato, guerra N nio
F favor l lado
S ser, cinco, zorro r pero
J junta R perro


Tabla 1
Los fonemas en espaol


Para una descripcin ms completa de la transformacin de los fonemas ingleses al espaol, es necesario
consultar la revista mencionada anteriormente, particularmente en el artculo escrito por Covington.



Cmo se usa el software?

Nos Hablamos (as se llama el programa), requiere de una serie de archivos de Windows, los cuales vienen en
SAPI 5.3. Debido a que ste programa es meramente experimental, Nos Hablamos asume que existe instalado
el SAPI 5.3 para poder hacer uso del sintetizador de voz. Cabe sealar que SAPI hace ms que sntesis de voz.
Tambin puede reconocer palabras, permitir que el usuario dicte por voz a un procesador de palabras, por
ejemplo, o que d instrucciones habladas. Es un sistema que al menos ocupa 150 megas al bajarlo del sitio de
Microsoft.

Sin embargo, tambin es posible solamente instalar los manejadores mnimos para que el sistema funcione.
Para ello, ejecute spchapi.exe, el cual viene incluido en este sistema para que Windows pueda usar la parte de
audio y voz (sin necesidad de instalar todo el SDK). Hay que decir que en Windows Vista el sistema no
funciona. No s las razones pero ya estoy investigando al respecto.

Cmo se Ejecuta os Hablamos?

Una vez habindose asegurado que SAPI 5.1 est instalado, simplemente crrase Nos Hablamos. Si todo sale
bien, aparecer la siguiente imagen (ventana):



Imagen 1
El software ejecutndose


El sistema permite leer un texto completo. Cargue cualquier archivo (modo txt o rtf) y escuche cmo el
sistema lee completo el texto.

El sistema tiene parmetros que pueden ser cambiados, como son si la voz que habla es de hombre o mujer,
as como la velocidad y el volumen de audio de la misma.

Por qu os Hablamos?

La historia tiene algunos aos. En cierto momento, en la vida del autor de este software, esta frase significaba
mucho pues cierta mujer divina me lo deca al despedirnos. os hablamos... me deca... y permita seguir la
liga de la relacin ms adelante. Puede para muchos ser el equivalente al hasta luego, en lugar del adis
pero en mi caso iba ms all. Este software va dedicado precisamente a ella.


Proyectos varios

Son sus empleados productivos?


Si meditamos un poco, veremos que la computadora se ha adueado de muchsimos espacios cotidianos. Se
les encuentra en las casas particulares, en el cuarto de los hijos, en las oficinas, tanto privadas como
gubernamentales. En muchos sentidos la pantalla (el monitor) y el CPU (la computadora), ya son tan comunes
como el telfono. Se les ve en todas partes. Igualmente, si nos adentramos ms en este fenmeno, veremos
que la mayora de los equipos de cmputo casero hacen las labores clsicas de editar textos, consultar bases
de datos, hacer clculos por dems complejos usando una hoja electrnica (como Excel) o bien, realizando
presentaciones multimedia, a travs de los mltiples paquetes que para esto existen.

Sin embargo, hay un programa ms que cada vez se hace ms presente en todos los mbitos: el mensajero
electrnico instantneo, es decir, el programa que permite comunicarnos con otros usuarios de computadoras
a travs de Internet y que, sin nos descuidamos, nos puede quitar muchas horas laborables en simpticas
plticas. Y no es que tenga algo de malo comunicarse con otros usuarios a travs de la gran red, sino que el
problema es que muchas veces nos quitan tiempo valioso para nuestras labores acadmicas o de trabajo. Es
cierto que hay equipos de personas que tienen que comunicarse entre ellos por diferentes razones laborables y
el mensajero es una estupenda solucin. La dificultad comienza cuando se exagera el uso de esta herramienta
y entonces nuestra jornada de trabajo, aunque sigue siendo de 8 horas, se reduce, gracias a las plticas por la
red, en 6 o menos.


Debido a esta problemtica, un buen amigo me sugiri escribir un programa para llevar el control de este
fenmeno. Sonaba realmente como reto interesante y puse manos a la obra. Hall que Windows tiene una
gran biblioteca de funciones (llamada API por aquello de Application Programming Interface), la cual
permite tener acceso a un buen nmero de funciones que normalmente los programadores de aplicaciones
comunes y corrientes no necesitan. Encontr entonces que gracias al API, y usando Delphi como herramienta
de programacin, se puede escribir una rutina que revise qu aplicaciones estn siendo ejecutadas y adems,
cul es la aplicacin activa. De esta manera, el primer paso estaba realizado. Yo ya poda saber cuando
alguien entraba a platicar en el mensajero instantneo de Microsoft (msn Messenger). Acto seguido, le
incorpor unos cronmetros internos para medir el tiempo que el sistema pasa en cada aplicacin activa. En
los sistemas multitareas como Windows, se pueden tener varias aplicaciones (programas) abiertos, aunque
uno solo es el que est activo en la mquina.

As, escrib el cdigo necesario para que cuando un usuario entre a platicar con alguno de sus contactos,
entonces el cronmetro empiece a marcar el tiempo. Si el usuario se sale de esa pltica y se pone a usar otra
aplicacin como Excel, Word, Powerpoint o Photoshop, entonces el sistema medir el tiempo que utiliza cada
una de esas aplicaciones. Si regresa a una pltica, el software entonces regresa al cronmetro del Messenger y
sigue sumando segundos. Al final del da, a una hora determinada, el propio programa puede mandar un
correo al administrador de la red, o al jefe, a quien se desee, que indique cunto tiempo el usuario pas en
cada aplicacin.


S, s que es un programa espantosamente fascista, pero el reto tcnico me anim a hacerlo, adems de
pretender con esto minimizar el tiempo perdido con todas estas plticas intiles pero divertidas. Pensemos que
actualmente nadie en una oficina podra hablar por horas en su tiempo laboral, para platicar con sus amigos y
familiares. Con la red es posible regresar a esta prctica y la verdad es que los empleadores, en algn
momento, tendrn razn para amonestar a quienes abusen de la mensajera instantnea por Internet.

Apndices


Apndice I

Entrevista con Robert Silvers (sin traduccin por aquello de Traductor traidor!).

A 1996 Interview with Silvers:

Q - Was Photomosaics an MIT project or your own project?
A - I created Photomosaics as a class project while a student at the MIT Media Lab. When I graduated, I
turned the idea into a company, called Runaway Technology, designed to create and license them.

Q - What are your computer needs?
A - I use computers such as Silicon Graphics workstations with over 30 GB of disk space and 256MB of
RAM.

Q - I see that the individual pieces of the Photomosaic are related in content to the larger subject. Do
you have a giant-archive of images or did you make an agreement with a stock agency ?
A - I prefer to work with clients that have their own collection of images. When the Library of Congress
wanted me to make a poster for them, they told me that most of the images in their National Digital Archive
were from the American Civil War. So we looked at those images and decided to make a Photomosaic of
Abraham Lincoln. It often works that way -- I see what I have images of and then select an appropriate
subject. When I created the cover of the Stock Market Photo Agencys catalog (American Mosaic), they
provided me with images from their collection of Americans and I made the Statue of Liberty. Likewise,
when I did an ad for Mastercard made from thousands of credit cards, they sent me over 5,000 pieces of
plastic to scan!

Q - How does the software choose the images? Is it only about color and density or do you use a trick
that allows a tile to be better than a pixel.
A - Each tile in a Photomosaic is much more than a pixel. Details in a Photomosaic may be smaller than a tile
and regions within one tile may add to the overall design. A mountain range in one tile, for example, may end
up as an eyebrow on the main subject. It is not simply the color of the tile, or the brightness, but also the
shapes of objects within the tiles. Also, I do not blend an image of the subject with the mosaic. The
Photomosaic forms the subject on its own. My software considers hundreds of aspects of each photograph
during the selection process. The first step is to decide what subject to make, and what types of images to
make it from. I then use a photograph of the main overall subject as a reference, and limit my image database
to tiles of the desired subject. I need far more tiles to consider during the selection process than end up in the
mosaic. This is because I eliminate many that do not have the right qualities. 2,000 is a good start but I prefer
much more. Then, for each grid spot on the mosaic, my software compares all of the available photographs
with that area of the overall subject image. The software tries to pick the tile that is the most visually similar
to that area.

Q - Is it all automatic?
A - There is also a lot of hand work involved. During development, I look at the mosaic up close and remove
tiles where I do not like the content or subject matter. I then view the mosaic from a distance and decide to
remove tiles that visually draw attention to themselves. The Photomosaic is not done until it passes several
iterations of this.

Q - Do you think that this technology could be sold like a normal software?
A - Yes, but for now I prefer to keep my custom tools for myself. I do not want to market software products
because I do not want to create a computer company. I just want to make artwork and I build tools to help do
this.

Q - What do you think is the correct relationship between the dimension of the pieces and the
distance of the viewer?
A - I design a Photomosaic to be viewed from various distances depending on the media in which it will be
reproduced. The more tiles in a Photomosaic the easier it is to see the overall subject up close. If I have very
few tiles you may have to be very far away to see what the subject is. I also must be careful to allow each tile
to be visible. For example, if the Photomosaic were to be used on a postcard I could not use as many tiles as if
it were going to be a poster because if I did each would be too small to see. I like to keep them at least 1cm
wide. A Photomosaic is an image on multiple scales. When viewed from up close one should only see the
individual tiles. When viewed from afar one should only see the main image. Somewhere in between, these
views cross over, so I have to estimate the viewing distance to help decide where this cross over point should
be.

Q - Can you produce the same image with lots of resolutions, or do you produce only one version of the
image and later resize it with a program like Photoshop?
A - After I compute a Photomosaic (decide the location of tiles), I generate the bitmapped file. Over 100,000
images are stored on my Silicon Graphics workstation at various resolutions that allows me to generate the
bitmapped file at different sizes. I try to generate a file the size that I need, or a little larger, then use
Photoshop to fine-tune the size.

Q - Have Photomosaics won any awards?
A - Hewlett Packard won an award using a Photomosaic that I created for them. The mosaic was of an image
of Italy. It won Best of Category for digital printing out of 5,200 entries in the 1997 Premier Print Awards
given by the Printing Industries of America.

Q - Do you have plans for merchandise?
A - There are several lines of Photomosaics merchandise coming out, including a collection of jigsaw puzzles
from Buffalo Games and a series of 10 posters available from Portal Publications. The Library of Congress is
already selling a poster that I made of Abraham Lincoln composed of Civil War photographs from the
Librarys National Digital Archive. Neil Schwartzen of the LOC (202/707-5112) says it is the best selling
poster the Librarys gift store has ever carried.

Q - Does Photomosaics use proprietary technology?
A - Yes. Runaway Technology has applied for a trademark on the word Photomosaics and the whole
process is based on patent-pending technology.

Q - What is your association with the magicians Penn & Teller?
A - When I was still a student at MIT, Penn and Teller came to visit the Media Lab and as soon as I showed
them a sample of output from my newly-developed Photomosaic project, they each had to have one. Penn was
the first person to commission me he wanted me to make an image of a subject too controversial to even
mention here - and wrote me a check on the spot (so I would not use school funding to do something as
trouble-attracting as making the image he requested).

Q - I heard you were commissioned to do a portrait of Bill Gates . How did this happen?
A - After I did the cover for Wired, one of Bill Gates friends approached me to make a portrait of Bill as a
40th birthday gift.

Q - What about Vice President Gore?
A - Al Gore came to visit the Media Lab and I showed him my work. He wanted to know in detail how the
process worked and we brainstormed for about 15 minutes over various ideas before we decided that I would
do one of him.

Q - Finally, tell me more about the ad you did for Mastercard.
A - For Mastercard I made a Photomosaic of George Washingtons face from 5000 Mastercards. 21 million
copies of the ad were printed, and it was shown on TV 425 times.

Apndices

Apndice II

Programa visualizador de los fotomorsaicos

Otra aplicacin de soporte para el software de los fotomorsaicos es un programa desplegador de los mismos,
el cual contempla no slo ver el fotomorsaico creado, sino guardar la imagen creada en un archivo en formato
JPEG.

La siguiente imagen muestra el software visualizador corriendo sobre un archivo de prueba (cuya terminacin
es txt y del cual ya se habl de su estructura en la discusin de la obtencin de los resultados.

Para generar la imagen JPEG el software pide el nombre del archivo de texto creado y entonces lo procesa
directamente en pantalla. Cabe sealar que para poder crear el fotomorsaico el archivo TXT a procesar debe
estar en el mismo directorio donde residan las imgenes ya que stas se leen del disco duro en el momento del
procesamiento de la informacin.



Fragmento de la imagen armada con el visualizador
Figura 23

Una vez generada la imagen, se puede usar la opcin Guardar a disco. Se recomienda usar la extensin
JPEG en las imgenes creadas para evitar confusiones con las de la biblioteca de imgenes (que son todas
JPG).

Notas tcnicas: Desarrollado en Delphi 5, en una mquina Pentium III, con 128 megas de RAM y 6 gigabytes
en disco duro en resolucin de 800x600 pixeles a 16 millones de colores.


Lupa por software

Tambin es posible utilizar un lente magnificador (lupa) escrito por software. El programa toma una imagen
JPEG y se puede magnificar la regin que se desee, de manera tal que puedan analizarse los detalles de cada
fotomorsaico realizado.

El sistema tiene las opciones como iconos. He aqu la funcin de cada icono:

Carga la imagen JPEG de alguna unidad del disco duro

Permite amplificar la imagen (zoom in) poco a poco

Permite alejarse de la imagen (zoom out) poco a poco
Permite incluir/quitar barras de scroll sobre la imagen para moverse a lo largo y ancho de la
misma.
Termina la ejecucin del software

La siguiente imagen muestra este software corriendo.

Figura 24
Lupa por software


Notas tcnicas: Desarrollado en Delphi 5, en una mquina Pentium III, con 128 megas de RAM y 6 gigabytes
en disco duro en resolucin de 800x600 pixeles a 16 millones de colores.

Apndice III

Los programas

El sistema generador de fotoMORSAicos se basa en varios subsistemas, los cuales son:

Generador de fotomorsaicos (versiones para Windows9x y para la interfaz www)
Procesador de la coleccin de imgenes
Programas de estadstica y monitoreo del software
Programas de despliegue de resultados
Programa visualizador de fotomorsaicos
Lupa por software
Bonus (presentaciones animadas)


Generador de fotomorsaicos

Este programa genera el fotomorsaico considerando que ya existe una coleccin de imgenes preprocesadas
de acuerdo con el Procesador de la coleccin de imgenes (vase ms adelante). El generador de
fotomorsaicos toma una fotografa escaneada (cualquier imagen), la cual puede ser BMP o JPG y se elige una
coleccin especfica de imgenes (los mosaicos), ya que el software permite ms de una coleccin. Una vez
seleccionado esto, se elige un nombre para el resultado (archivo de salida), el cual se da como un archivo
HTML (para ser visto de inmediato en el navegador de Internet de su preferencia) o bien TXT, para ser
procesado con el software generador de imgenes.

Para llamar al programa sese la consola de comandos. El sistema tiene opciones que le pedirn:

1. El nombre de la imagen a procesar
2. El directorio en donde reside la coleccin (biblioteca) de imgenes
3. El nombre de archivo de salida. Este ltimo no requiere de extensin porque el generador crea dos
archivos, uno con extensin txt y otro con extensin html.

Una vez generado el archivo de salida se puede crear una imagen usando el programa de despliegue y
creacin de imgenes JPEG o bien, usar el navegador de html de us eleccin para ver el resultado final.

Notas tcnicas: Desarrollado en Delphi 5, en una mquina Pentium III, con 128 megas de RAM y 6 gigabytes
en disco duro en resolucin de 800x600 pixeles a 16 millones de colores.

El generador necesita de la lectura del archivo imagen.idx, el cual se debe guardar (estrictamente necesario)
en el mismo directorio en donde se encuentra la coleccin de imgenes. Una vez teniendo toda la informacin
necesaria el sistema genera un archivo HTML y otro TXT con el fotomorsaico particular.

Ntese que el tiempo necesario para la creacin del fotomorsaico depende de varios factores. A saber:
Velocidad del procesador central (CPU)
Modo de depuracin apagado (no mostrar avance en el desarrollo de la generacin del sistema)

Este modo de depuracin se puede habilitar o inhibir en la medida de las posibilidades. He aqu la imagen del
programa cuando ste es ejecutado (vea siguiente figura)

Figura 20



Procesador de la coleccin de imgenes

Este programa permite generar un archivo que indexa las imgenes a travs de sus colores promedio,
considerando a la imagen toda como si fuese un mosaico de un solo color slido. El Procesador de la
coleccin de imgenes simplemente toma cada imagen JPEG que encuentra en el directorio deseado, la
procesa aplicando un filtro mosaico y entregando el color promedio en tripletas RGB(R,G,B). Guarda adems
el nmero de color de acuerdo a como Windows maneja las tarjetas de vdeo de 24 bits y por ltimo, guarda
el nombre del archivo de la imagen.

El Procesador de la coleccin de imgenes genera entonces un archivo de texto llamado imagen.idx, cuya
estructura ha sido analizada antes. Este archivo es necesario para que el generador pueda trabajar. Una imagen
que muestra dicho software se presenta a continuacin:


Figura 21

Notas tcnicas: Desarrollado en Delphi 5, en una mquina Pentium III, con 128 megas de RAM y 6 gigabytes
en disco duro en resolucin de 800x600 pixeles a 16 millones de colores.


Programa de estadstica y monitoreo del software

Este programa bsicamente mide la cantidad de colores disponibles en la coleccin de imgenes. Es un
sistema muy elemental y solamente fue escrito para encontrar cules colores son los que faltan y cules son
los que se tienen en exceso. El sistema generador de mosaicos puede trabajar sin necesidad de este
subsistema. Es slo una ayuda al programador (y por ende no se incluye en la consola de comandos). Este
programa hace uso del archivo imagen.idx para analizar los colores, los cuales estn dados en 16 rangos (un
milln de colores por rango, aproximadamente). La siguiente figura muestra una imagen del mismo:


Figura 22

As se puede entender por qu el generador no encuentra un determinado color o bien la seleccin resulta a
todas luces ridcula.

También podría gustarte