IV.8 Sistema Evolutivo de Reconocimiento de Formas en dos
Dimensiones
Diana Karla García García*
Sergio Salcido Bustamante**
Alfonso Ventura Silva***
Introducción
La realidad es, ante el ser humano, un enorme mosaico de fenómenos en
constante cambio. Algunos de ellos son tan sutiles que sólo la observación
dedicada permite apreciarlos, en cambio, otros son determinantes. Sin embargo,
todos los cambios del entorno, que son captados por el ser humano mediante
alguno de sus mecanismos de percepción, son útiles para que éste pueda recrear
en su mente un modelo único del medio que lo rodea.
Como el medio está en
constante transformación, el modelo de la realidad de cada individuo comienza a
evolucionar desde su nacimiento, y este proceso sólo concluye con la muerte.
Las experiencias acumuladas en el transcurso de su vida lo preparan para
responder cada vez en forma más adecuada a las transformaciones que le demandan
una participación activa. Como resultado de este proceso, con el tiempo, el ser
humano es capaz de dominar ciertos campos del entorno y de modificarlo de
acuerdo a sus necesidades. De esta forma, la habilidad adquirida le permite
interactuar continuamente en su entorno limitado, con un riesgo muy pequeño de
encontrarse sin respuesta ante alguna circunstancia.
* Diana
Karla García García, ** Sergio Salcido Bustamante, ***Alfonso Ventura Silva realizaron este trabajo en 1995, cuando cursaban el 4to
semestre de la carrera de Ingeniería en Sistemas Computacionales en la Escuela
Superior de Computo del IPN y lo presentaron en el Concurso Nacional de Ciencia
y Tecnología, organizado por el CONADE en la Cd. de México en 1996
De la misma forma que el
hombre evoluciona en su modelo de
realidad, se pretende que los sistemas de información se adapten a
entornos en constante cambio mediante la evolución del modelo de su entorno a
medida que conoce más sobre el. En otras palabras, se concibe la idea de
sistemas de propósito general dinámicos que tengan la disposición de
"aprender" del medio en que se desarrollan mediante la integración de
nuevas premisas en sus estructuras internas, las cuales comienzan a influir, en
tiempo real, en los procesos que el sistema lleva a cabo, habilitándolo así
para responder ante circunstancias distintas con modelos actualizados de su
entorno.
Un sistema con los
mecanismos informáticos que le aporten las cualidades descritas es llamado
"Sistema Evolutivo" y es una alternativa para uno de los problemas
principales de la informática actual, que consiste en la dificultad para
mantener vigentes los sistemas de información, ya que, una vez finalizada la
construcción de un sistema convencional (estático e inalterable) es difícil que
éste responda a nuevos requerimientos, producto de cambios en el medio en que
se desarrolla.
Por otra parte, en el campo
de Inteligencia Artificial, uno de los problemas "clásicos" es el
reconocimiento de formas, pues esta íntimamente relacionado con procedimientos
de percepción, abstracción y generalización.
No obstante, las
herramientas convencionales para el reconocimiento de formas, son capaces, en
el mejor de los casos, de aceptar formas "nuevas" mediante un proceso
de reprogramación que permite al sistema adoptar una estructura modificada
capaz de integrar la nueva forma en sus procesos de análisis. Sin embargo, la
gran mayoría contienen una base de datos estática que reconoce sólo las formas
que fueron consideradas y modeladas en su construcción.
Estos sistemas requieren
además cantidades grandes de memoria puesto que no pueden integrar en un solo
archivo los patrones descriptivos de formas similares, sino que los modelos
iniciales son inalterables, y formas identificadas se destinan a nuevos
archivos con el consecuente incremento en el uso de memoria.
El problema mayor es que
generalmente se diseñan con un propósito específico, (identificación de huellas
digitales, reconocimiento de imágenes, etc.) Aunque dos sistemas como estos
tengan exactamente el mismo algoritmo de reconocimiento, son incapaces de
intercambiar sus medios, imposibilitando su aplicación inmediata en campos
diferentes.
En este documento, se
describe un sistema evolutivo diseñado para reconocer formas, que no posee
archivos predefinidos de imágenes, sino que almacena los datos que le envía el
digitalizador en memoria y terminado este proceso compara la forma recibida con
todas las formas que ya conoce, las cuales están enlistadas en un archivo.
En caso de que la forma sea
completamente nueva para el sistema, ésta se "aprende" bajo la
definición que el usuario proporcione y almacena en un archivo nuevo. Por el
contrario, cuando la forma presenta gran similitud con alguna otra comprendida
dentro de las ya conocidas, en lugar de ambas formas se crea una nueva, en la
que se suman las características de cada una.
De este modo, se logra una
actualización natural de la forma y con el tiempo, cada vez que se realiza este
proceso, algunos rasgos o puntos inciden por encima de los demás,
convirtiéndose en esenciales y ayudando a la definición del patrón
correspondiente a esta forma.
I
Hardware del Sistema
El prototipo cuenta con un dispositivo externo que permite
digitalizar formas trazadas en láminas de acetato; el digitalizador (scanner)
construido es "de mesa" y tiene la cualidad de realizar el recorrido
de las imágenes que se le coloquen de forma completamente automática en las 2
dimensiones empleadas (largo y ancho), a diferencia de un digitalizador manual,
donde el movimiento en una dimensión debe ser realizado por el usuario. La
técnica empleada en el digitalizador de mesa permite obtener imágenes más
cercanas a la realidad, pues no existen movimientos donde alguna discontinuidad
accidental pudiera provocar alteraciones a la representación de la imagen.
El funcionamiento del
digitalizador es controlado por una computadora, que se encarga de enviar las
señales necesarias para el movimiento de tres motores. Dos de ellos desplazan la lámina de acetato
con la imagen a lo largo del digitalizador y el otro mueve a lo ancho un
dispositivo sensor que va realizando la "lectura" de la información.
Los elementos que
constituyen a este digitalizador pueden ser descritos a través de tres grandes
bloques: dispositivos motores, dispositivos sensores, interfaz con la
computadora.
1) Dispositivos motores: Se utilizan “motores a pasos”, los cuales
poseen varias terminales por donde se introduce una secuencia de pulsos
digitales (ceros y unos), que permite que el eje del motor dé un
"paso", es decir, un pequeño desplazamiento angular que siempre es
constante. Para que el motor dé varios pasos basta introducir tantas secuencias
como pasos se deseen. El eje puede dar una revolución completa en un número
finito y constante de pasos. Para realizar la rotación en sentido contrario
solo debe introducirse la secuencia de forma invertida.
El movimiento a lo largo
del digitalizador se genera por dos motores a pasos y transmitido a través de
un sistema de tracción sobre el cual se monta la lámina de acetato. Este
sistema de tracción está constituido por dos ejes de acero, donde uno de ellos
tiene en cada extremo un enlace con el rotor de un motor. Es conveniente
aclarar que estos dos motores giran con la misma secuencia de pasos, de manera
tal que sus rotaciones se dan con la misma velocidad y al mismo tiempo. El
objetivo de esta particularidad es incrementar la potencia (par) en el giro,
proporcionada por estos dispositivos.
El segundo eje de acero está montado sobre la estructura de madera que
sustenta a todos los elementos, de tal forma que gira sobre si mismo y es
paralelo al eje enlazado con los motores. Es necesario que la lámina de acetato
esté sostenida por algún elemento que al mismo tiempo le transmita el movimiento
deseado, lo cual se logra por medio de un par de bandas plásticas colocadas
cerca de los extremos de los ejes, estos últimos cuentan con ruedas dentadas en
las regiones de contacto con la banda que suprimen el derrapamiento que pudiera
existir y evitan su desplazamiento a lo largo de los ejes.
La distancia que separa a
los ejes es el doble del ancho de una hoja tamaño carta, para que una lámina de
acetato colocada horizontalmente pueda desplazarse a lo largo del digitalizador
y se recorra en su totalidad.
El movimiento realizado a
lo Ancho del digitalizador es generado por un tercer motor a pasos que recibe
secuencias independientes de los otros dos anteriores. Este desplazamiento
horizontal mueve al sensor. Para tal efecto se utiliza el carro de una
impresora en el que se ha conservando intacto el mecanismo que desplaza la
cabeza de impresión, en lugar de este dispositivo ha sido colocado el elemento
que porta al sensor.
El recorrido de una lámina
comienza con ésta colocada junto al eje motriz (o eje de tracción), el primer
movimiento que se realiza es el desplazamiento del sensor a lo ancho del
digitalizador, al llegar al extremo contrario del punto de inicio se produce un
pequeño desplazamiento de la lámina en dirección al segundo eje, es decir, un
movimiento a lo largo del dispositivo. Inmediatamente la secuencia de pulsos se
invierte para el desplazamiento horizontal provocando que el sensor haga un
recorrido en sentido contrario hasta llegar nuevamente al punto de inicio y en
este momento vuelve a producirse otro pequeño movimiento a lo largo del
digitalizador. Este ciclo se repite
hasta que la lámina de acetato es recorrida en su totalidad. Ya que se ha
terminado el proceso de recorrido, el eje motriz gira en sentido contrario para
regresar la lámina a su posición original.
Es conveniente aclarar que
la lámina de acetato no se coloca directamente sobre las bandas ya que no se
sustenta por sí sola, por lo tanto se requiere utilizar un material que no se
flexione con tanta facilidad, tal como la mica. Por su relativa rigidez y
transparencia, este es el material ocupado para apoyar la lámina.
2) Dispositivos sensores: En el apartado anterior se ha considerado al
sensor como un solo elemento, pero requiere de dispositivos auxiliares para un
buen funcionamiento. Los elementos que se desplazan a lo ancho del
digitalizador son: un sensor de luz infrarrojo y un diodo emisor de luz roja
visible.
El sensor recibe
constantemente un haz de luz que tiene la capacidad de atravesar la lámina de
acetato, excepto en las regiones que tengan algún trazo en negro con el
suficiente grosor e intensidad. La configuración del circuito que controla al
sensor le permite entregar un uno lógico cuando recibe al haz de luz, pero
cuando por alguna obstrucción el haz es interrumpido, el circuito proporciona
un cero lógico. La información producida es enviada a la computadora al momento
que se genera. El elemento montado sobre el carro de impresora soporta al
sensor y al emisor de luz por medio de dos varillas de aluminio, la disposición
de estas piezas permite al sensor estar suspendido sobre la lámina de acetato a
una distancia de 28 cm. del mecanismo que le proporciona movimiento y al emisor
justo frente a él por debajo de la lámina.
En vez de ocupar luz
infrarroja para excitar al sensor se optó por la luz roja visible, pues al
experimentar con diversos tipos se encontró que la primera traspasa incluso
materiales traslúcidos con trazos en su superficie, en cambio, el rendimiento
del sensor se reduce con el segundo tipo de luz y por consiguiente es mas fácil
evitar su detección con las condiciones de obstrucción ya mencionadas. Los trazos deben ser realizados en láminas
de acetato porque son completamente transparentes y esta característica permite
que el haz luminoso penetre sin mayor problema en las regiones libres de tinta
negra. El emisor de luz roja envía su haz en forma de abanico, lo que disminuye
la sensibilidad, pues las líneas muy delgadas no pueden detectarse. Para lograr
una sensibilidad mayor se requeriría la emisión de luz coherente, tal como la
proveniente de un láser y un sensor adecuado para ésta.
3) Interfaz con la computadora: El software que controla al
digitalizador tiene por salida las secuencias de pulsos que activan a los
motores y como entrada a la señal proveniente del sensor. Este intercambio de
datos se realiza a través del puerto paralelo. De la terminal dos a la cinco se
obtienen los pulsos para el motor que mueve al sensor, de la seis a la nueve
surgen los correspondientes para los motores que desplazan a la lámina de
acetato. En la terminal quince entra la señal que envía el sensor. La terminal
25 es utilizada como referencia (tierra).
Es conveniente notar que
como el voltaje y la corriente proporcionadas por la computadora Son insuficientes
para activar directamente a los motores, debe colocarse una etapa de protección
y otra de amplificación de potencia entre el puerto de la computadora y los
motores.
La fase de protección está
constituida por un optoacoplador conectado a cada línea de salida de la
computadora. Este dispositivo transfiere cualquier señal que se presente a su
entrada por luz infrarroja (IR) dentro del encapsulado, aislando eléctricamente
a la computadora de los voltajes y corrientes para motores.
La potencia de las señales
que provienen de la etapa de protección es incrementada al voltaje y corrientes
necesarios por medio de transistores.
La señal que envía el
sensor pasa por una compuerta lógica (inversor) para evitar que la entrada de
la computadora reciba señales intermedias entre ceros o unos.
II
Sistemas Evolutivos
Un sistema evolutivo no conserva modelos fijos de la realidad sino
que es capaz de reconfigurarse internamente al interactuar con el medio
ambiente. Su reconfiguración interna es posible ya que posee los mecanismos que
le permiten:
1) Adquirir conocimiento progresivo: Es capaz de iniciar su operación
sin conocer ninguna forma y crear archivos para las formas que considere
nuevas.
2) Establecer relaciones entre los conocimientos adquiridos: Está habilitado
para reconocer nexos entre las formas ya conocidas y las recientes, en términos
de similaridad cuantificada por medio de un valor distancia, descrito más
adelante.
3) Aprender el lenguaje para comunicarse con las personas: Utiliza
procedimientos de reescritura para indicar al usuario en su propio lenguaje que
la forma digitalizada posee un nombre si es reconocida o, en su defecto, para
solicitarle uno.
4) Inferir y abstraer nueva información: Con cada forma que
digitaliza, es capaz de abstraer información nueva, la cual se traduce en un
renglón más en la lista de formas o, en la misma lista, pero con un archivo que
contiene una acumulación más de la forma respectiva, lo que implica un patrón
más definido del objeto real que representa.
5) Comunicarse con el medio ambiente:. Esta capacitado para establecer
comunicación con el usuario, por medio de la interfaz de software y con el
objeto de estudio por medio del digitalizador.
III
El Núcleo del Sistema
Las características evolutivas son factibles de implementarse en un
programa para computadora si se considera una independencia relativa entre los
elementos básicos del sistema: señales de entrada, estructura del sistema,
procesos del sistema, datos del sistema, señales de salida, manejador del sistema.
1) Señales de entrada: En nuestro caso están representadas por los
impulsos recibidos en el puerto paralelo que son interpretados como la
presencia o ausencia de un punto sobre la lámina que se digitaliza. Para otros
sistemas, esta señal puede ser desde una cadena de caracteres hasta señales de
voz, sin que ello afecte la validez del esquema de elementos.
2) Estructura del sistema: En nuestro caso es la lista de imágenes
conocidas, y en general se denomina "la gramática del sistema".
Básicamente es un conjunto de reglas de reescritura permitidas para el sistema.
Aquí es importante destacar que estas reglas son susceptibles de modificarse o
incrementarse en número para integrar los nuevos conocimientos que adquiera el
sistema. Este sistema reescribe una forma digitalizada con un nombre
correspondiente. Sin embargo es igualmente válido reescribir por ejemplo, una
señal de voz con la imagen en pantalla del poseedor de la misma, o viceversa.
3) Procesos del sistema: Son las rutinas que desempeñan diversas funciones
encaminadas a la obtención de resultados, y se describen más adelante por
grupos.
4) Datos del sistema: Son las representaciones en archivos de las
imágenes del sistema. Como se ha comentado, las imágenes similares se acumulan
en un solo archivo representativo de todas. Para otros sistemas, estos datos
son también representaciones para la computadora del tipo de señales que
maneja.
5) Señales de salida: Son los mensajes en forma de cadenas de
caracteres mediante los cuales el sistema informa al usuario de los resultados
del proceso de reconocimiento. En otros sistemas puede contarse con otros
dispositivos físicos (como el digitalizador) conectados como periféricos a la
computadora para representar mediante voz, luz, imagen, etc. a los resultados.
6) Manejador del sistema: Se encarga de controlar todo el sistema
mediante la definición de la secuencia y el llamado al resto de los elementos
en el momento que se requieren.
La independencia relativa
se refiere al hecho de que las modificaciones que se produzcan en alguno de
ellos, no afecten al resto de los elementos.
Figura
1. Estructura básica de un Sistema Evolutivo
IV
Matrices Evolutivas
Hasta aquí se han observado las características que hacen evolutivo
al sistema, sin embargo, el motivo por el cual fue creado es el reconocimiento
de formas. Para tal efecto el sistema requiere establecer un formato de captura
para las mismas, a partir del cual pueda llevar a cabo las operaciones básicas
de:
1) Comparación.
2) Suma.
3) Agregación.
Antes de describir las
operaciones es necesario destacar el detalle del formato. El archivo que
contenga una imagen se identifica con la extensión .IMG y consta solo de tantos
caracteres como puntos detecta el digitalizador. La disposición es por líneas,
que representan el barrido con el carro de impresora, de forma que la vista del
archivo bien puede interpretarse por el ojo humano. Cuando la forma es nueva,
los caracteres solo son '1' y ‘0’. Pero cuando alguna forma posterior se
identifica con la representada por algún archivo, la suma de ellas implica que
se representen, en el mismo archivo y conservando su dimensión, los puntos
donde ninguna imagen incidió, los que fueron incididos solo por una de ellas y
los incididos por ambas. Respectivamente se usan los caracteres “0”, “1” y “2”.
De la misma forma se tratan las incidencias de n formas, empleando los
caracteres ASCII subsecuentes al “9”, pues al restar al entero ASCII el número
48, se obtiene el número de imágenes que incidieron en el punto de que se trate.
Por el momento, n está limitado al alcance ASCII, es decir 200 incidencias, que
para propósitos prácticos consideramos suficiente.
Establecido lo anterior, el
proceso de comparación requiere extraer de la gramática el número de formas
acumuladas para cada archivo que vaya comparando con la forma en memoria
proveniente del digitalizador. Con este factor evalúa, punto por punto de las
matrices respectivas, la coincidencia obteniendo en cada caso una distancia
puntual que se acumula en una variable. La fórmula para este valor es:
|p.archivo
- (factor)(p.digitalizado)|
donde p.archivo es el punto de la matriz de la forma del archivo en
tumo, factor son las formas que se han acumulado en ese archivo y
p.digitalizado es el punto de la matriz de la forma recién digitalizada.
Hay cuatro casos posibles
de incidencia:
1) La imagen digitalizada y la del archivo inciden en el punto. En
este caso, aunque el valor del archivo sea mayor que 1 (por las formas que
vayan acumuladas), gracias al factor la diferencia es cero y por lo tanto no se
acumula diferencia.
2) Ninguna de las dos imágenes incide en el punto. La diferencia es
entonces cero, manteniendo inalterada la distancia que vaya acumulada hasta ese
momento.
3) La imagen del archivo incide y la del digitalizador no. El peso del
punto en el archivo determinará el valor de la diferencia, por lo que el
incremento en la distancia acumulativa es proporcional a lo importante del
punto.
4) La imagen digitalizada incide y la del archivo no. Entonces, como
se sabe por el factor acumulativo la importancia de que ese punto no sea
incidido, la diferencia es negativa y de valor proporcional al factor
mencionado. Por el valor absoluto aplicado el efecto en la distancia es de
incremento también.
Una vez acumulada la distancia
de todos los puntos se evalúa la razón de este valor con respecto al valor
matricial de los puntos de la imagen de archivo. Si se excede de cierto valor
la imagen digitalizada se juzga diferente y se inicia el proceso de agregación.
De lo contrario, la imagen se declara semejante y se realiza el proceso de
suma.
El proceso de agregación
implica crear un nuevo archivo para la imagen no identificada, así como
insertar su nombre en la lista de imágenes para que tome parte, en adelante, de
los procesos de comparación. Obviamente el número asociado de imágenes
acumuladas es uno.
El proceso de suma modifica
los datos o conocimientos del sistema al cambiar los símbolos ASCII del archivo
que se relacionó con la imagen proveniente del digitalizador, por el valor
siguiente en ASCII, con lo cual se asegura que en análisis posteriores el punto
será considerado aún más importante de lo que ya era, dado que una imagen más
(la reciente) coincide en él. Además es necesario alterar el factor de imágenes
acumuladas que se guarda en el listado de imágenes para los mismos fines.
V
Software del Sistema
El programa principal inicia la comunicación con el usuario mediante
una pantalla de presentación. Luego
aparece una pantalla con las opciones de Digitalizar Imagen o Salir del
Programa, la elección Digitalizar presenta la cuadricula sobre la que se
graficará la imagen, e inicia la Digitalización. Una vez terminada se comienza
con el proceso de Reconocimiento de la imagen, finalmente una vez que la imagen
ha sido reconocida o registrada, los archivos correspondientes son almacenados
y se vuelve a la pantalla de opciones, desde la cuál se puede salir al sistema
operativo, no sin antes cerrar el modo gráfico y limpiar la pantalla.
Las funciones básicas del
programa son: interfaz con el usuario, manejo de archivos, digitalización,
graficación, reconocimiento, apoyo.
1) Interfaz con el usuario: Tiene las funciones de mensajes de fondo y
de ventana. La función de mensajes es un despachador de mensajes que se envían
al usuario a través de la pantalla. Normalmente el usuario recibe ocho
mensajes. La función de fondo dibuja en el modo gráfico de vídeo el fondo de la
pantalla, por lo tanto es llamada cada vez que se necesita actualizar la misma.
La función de ventana forma el recuadro de colores Magenta-Cyan en el cuál se
visualizan todos los mensajes, consecuentemente dicha función es llamada cada
vez que se envía un mensaje.
2) Manejo de archivos: Incluye las funciones de manejo de archivos. La
función carga archivo se encarga de decidir si el archivo que va a procesar es
el correspondiente a una imagen, o el listado de formas. Las acciones que
realiza son: abrir para lectura un archivo de texto, llamar a la función de
mensajes en caso de que el archivo requerido no se pueda abrir por alguna
causa, guardar en un arreglo de memoria dinámica el archivo a comparar y cerrar
el archivo. En caso de tratarse de archivos de imágenes de manera adicional:
determina el número de imágenes acumuladas en el archivo. La función para
salvar archivos se encarga de grabar los datos contenidos en los arreglos de
memoria dinámica que pueden ser el arreglo de una imagen que acaba de ser
digitalizada, o una imagen cuyo archivo ya existía.
3) Digitalización: Hace posible que el proceso de digitalización y
visualización en pantalla de la forma sea en tiempo real, gracias a que
controla el movimiento de los motores, y la señal enviada por el sensor del
digitalizador. El contenido de la dirección de entrada del puerto se enmascara
para detectar el estado del pin que esta recibiendo la señal.
El número de movimientos
en cada dimensión queda definido por las variables globales Ancho y Largo. La
cantidad de pasos máxima para cada motor queda entonces limitada y por lo tanto
la resolución del digitalizador.
4) Función de Secuencias: Esta función es llamada por la función
digitaliza y envía directamente las señales de salida al puerto, con tiempos de
retardo diferente, dependiendo del motor que se debe controlar.
5) Graficación: Tiene la función de Cuadricula que dibuja en la
pantalla una cuadricula con dimensiones Largo por Ancho en unidades de x
pixeles, donde x se define en tiempo real de acuerdo a las características del
monitor con que se cuenta. La función de punto se encarga de dibujar sobre la
cuadrícula el punto proveniente de la imagen que esta siendo digitada, en
tiempo real. Recibe las coordenadas y el color de dibujo como parámetros.
6) Reconocimiento: Involucra las funciones para los procesos de
Comparación, Suma y Agregación descritos anteriormente.
7) Apoyo: Son básicamente las funciones de: escape, visualización de
cadena en modo gráfico, obtención del nombre de la forma a comparar y
conversión de un número flotante a cadena.
Conclusión
Consideradas las características de los sistemas evolutivos se concluye
que son una alternativa muy conveniente para desarrollo de aplicaciones de
Inteligencia Artificial como el Reconocimiento de Formas. Para los usuarios son
sistemas que integran automáticamente los conocimientos y los modifican sin
necesidad de recurrir al programador para que los reconfigure. Sin embargo, a
pesar de lo promisorio de los sistemas evolutivos no debe olvidarse que, para
todo sistema, por más avanzada que sea la tecnología en que se apoya, no es
capaz de conjuntar mas que unas cuantas imitaciones (muy malas) de los
mecanismos humanos de percepción, por lo cual las restricciones en cuanto a
analogías con el ser humano, son evidentes.
En el campo del
reconocimiento de formas, la herramienta desarrollada es de especial utilidad
si se considera que se pueden construir bases de datos suficientemente grandes
en múltiples áreas del conocimiento que almacenen imágenes. Elementos
desconocidos pueden ser identificados y clasificados. Por otra parte, sucesivos ejemplos de una clasificación conocida
pueden introducirse al sistema con el fin de obtener un patrón general. Las perspectivas de desarrollo de este
prototipo son grandes, sobre todo en cuanto a resolución e información sobre la
imagen se refiere (color, precisión, etc.).
Bibliografía
[1]
Chomsky, Noam, Estructuras Sintácticas.
Ed. Siglo XXI.
[2]
Bach, Emmon, Teoría Sintáctica. Ed. Anagrama.
[3] Salomaa, Formal Languages, Ed. Academic Press.
[4]
Galindo Soria, Fernando, Sistemas Evolutivos, IPN-UPIICSA.
[5].Galindo
Soria, Fernando, Generador de Sistemas como Núcleo de un Sistema
Evolutivo. Memorias del Festival de
Ingeniería TECCONT 90, ITESM-CEM.
[6]
Galindo Soria, Fernando, Una Representación Matricial para Sistemas Evolutivos,
IPN-UPIICSA.
[7]
Galindo Soria, Fernando, Sistemas Evolutivos: Nuevo Paradigma de la
Informática. Memorias de la XVII
Conferencia Latinoamericana de Informática, Caracas, Venezuela. 1991.