jueves, octubre 18, 2007

Haciendo trampa con Lógica, sin hacer trampa

Cuando estaba aplicando para venir a Alemania, tenía que demostrar que tenía conocimiento sobre varios temas de Ciencias de la Computación de los que no había cursado materias específicas. Dado que no había una mejor manera, los representantes en Dresden me pidieron que contestara una especie de examen de admisión que cubría muchos de los temas que requerían.
Tenía únicamente un par de días para contestar todo, por lo que si no sabía algo muy importante sería dificil que lo llegara a contestar correctamente a tiempo.
Todo iba bien, hasta que llegué a una pregunta que me detuvo el corazón:

de los siguientes lenguajes formales, de la mínima n tal que el lenguaje está en C_n según la Jerarquía de Chomsky

y seguía una lista de unos veinte lenguajes que incluían joyas como "el lenguaje de todos los programas escritos en BASIC sin usar ciclos" y otros similares.
Me sentí perdido por un momento. En esos tiempos yo no sabía ni siquiera quién demonios era el tal Chomsky, mucho menos conocía su famosa jerarquía. Incluso pensé en dejar en blanco esa pregunta, pero luego me calmé un poco y decidí ver si podía hacer algo. Así que acudí a la fabulosa Wikipedia y analizé qué era la dichosa jerarquía.
Chomsky simplemente dividió los lenguajes formales en cuatro clases distintas, cada clase más específica mientras se sube en la jerarquía. Entonces ya sabía qué era qué, pero todavía no podía dar la respuesta.
Y esa respuesta se veía muy dificil. Por ejemplo, para saber que algo está en C_2, pero no en C_3, hay que demostrar que el lenguaje no se puede representar por medio de ningún autómata finito - es decir, que no es un lenguaje regular.
Pensé y pensé por un rato; ¿qué iba a hacer con eso? Yo no sabía nada de teoría de autómatas, muy poco de máquinas de Turing formales y aún menos sobre lenguajes como "programas en BASIC sin ciclos".
Y de pronto me empecé a reír. ¡No podía creer mi suerte! Esto no podía ser cierto. Leí y releí la pregunta, pues estaba seguro que ya estaba halucinando, pero no, así estaba escrita.
Recordemos, la pregunta dice: "encuentre la menor n...", mientras que sabemos que C_0 es la categoría más general de la jerarquía. Así que con unas tres líneas di la respuesta para los veinte lenguajes:
para todos los lenguajes en la lista n=0 es la respuesta correcta, dado que todos ellos pertenecen a C_0 al ser lenguajes formales [...]

Así que la lógica me ayudó a hacer trampa para aplicar a la maestría en Lógica Computacional. No sé si la pregunta fue hecha así a propósito o no, lo único que sé es que fui aceptado y aquí estoy, escribiendo sobre teorías que a pocos les interesan.

No hay comentarios.: