III.6 Sistemas Evolutivos de
Lenguajes
de Trayectoria
Fernando
Galindo Soria*
Resumen
En este trabajo se presenta un proceso para construir Sistemas Evolutivos basados en lenguajes de trayectoria, donde un Lenguaje de Trayectoria se puede ver como un conjunto de oraciones que representan la trayectoria entre dos puntos.
Este concepto generaliza la idea de lenguaje, ya que prácticamente todos los elementos de los lenguajes tradicionales (escrito, hablado) se pueden tratar como una secuencia de trayectorias (por ejemplo, una letra es el resultado de la trayectoria que sigue la pluma de un punto a otro) y por otro lado existen una multitud de fenómenos que vemos como una trayectoria, por ejemplo, el movimiento de un brazo humano o mecánico, el recorrido por una ciudad, un movimiento de ajedrez, el movimiento de los planetas, la danza de las abejas, la estructura de una casa, la relación entre los componentes químicos de una sustancia, etc.
I Conceptos Generales
1 Sistemas Evolutivos
Cuando se involucra la Informática en algún área de estudio, las
aplicaciones y los problemas a resolver al principio son relativamente
sencillos y han sido atacados y resueltos de muchas formas previamente, sin
embargo, conforme pasa el tiempo los problemas se van complicando y son cada
vez más difíciles de resolver,
hasta que llega
un punto en
el que la relación de
* Fernando Galindo Soria VI. escribió este trabajo en 1989 cuando era investigador invitado del Centro Nacional de Investigación y Desarrollo Tecnológico (CENIDET-DGIT) en Cuernavaca, Mor., lo presentó como ponencia y publicó por la Ed. Limusa en las memorias de la VI Reunión Nacional de Inteligencia Artificial, en Querétaro, Qro., en Junio de 1989
la Informática-Área de Conocimiento se enfrenta a problemas nuevos y para los cuales no existen soluciones previas, esta situación se empieza a presentar cada vez más en las áreas con mayor tiempo de interacción con la Informática o en las áreas en las que no existen algoritmos o métodos de solución de problemas ya establecidos. Lo anterior ha ocasionado que se cuestione cada vez más los métodos tradicionales de la informática, en los cuales el informático (desarrollador de sistemas, Ingeniero de Software, Ingeniero de Conocimientos, etc.) analiza un problema y propone una solución en términos de un conjunto de reglas que al aplicarse permiten resolver el problema (método deductivo de programación), ya que cada vez es más difícil encontrar precisamente esas reglas, por lo que, desde hace varios años se han desarrollado nuevos enfoques basados en la idea de contar con herramientas que permitan resolver los problemas de la informática sin necesidad de tener en forma explícita el método de solución.
Dentro de estas herramientas se cuenta principalmente con los Sistemas Evolutivos, capaces de interactuar con su ambiente y crear imágenes de ese ambiente, detectando e integrando en forma automática en la imagen los mecanismos y reglas generales que permiten resolver los problemas que se le plantean.
En este trabajo se plantea
la construcción de un Sistema Evolutivo orientado a reconocer lenguajes de
trayectoria y a encontrar los patrones o reglas generales representadas por las
trayectorias específicas.
2 Familias Lingüísticas
Tradicionalmente en el área de la informática el concepto de lenguaje
esta muy restringido y por lo común o se piensa en lenguajes muy especificas
(tipo FORTAN, PASCAL. PROLOG. JCL, QUERY, etc.) o si bien nos va, en términos
de “lenguaje natural restringido”, con lo que se quiere indicar algún
subconjunto del Español escrito, sin embargo el concepto de lenguaje es mucho
más amplio, ya que cualquier mecanismo en el que se encuentre un conjunto de
elementos (alfabeto) sobre los que se pueda aplicar un conjunto de reglas para
relacionarlos (sintaxis) y asociarle un significado (semántica) se puede decir
que cuenta con un lenguaje y en su momento pueden existir lenguajes de
múltiples tipos: natural, escrito, simbólico, hablado, visual, etc., con lo
que, el universo de posibles mecanismos de comunicación es enorme y no es
conveniente restringirse únicamente a lenguajes tradicionales (menú,
ensamblador, pseudocodigo, natural restringido, etc.) si existe algún otro
lenguaje más adecuado.
Dentro del proceso de desarrollo de los sistemas evolutivos se ha detectado que en su momento la construcción del sistema se puede facilitar si se toma en cuenta las características del lenguaje que se maneja en el campo problema.
En particular, se han encontrado dos grandes Familias Lingüísticas, con la característica de que prácticamente cualquier problema utiliza alguna de estas familias o una combinación de ellas, en la primera familia tenemos lo que tradicionalmente se engloba como lenguajes e incluye los Lenguajes Imperativos formados por oraciones en las que se plantea algún requerimiento sobre el sistema, Lenguajes Declarativos, los cuales se centran en el planteamiento de hechos o reglas de inferencia y los Lenguajes Interrogativos mediante los que se plantean preguntas sobre el sistema.
La segunda familia lingüística engloba lo que se conoce como Lenguajes de Trayectoria en los cuales se incluyen todos los lenguajes visuales (gráficas, movimiento, jugadas en un tablero de ajedrez, movimiento de un robot, etc.) y cualquier otro lenguaje que se pueda representar por una trayectoria (sonido, recorrido por una ciudad, etc.).
3 Lenguajes de Trayectoria
Normalmente estamos acostumbrados a manejar el concepto de lenguaje como sinónimo de lenguaje natural escrito o hablado y si nos fuerzan mucho podemos aceptar la idea de lenguaje de señas o movimientos, sin embargo, atrás de todos estos tipos de lenguajes podemos encontrar un concepto más general que los incluye y generaliza conocido como Lenguajes de Trayectoria.
Un lenguaje de trayectoria se puede conceptualizar como un conjunto de oraciones que representan la trayectoria espacial o temporal entre dos puntos para lo cual en lugar de lexemas o fonemas utiliza como unidades básicas símbolos que representan trayectorias.
Esta idea generaliza el concepto de lenguaje, ya que prácticamente todos los elementos de los lenguajes tradicionales (natural escrito y hablado, señas, etc.) se pueden ver como una combinación de trayectorias ya que al final de cuentas lo que se representa mediante una letra es el resultado de la trayectoria que sigue la pluma de un punto a otro o lo que se escucha como un fonema es la abstracción de la trayectoria que sigue una onda sinusoidal y por otro lado existen múltiples fenómenos que captamos como resultado de una trayectoria en una, dos o más dimensiones (el movimiento de los planetas, el movimiento de un pie, el paso del tiempo, el crecimiento de una célula, etc.), por lo que en su momento a todos estos fenómenos se les puede asociar un lenguaje de trayectoria y podemos postular que prácticamente cuando se capta algún fenómeno en primera instancia estamos captando oraciones de algún lenguaje de trayectoria las cuales al ser absorbidas y procesadas por nuestros sentidos son integradas mediante un patrón general al cual se le asocia algún tipo de significado, por ejemplo, al ver la letra A en principio captamos una trayectoria a la cual se le asocia un símbolo (A, abstracto) y un significado (vocal A mayúscula, primera letra del alfabeto, etc.); sin embargo algún otro símbolo, como por ejemplo, no tiene asociado un símbolo abstracto y mucho menos un significado, por lo que simplemente lo vemos como una línea quebrada (o sea que lo vemos como una trayectoria), así mismo, cuando escuchamos un sonido, lo podemos conceptualizar como algo con significado, si es un sonido conocido o podemos decir simplemente que fue un ruido, sin embargo en cualquier caso lo captamos como una trayectoria sinusoidal.
En este trabajo se postula que si se logra encontrar el lenguaje de trayectoria asociado con algún área problema, entonces es factible construir un mecanismo que permita reconocer los patrones de comportamiento y solución de esa área problema. Por ejemplo, en el caso de lenguaje natural escrito las letras se pueden distinguir entre sí porque tienen un patrón de trayectoria diferente unas de otras, en el caso de los sonidos se tienen también trayectorias diferentes para sonidos diferentes, en el caso del movimiento de un brazo, el movimiento de la cola de un perro o el baile de una abeja se tienen nuevamente patrones de comportamiento con significados muy precisos.
4 Ejemplos de Lenguajes de Trayectoria
Estamos tan acostumbrados a integrar patrones generales a partir de fenómenos específicos que nos es difícil conceptualizar en primera instancia la representación de estos fenómenos como una trayectoria, por lo que, a continuación se presentan unos ejemplos de fenómenos asociados con lenguajes de trayectoria:
1) En visión. La imagen a reconocer, la cual por ejemplo, se puede
transformar en una oración tradicional mediante la aplicación de las técnicas
de primeros vecinos y números de forma.
2) Juegos de tableros. En este caso la trayectoria de la pieza en el
tablero se puede ver como una imagen visual y por tanto aplicarle las herramientas
de visión.
3) Características espaciales. En este caso se pretende representar conceptos no tangibles como arriba, abajo. al lado, etc. Por lo que se requiere la confluencia de varios mecanismos de captación de información (visual, espacial, escrita, etc.) y su integración en una sola oración.
4) Características Temporales. Se pueden integrar en una sola oración eventos ocurridos en diferentes tiempos (introduciendo un operador temporal ) y captar por ejemplo cambios lógicos en un sistema (por ejemplo, una secuencia de dibujos animados).
5) Trayectorias Temporales. El movimiento de un objeto se puede
representar como una trayectoria en el tiempo en la cual a cada posición del
objeto conforme pasa el tiempo corresponde un punto en la trayectoria (por
ejemplo el movimiento de los planetas representa trayectorias temporales).
6) Estructuras. La estructura de un objeto se puede “visualizar” como
una trayectoria (por ejemplo la estructura de un cubo o de una casa) y en su
momento asociar la estructura con las propiedades del objeto, por ejemplo la
estructura de una cadena de química orgánica esta relacionada con las
propiedades de esa sustancia.
7) Movimiento de un cuerpo. Por ejemplo el movimiento de una mano o
brazo (de algún animal o robot) se puede representar como la trayectoria que
sigue la mano o el brazo al moverse. Por lo que, por ejemplo, mediante un
lenguaje de trayectoria se pueden programar directamente los movimientos de un
robot.
8) Recorridos geográficos y espaciales. Por ejemplo, el recorrido de
una persona por una ciudad se puede ver como la trayectoria que sigue la
persona para ir de un punto a otro y en su momento es indistinto decir que la
persona va de Tacuba a la Alameda o dar la trayectoria que representa ese
recorrido. Como otro ejemplo de recorrido espacial se tiene el baile con el que
las abejas comunican la distancia y dirección donde se puede recolectar miel.
II
Construcción de Sistemas Evolutivos de Lenguajes de Trayectoria
1 Arquitectura del Sistema
En general un sistema evolutivo consta de un constructor y un ejecutor integrados mediante un mecanismo de diálogo. El constructor es el sistema responsable de interactuar con el ambiente para construir una imagen de esté y encontrar las reglas generales que permiten resolver problemas en ese ambiente; por su parte el ejecutor interactúa con el ambiente para resolver problemas específicos aplicando los mecanismos de solución detectados por el constructor. Estos dos sistemas se integran a su vez mediante un mecanismo de diálogo que permite pasar el control del constructor al ejecutor y viceversa.
El ejecutor en general es equivalente a un interprete o reconocedor sintáctico de imágenes y por su parte el constructor esta formado por tres grandes componentes: constructor léxico, constructor sintáctico y constructor semántico.
1) Constructor léxico. Es el componente encargado de detectar las
diferentes unidades léxicas involucradas en el lenguaje, su significado y su
relación con las otras unidades léxicas dentro de la oración (oración
canónica).
2) Constructor sintáctico. Es el encargado de encontrar los patrones
de comportamiento, estructura general o sintaxis del lenguaje.
3) Constructor semántico. Permite asociar su significado a los
diferentes componentes de la oración, a las diferentes oraciones y a las
estructuras del lenguaje.
2 Constructor Léxico
El constructor léxico permite analizar las oraciones con el fin de detectar las unidades léxicas (unidades mínimas con significado en el lenguaje) e integrar la clasificación de los tipos de unidades léxicas.
En el caso de los lenguajes de trayectorias uno de los mecanismos más sencillos para asociar las unidades léxicas es lo que se conoce como número de forma.
1) Por ejemplo, en el caso de la información visual una de las convenciones más usadas se muestra en la figura 1.
Figura 1. Códigos usados en
el número de forma
De donde la imagen de la figura 2 tiene
asociada la oración de trayectoria en términos del número de forma:
00066644322
Figura 2. Un número de forma y su imagen
2) La trayectoria que sigue un brazo de robot, el movimiento de una pieza
de ajedrez o una persona en una ciudad se pueden representar también
mediante su numero de forma.
3) Existen trayectorias no lineales para las que el número de forma no es suficiente (por ejemplo, una figura estrellada) por lo que, otros componentes léxicos pueden representar relaciones estructurales o espaciales.
Por ejemplo, una figura
formada por un triángulo sobre un cuadrado puede representarse mediante el
número de forma del triángulo relacionado con el del cuadrado mediante una
relación que indique triángulo sobre cuadrado.
Así también, se pueden
introducir relaciones espaciales como: arriba, abajo, izquierda, derecha, dentro,
fuera, mayor, menor, etc., y relaciones temporales como: antes, después, al
mismo tiempo, etc.
A partir de la detección de las unidades léxicas el constructor léxico permite encontrar lo que se conoce como gramática canónica, formada por las oraciones canónicas, o sea el conjunto de oraciones que se obtienen al sustituir los elementos de una oración dada por las unidades léxicas que los representan.
Por ejemplo, si a partir de
cuatro figuras diferentes se obtienen los siguientes números de forma:
00066644322
060066444222
00066653331
171757535313
Entonces la gramática
canónica asociada es:
S ® 00066644322 ½
060066444222 ½
00066653331 ½
171757535313
3 Constructor Sintáctico
El constructor léxico, únicamente permite encontrar los componentes de una oración pero no la gramática o estructura general del sistema por lo que se han desarrollado un conjunto de herramientas que permiten encontrar patrones, formas o estructuras generales a partir de ejemplos o casos particulares, estos métodos se engloban en lo que se conoce como inferencia gramatical.
Se tiene gran cantidad de métodos de inferencia gramatical y la mayoría se basan en las operaciones lingüísticas de factorización y recursividad, sin embargo existe una serie de problemas que no se pueden atacar directamente con los métodos tradicionales de factorización o recursividad o que se prestan a una generalización de estos mismos métodos. En particular a muchos de los lenguajes de trayectoria, no se les puede aplicar los métodos tradicionales por lo que a continuación se presenta un método orientado a los lenguajes de trayectoria.
3.1 Factorización Multiempotrada Mediante Introducción de
Atributos (método de Sandra Camacho Villanueva)
El manejo de los lenguajes de trayectoria presenta el problema de encontrar la gramática de una trayectoria o forma que representa un movimiento. Como caso particular, se tiene por ejemplo, el problema de encontrar la gramática de las figuras cerradas de dos dimensiones (que es uno de los problemas “más sencillos” del reconocimiento de imágenes).
En este caso, lo primero que se hace es encontrar las oraciones para representar a las imágenes, para lo cual se aplican los conceptos de primeros vecinos y de número de forma como se vio en el constructor léxico.
El problema se pone interesante cuando se intenta encontrar la gramática de algunas figuras regulares como cuadrados, triángulos o rectángulos ya que por ejemplo si se dan las imágenes de la figura 3, se obtienen las oraciones 000222444666 y 00002222444446666.
000222444666 00002222444446666
Figura 3. Imágenes y su número de forma
Para
las cuales a pesar de su sencillez y regularidad no se puede encontrar una gramática libre de contexto que las
genere. Lo anterior ocurre porque el patrón de comportamiento es multiempotrado
(son más de dos cadenas las que tienen un comportamiento empotrado) ya que se
tienen cuatro componentes relacionadas entre si (cada componente corresponde a
un lado y la relación nos muestra que:
#0 = #2 = #4 = #6
y las
gramáticas libres de contexto no tienen “memoria” para recordar tantos
comportamientos relacionados.
La
forma como se resolvió este problema fue introduciendo el concepto de atributo
y descomponiendo cada subcadena en dos atributos: dirección y magnitud de donde
la oración:
000222444666
queda
como:
0(3)2(3)4(3)6(3)
y la
oración
0000222244446666
queda
como
0(4)2(4)4(4)6(4)
Como
siguiente paso, se construye una matriz de relación entre las subcadenas donde
se detecta la relación entre las magnitudes:
|
|
0 |
2 |
4 |
6 |
|
0 |
= |
= |
= |
= |
|
2 |
|
= |
= |
= |
|
4 |
|
|
= |
= |
|
6 |
|
|
|
= |
En este caso tanto para el primer ejemplo
como para el segundo se detectó que la magnitud entre todas las componentes
tiene que ser la misma, si se continua dando cuadrado se sigue detectando la
misma regla por lo que se propone la siguiente gramática con atributos para el
cuadrado:
S ® 0(n)2(n)4(n)6(n)
donde n
indica el número de elementos y en este caso el número de elementos en cada
dirección 0 2 4 6 es el mismo.
Otro
ejemplo es el siguiente:
0022244666 000222222444666666
0(2)2(3)4(2)6(3) 0(3)2(6)4(3)6(6)
|
|
0 |
2 |
4 |
6 |
|
|
0 |
2 |
4 |
6 |
|
0 |
= |
< |
= |
< |
|
0 |
= |
< |
= |
< |
|
2 |
|
= |
> |
= |
|
2 |
|
= |
> |
= |
|
4 |
|
|
= |
< |
|
4 |
|
|
= |
< |
|
6 |
|
|
|
= |
|
6 |
|
|
|
= |
De donde se puede concluir que:
#0 = #4
#2 = #6
#0 < #6
O sea que el numero de
ceros debe ser el mismo que el de cuatros y el de dos debe ser el mismo que el
de seis, pero el numero de ceros es debe ser menor del numero de seis de donde
la gramática del rectángulo es:
S ® 0(n)2(m)4(n)6(m)
4 Constructor Semántico
Ya que se tiene la gramática que representa ciertos tipos de
trayectorias es posible distinguir entre los elementos representados por una u
otra trayectoria, sin embargo eso no significa que se sepa lo que significa
alguno de los elementos.
El constructor semántico es
el componente del sistema evolutivo encargado de integrar el significado a los
diferentes componentes del lenguaje, para lo que se utilizan tres herramientas
combinadas: un mecanismo de diálogo, integración de diferentes mecanismos de
captación de la realidad y sustitución de significados por significados más
elementales.
4.1 Mecanismo
de Diálogo (Desarrollado por José Luis Díaz Salas)
Permite asignar significado en forma directa a los diferentes componentes de un lenguaje, ya que lo que hace es que, cada que encuentra una componente que no comprende, pregunta por su significado y espera una respuesta que se toma en forma recursiva como una nueva entrada al sistema evolutivo.
En general el mecanismo de
dialogo tiene la forma:
Sistema Diálogo.
Lee oración
Analiza componente (trata de detectar la unidades léxicas)
Si no entiende
entonces
Llama a Diálogo
Ejecuta significado
Fin Diálogo
Otra herramienta
fundamental para asignar significado es la capacidad de manejar diferentes
mecanismos de captaci6n de información en paralelo e integrarlo en una sola
oración de tal manera que el significado de cada componente se puede explicar de
diferentes formas.
Así, si se dibuja un
triángulo y se le escribe en Español el letrero “este es un triángulo” el
sistema debe integrar las dos oraciones (visual y escrita) en una sola oración
o red semántica con dos componentes, donde una explica a la otra.
Como un caso particular, dada una trayectoria se le puede asociar un significado específico a cada uno de los componentes de la trayectoria con lo que, sí por ejemplo, se dibuja la estructura de una casa y se quiere hacer diseño estructural asistido por computadora se pueden integrar rutinas semánticas a cada una de las trayectorias asociadas con cada componente (trabes, castillos, zapatas, etc.) de tal manera que conforme el sistema evolutivo recorre una estructura particular va ejecutando las rutinas semánticas asociadas con cada punto de la trayectoria y al final puede entregar los valores de diseño (como un ejemplo particular se tienen las redes de transición aumentadas o ATN, que son autómatas finitos con significado asociado a las trayectorias y nodos del autómata).
La tercera componente para
integración de la semántica es una generalización del mecanismo de dialogo y
fue desarrollada por Gustavo Martínez Cortés y Eduardo Camacho Flores y
consiste básicamente en dar el significado de una oración mediante una oración
o combinación de oraciones más sencillas.
Conclusión
Mediante los lenguajes de trayectoria se generaliza el concepto de lenguaje ya que engloba como casos particulares a los lenguajes naturales escritos y hablados, los movimientos de una pieza de ajedrez, el recorrido en una ciudad, los movimientos de un robot, la trayectoria en el tiempo de un objeto, etc., por lo que, múltiples problemas de la Inteligencia Artificial (IA), como el reconocimiento de formas, lenguaje natural, juegos, reconocimiento de imágenes, programación de robot, y de otras áreas de la Informática como el diseño asistido por computadora pueden tratarse mediante lenguajes de trayectorias. En todos los casos anteriores el problema general se centra en el lenguaje de trayectoria, por lo que, en este documento se presentó el proceso para desarrollar un sistema evolutivo capaz de construir una imagen de la realidad en términos de trayectoria incluyendo los elementos léxicos, la gramática o estructura del sistema y el manejo del significado asociado en cada problema a la trayectoria.