miércoles, 5 de junio de 2013

La recursividad en la generación de formas

El siguiente texto lo presenté en enero de 1980 en el 1er seminario "Forma y Criterio" organizado por la Facultad de Ciencias Geológicas de la Universidad Complutense. Que yo sepa, ni se publicaron las actas de ese seminario (quizás por culpa de mi texto) ni se convocó un 2º seminario.

La recursividad en la generación de formas

Quien quiera ser en solo un día un entendido,
La jeri (aprenderá) gonza del tema:
Gramática generativa, recursivo,
Sintagma, perceptrón, autómata, plerema.

Estos versos, que no son de Quevedo, ponen de manifiesto unas pocas palabras cuyo contenido no tiene nada de particular, pero que, dichas ante un público poco prevenido, son de gran impacto y relumbrón.

Inevitablemente, como ocurrió con los neologismos introducidos por Góngora, también estas palabras pasarán a formar parte del lenguaje nuestro de cada día. El objetivo de este artículo es acelerar el proceso de asimilación de al menos alguna de ellas por parte del lector, contribuyendo así, si no al progreso de las ciencias, si, al menos, a aumentar el número de los entendidos.


Definiciones recursivas

Veamos, para comenzar, una definición simplemente enumerativa:

Dígito no nulo =
             
La forma de escribir la definición es importante, y puede complicarse "ad libitum" cambiando de vez en cuando algunos signos.

En vez del signo =  puede ponerse :=  o incluso ::=. En todo caso, significa que la definición de lo que hay delante es lo que viene detrás.   

Los signos "mayor que" y "menor que", que también pueden ser sustituidos por unas comillas o por un par de grafismos cualesquiera (a ser posible, simétricos) indican que lo que hay dentro es un "elemento terminal", que no necesita por tanto de mayor definición (el guarismo 3, y no el concepto "tres", es el que es un dígito no nulo).     

El signo |, que puede inclinarse a derechas o izquierdas (/ o \) como una idea política, sin cambiar de contenido, significa simplemente "o" (conjunción disyuntiva, no valor nulo).

Así, la definición anterior significa que un dígito no nulo es un 1, o un 2, o un 3, etc.

Una definición que aún no es recursiva,  pero que tampoco es simplemente enumerativa, ya que recurre a conceptos previamente definidos, puede ser la siguiente:

           
(Obsérvese la rara astucia de cruzar el cero con una barra para que no se confunda con la conjunción disyuntiva)

Y por fin, teniendo en cuenta que un punto (.) significa "seguido de" (por aquello del "punto y seguido", es de suponer), he aquí una definición recursiva:

            Número natural = Dígito no nulo|Número natural.Dígito   

Como puede verse, en una definición recursiva aparece el propio concepto que se quiere definir, pareciendo un círculo vicioso. Pero no lo es: se trata de un círculo perfectamente honesto.

En efecto, para comprobar si algo, que parece un número natural, lo es realmente o no, se examina en primer lugar si se trata simplemente de un dígito no nulo. Si lo es, es que efectivamente se trata de un número natural. Si no lo es, habrá que examinar si al final hay un dígito. Si no lo hay (o no hay final), no es un número natural. Si lo hay, habrá que tacharlo y examinar si lo que queda es un número natural, para lo cual habrá que repetir todo el proceso descrito una y otra vez hasta llegar a la conclusión que corresponda.

Esto es humanamente factible, pero también podría hacerse automáticamente, mediante un ... "autómata".

Inversamente, con o sin "autómata", las definiciones dadas permiten generar cualquier número natural: Se coge un dígito no nulo cualquiera, se le añaden uno tras otro tantos dígitos como se quiera, y el resultado generado será siempre un número natural ("gramática generativa").


Operaciones reiterativas

Dado un octógono,
podemos definir sobre él la siguiente operación: " Sustituir los vértices del octógono por nuevos octógonos adosados"

Sobre la figura resultante podemos volver a aplicar la misma operación, sustituyendo los vértices de cada octógono por octógonos adosados.
y, reiterativamente, una y otra vez más


Los resultados de aplicar una operación reiterativa, como esta, equivalen a una definición recursiva. Cualquiera de las figuras generadas así está incluida en la siguiente definición:

Figura = octógono|resultado de sustituir los vértices de los octógonos de la figura por octógonos adosados

O, mejor, si representamos mediante el operador *( ) el hecho de sustituir los vértices ...etc, tendremos:

            Figura = Octógono|*(Figura)

Otros ejemplos de procesos reiterativos pueden ser:

            Cristal = Átomo|Cristal.Átomo
            Cuadro = Pincelada|Cuadro.Pincelada

Definiciones recursivas en las que están incluidos todos los cristales que estudia la cristalografía y todos los cuadros que hayan sido realizados utilizando un pincel.

Pero... por desgracia, no están solo incluidos los cristales y las obras de arte, En esas definiciones están incluidos todos los cuerpos, cristalinos o amorfos, y todo lo que esté hecho con pincel, arte o no arte. Para que el resultado de añadir un átomo a un cristal o de añadir una pincelada a un cuadro siga siendo un cristal o una obra de arte, hace falta que el átomo y la pincelada sean añadidos de una forma especial.

La diferencia entre ambos casos estriba en que al añadir cada átomo individual podemos decir inmediatamente si el resultado sigue siendo un cristal o no, mientras que el que una pincelada esté "bien colocada" o no, no depende solo de las anteriores, sino también de las siguientes (posiblemente, de todo el cuadro).

En el caso del cristal, en vez del punto ("seguido de") podremos poner otro símbolo (por ejemplo, + ), para indicar que el átomo se sitúa en un sitio preciso (uno de los muchos millones de sitios precisos, pero no cualquier sitio):

            Cristal = Átomo|Cristal+Átomo

En cuanto al caso de la pintura, veamos un ejemplo más concreto y, por tanto, más claro.


Pintura modular

Todos los cuadros de Barbadillo están construidos utilizando los cuatro módulos siguientes:


junto con sus giros, simétricos y complementarios.

Con cuatro módulos construye un "macromódulo",  por ejemplo:


Y, en los casos más simples, con un macromódulo, sus giros, simétricos y/o complementarios, construye sus cuadros:


Si hacemos las siguientes definiciones:

N = operación que convierte las zonas negras de un elemento en blancas, y viceversa
G = operación que consiste en girar un elemento 90º en el sentido de las agujas del reloj
S = operación que consiste en realizar la simetría especular de un elemento
O = operación entre dos elementos cuyo resultado es la superposición de ambos (para que una zona sea negra en el resultado, basta con que lo sea en uno de los dos)
C = operación sobre cuatro elementos que consiste en adosarlos (dos arriba y dos abajo), formando un nuevo cuadrado          

Podríamos definir un cuadro modular como:

Cuadro =
 |N(Cuadro)| G(Cuadro)|S(Cuadro)|O(Cuadro, Cuadro)|C(Cuadro,Cuadro,Cuadro,Cuadro)

En esta definición están incluidos todos los cuadros de Barbadillo, pero, al igual que en el caso más general de las pinceladas, también están infinidad de cuadros que ni a Barbadillo ni a ningún otro artista interesarán jamás.

Hemos visto que en el caso del cristal había un proceso de selección, átomo a átomo, por el que, si un átomo no estaba bien colocado, el resultado dejaba de ser un cristal.

La pista sobre el momento en que Barbadillo hace las selecciones (y esto no quiere decir que siempre sean conscientes) nos la dan las palabras "módulo", "macromódulo" y "cuadro", que hemos empleado al describir su obra, aparte de que nunca utiliza la operación O (ni otras más que podríamos haber definido en un caso general).

Si llamamos "micromódulos" a los elementos terminales, tendremos:

            Micromódulo = 

La primera selección, a nivel de micromódulo, y que Barbadillo no hace explícitamente, ya que parte directamente de sus módulos, consiste en que para construirlos solo hacen falta los dos primeros.

 Módulo = Micromódulo|G(Módulo)|S(Módulo)|N(Módulo)|C(Módulo,Módulo,Módulo,Módulo)

Aquí la selección es explícita, solo utiliza los cuatro módulos indicados.
.
Macromódulo = Módulo|G(Macromódulo)|S(Macromódulo)|N(Macromódulo)| C(Macromódulo,Macromódulo,Macromódulo,Macromódulo)

A nivel de macromódulo, uno de los criterios más evidentes, utilizados por Barbadillo, consiste en que las figuras formadas por los espacios blancos y negros pueden quedar "interrumpidas" por los bordes del macromódulo, pero dentro de él deben tener una cierta "continuidad". (ver ejemplos).

            Cuadro = C(Macromódulo,Macromódulo,Macromódulo,Macromódulo)

A nivel de cuadro, aunque también es importante el criterio de "continuidad", no se aplica tan estrictamente como en el nivel anterior, siendo sin embargo importantes los criterios de "simetría" (en sentido muy general) que no se tiene en cuenta en los macromódulos (aunque en el del ejemplo si la hay).

La diferencia, que quería hacer notar, con el caso del cristal es que el criterio de selección es allí único (por lo que basta una sola definición para todo el cristal), mientras que aquí los criterios varían en cada paso. Además se puede aplicar el criterio átomo a átomo, y aquí no: puede haber pasos intermedios, por ejemplo:


necesarios para un paso posterior :

y que, por si mismos, habrían sido rechazados.


Un ejemplo literario

Análogamente al caso de la pintura, podríamos definir una obra literaria (prescindiendo, por simplicidad, de espacios blancos, signos de puntuación, etc) como

            Obra literaria = Letra|Obra literaria.Letra

Y por las mismas razones que en el caso de la pintura, tiene más sentido subdividir esta definición en varias, seguidas de selecciones:

            A1 = Letra =  "A"|"B"|"C"|"Ç"|"D"|"E"|...
            Selección 1 (letras del alfabeto castellano)
            A2 = Sílaba = A1|A2.A1
            Selección 2 (sílabas pronunciables en castellano)
            A3 = Palabra = A2|A3.A2
            Selección 3 (palabras castellanas)
            A4 = Frase = A3|A4.A3
            Selección 4
            A5 = Párrafo = A4|A5.A4
            Selección 5
            A6 = Capítulo = A5|A6.A5
            Selección 6
            A7 = Novela = A6|A7.A6
            Selección 7

O bien, si entendemos por Si una función que selecciona los resultados del paso anterior:

            A1 =  "A"|"B"|"C"|"Ç"|"D"|"E"|...
            Ai+1 = Si(Ai)|Ai+1.Si(Ai)     (i=1,2,3,4,5,6)
            Novela = S7(A7)

Esta última forma muestra que el proceso de generación-selección es en sí un proceso reiterativo (la misma fórmula nos sirve para seis pasos sucesivos) y dado que, como hemos visto, un proceso reiterativo equivale a una definición recursiva, podríamos decir que un proceso creativo puede representarse mediante una definición superrecursiva (definición recursiva en la que los elementos con los que se trabaja son a su vez definiciones recursivas).


Conclusión

Dejo al lector que haga por su cuenta definiciones recursivas aplicables a la generación de una obra musical. Supongo que la palabra objeto de este artículo ya no tiene secretos para él. No obstante, y aunque su definición sea tan completa y correcta que incluya la Novena Sinfonía de Beethoven, es conveniente que recuerde que lo importante no es la definición recursiva, sino los criterios de selección.

Por otra parte, si no consigue hacerlo, ello es debido tan solo a que los ejemplos dados (empezando por el que parece tan simple, del cristal), por simplicidad, no son del todo correctos.   



No hay comentarios:

Publicar un comentario