sábado, 1 de febrero de 2014


Cleiver Manzanilla                                   

Desde su nacimiento, la teoría de autómatas ha encontrado aplicación en muy diversos campos. Esto se debe a que resulta muy natural considerar, tanto los autómatas como las máquinas secuenciales, sistemas capaces de transmitir (procesar) información.
En definitiva, esto es equiparable a cualquier sistema existente en la naturaleza, que recibe señales de su entorno, reacciona ante ellas y emite así nuevas señales al ambiente que le rodea.
• Algunos de los campos donde ha encontrado aplicación la teoría de autómatas son:
– Teoría de la Comunicación
– Teoría de Control
– Lógica de los circuitos secuenciales
– Ordenadores
– Teoría lógica de los sistemas evolutivos y auto-reproductivos
– Reconocimiento de patrones
– Fisiología del sistema nervioso
– Traducción automática de lenguajes
– etc
Lenguajes Formales

Las gramáticas han sido clasificadas de acuerdo a particularidades y restricciones propias, una de ellas y la más acertada es la formula dada por Noam Chomsky, quien clasificó las gramáticas, dando origen a la Jerarquía de Chomsky en función de la forma de reglas de derivación o producción.




Características de Los Tipos de Gramáticas


Gramáticas Regulares

Gramáticas Sensibles al Contexto
Gramáticas Independientes del Contexto(GIC)
-Genera cadenas a partir de una cadena vacía.
-Las cadenas que puede generar el autómata son todas aquellas que pertenecen al lenguaje representado por el autómata L(M).
-Todas las cadenas inician con una „a, luego viene una serie de as o bs y finalmente termina con una b.



-Es importante tomar en cuenta la ubicación de los símbolos no terminales en la regla de derivación (que preceden y suceden a cada símbolo Terminal.
-Deben mantener su ubicación en el lado derecho de la regla de producción.
-Se caracteriza porque las partes Izquierdas y Derechas tienen que tener una parte común y se admite como regla compresora la regla S→ε.

-Es una cuádrupla G = (N, ∑ , S, P), donde:
N: es una colección finita (no vacía) de símbolos no terminales.
∑: es un alfabeto.
S: es un no terminal llamado símbolo inicial.
P: un conjunto de producciones.


Ejemplo de Gramática Regular:
Por ejemplo las siguientes gramáticas G1 y G2, son gramáticas regulares lineales a derecha y lineales a izquierda respectivamente, que generan el lenguaje L = {a2n / n ≥ 0}
G1 = ({A, B}, {a}, P1, S1)                                     G2 = ({C, D}, {a}, P2, S2)
Donde P1 es el cjto.                                                 Donde P2 es el cjto.
S1 → ε                                                                      S2 → ε
S1 → aA                                                                   S2 → Ca
A → aB                                                                    C → Da
A → a                                                                       C → a
B → aA                                                                     D → Ca

Ejemplo de Gramática Sensible al Contexto:
L5={ai bj ci dj / i, j ≥0 }
G5=<{A, B, C}, {a, b, c}, S5, P5> donde P5 contiene las siguientes producciones:
S5→ ε                                    DC→CD
S5→ A                                   bC→bc
A→aAC                                 cC→cc
A→ac                                                cD→cd
A→B                                     dD→dd
B→bBD                                 bD→bd
B→ bD

Ejemplo de Gramática Independiente del Contexto(GIC):
Una simple gramática libre de contexto es:
S → aSb | ε

Donde | es un o lógico y es usado para separar múltiples opciones para el mismo no terminal, ε indica una cadena vacía. 

Beatriz Sánchez M.


Reflexiones personales:
En este tema se abordan los conceptos de gramática y lenguaje formal. Probablemente el punto central de este tema es la introducción del concepto de gramática formal, que se hará en primer lugar de forma intuitiva, hasta llegar a una definición formal.

Una gramática formal es una estructura matemática con un conjunto de reglas de formación que definen las cadenas de caracteres admisibles en un determinado lenguaje formal o lengua natural. Las gramáticas formales aparecen en varios contextos diferentes: la lógica matemática, las ciencias de la computación y la lingüística teórica, frecuentemente con métodos e intereses divergentes.
En un lenguaje formal, a las cadenas formadas según las reglas de la gramática formal se las llama fórmulas bien formadas, y el conjunto de todas las fórmulas bien formadas constituye un lenguaje formal. Una gramática formal no describe el significado de las fórmulas bien formadas, sino solamente su forma. La teoría de los lenguajes formales estudia las gramáticas formales y los lenguajes formales, y es una rama de la matemática aplicada. Sus aplicaciones se encuentran en la ciencia computacional teórica, la lingüística, la semántica formal, la lógica matemática y otras áreas.

Un lenguaje formal es un lenguaje cuyos símbolos primitivos y reglas para unir esos símbolos están formalmente especificados. Al conjunto de los símbolos primitivos se le llama el alfabeto (o vocabulario) del lenguaje, y al conjunto de las reglas se lo llama la gramática formal (o sintaxis). A una cadena de símbolos formada de acuerdo a la gramática se la llama una fórmula bien formada (o palabra) del lenguaje. Estrictamente hablando, un lenguaje formal es idéntico al conjunto de todas sus fórmulas bien formadas. A diferencia de lo que ocurre con el alfabeto (que debe ser un conjunto finito) y con cada fórmula bien formada (que debe tener una longitud también finita), un lenguaje formal puede estar compuesto por un número infinito de fórmulas bien formadas.
Por ejemplo, un alfabeto podría ser el conjunto {a,b}, y una gramática podría definir a las fórmulas bien formadas como aquellas que tienen el mismo número de símbolos a que b. Entonces, algunas fórmulas bien formadas del lenguaje serían: ab, ba, abab, ababba, etc.; y el lenguaje formal sería el conjunto de todas esas fórmulas bien formadas.
Para algunos lenguajes formales existe una semántica formal que puede interpretar y dar significado a las fórmulas bien formadas del lenguaje. Sin embargo, una semántica formal no es condición necesaria para definir un lenguaje formal, y eso es una diferencia esencial con los lenguajes naturales.
En algunos lenguajes formales, la palabra vacía (esto es, la cadena de símbolos de longitud cero) está permitida.



Citas:
“… los lenguajes formales y los sistemas asociativos son inevitables y buenos, y únicamente se transforman en tiranías cuando no somos conscientes de ellos. Afirmamos también que el contenido del simbolismo inadvertido de la actual arquitectura moderna es estúpido”
Robert Venturi
Aprendiendo de Las Vegas. El simbolismo olvidado de la forma arquitectónica
Ed. Gustavo Gili, Barcelona 1.978, Ed. Original 1.977

Enlace de interés



Imágenes relacionadas con temas propios de la asignatura.





Jesús Rodríguez

Expresiones  Regulares



v  Definición:  Las expresiones regulares
            representan lenguajes regulares y su
           propósito es simplificar la escritura de
           los lenguajes regulares. Recursivamente
          una expresión regular  sobre un alfabeto
           å dado se define como:

ü  Expresiones Regulares básicas:

            -  Ø  es una expresión  regular que
               representa al lenguaje  Ø.
           -   l   es una expresión  regular que
               representa al  lenguaje {l
          -   a es una expresión  regular que
              representa al lenguaje {a}, aÎå.

ü  Si   R y S son expresiones regulares
sobre å  también lo son:
            -   R.S (Concatenación.)
            -   R U S (Unión.)



            -   R* (Clausura de Kleene Representado         
                por el  lenguaje R).

v  Ejemplo: Dado el alfabeto å ={a, b, c}, se  tiene  que:

-          (a Ub*)a*(bc)* es una expresión  regular que representa  al   lenguaje              ({a}U{b}*).{a}*·{bc}*).

v  Nota: Es importante destacar que toda expresión regular sobre  å, denota  un lenguaje regular sobre å.
v  Ejemplo: A continuación  se presentan dos ejemplos de expresiones regulares.
-          ab1      Representa el  lenguaje formado por palabras o cadenas  que empiezan en  a  seguida de ninguna una o mas b’es.

-          (aUb): Representa una palabra formada por a, b o más caracteres que puedan ser a o b.


Lenguaje  Generado por una Expresión Regular


Definición: Se puede definir recursivamente un lenguaje  regular L, por medio de una expresión regular haciendo  uso de las siguientes reglas de calculo.
    -   Si   a=Æ     entonces    L(a)=Æ.
    -   Si   a=l      entonces    L(a)=ílý.
    -   Si   a= a,  aÎå,  entonces L(a)=íaý.
    -   Si   a y b  son  ER, entonces L (a+b)=L(a) U L(b).
    -   Si   a y b  son  ER, entonces L (a.b)=L(a) . L(b).
    -   Si    a  es  ER, entonces  L(a1) =L(a)1
    -   Si    a  es  ER, entonces  L ((a))=L (a).

Ejemplo: Para  la expresión  regular  ab1        se tiene  que el lenguaje regular asociado es:  

L(ab1) =L(a)L(-ab1) =íýL(b)1=íý



EXPRESIONES REGULARES

Son los lenguajes formales más simples, con los mecanismos de representación y reconocimiento más estudiados. Su aplicación práctica en la teoría y construcción de intérpretes y compiladores de lenguajes de programación o de especificación o formato de información, especialmente como microcomponentes del analizador lexicográfico que detecta los tókenes como constantes numéricas, cadenas de texto, operadores, palabras reservadas (keywords), separadores, etc. Pero también se puede apreciar su uso en máquinas expendedoras, teléfonos públicos, calculadoras y otros artefactos electromecánicos.

Definiciones:
Se dice que un lenguaje es regular si y sólo si se cumple cualquiera de las siguientes proposiciones:
  Tiene al menos una gramática regular G que lo produce.
  Puede ser reconocido por un autómata finito A.
  Existe una expresión regular Er que representa a todas las cadenas de L.
Dentro de la Jerarquía de Chomsky se refiere a los lenguajes de tipo 3, el subconjunto de lenguajes formales mas restringido dentro de la jerarquía, como se ve en la imagen.

También puede realizarse una definición recursiva-constructiva de los lenguajes regulares mediante el álgebra de lenguajes formales.
Un lenguaje regular sobre un alfabeto T ó LR(T) es:
1. El lenguaje vacío {}.
2. El lenguaje conformado por la cadena vacía   o lenguaje trivial.
3. Un lenguaje {x} conformado por un único símbolo x de T.
4. Si A y B son lenguajes regulares sobre T, entonces AB (Concatenación de lenguajes), Archivo:A union B.gif (Unión de lenguajes), A*(Clausura de lenguaje o Estrella de Kleene) son también lenguajes regulares sobre T.
5. Cualquier otro lenguaje que pueda obtenerse a partir de 1 a 4.

Ejemplo:
Demuestre que el lenguaje conformado por los nombres de variables de PROLOG es un lenguaje regular.
Primero debe recordarse que un nombre de variable PROLOG viene dada por la forma:

Cualquier palabra que comience con una letra mayúscula seguida o no de combinaciones de letras, cifras o subrayados o que comience con al menos un subrayado seguido o no de cualquier secuencia de alfanuméricos o subrayados.
Cada de las siguientes construcciones son equivalentes en virtud de la definición dada antes:
  La expresión regular (A|B|...|Z)|_(A|B|...|Z|a|b|...|z|_)*.
  El siguiente autómata finito representado como diagrama de estados permite el reconocimiento de variables de PROLOG.

Importancia de los lenguajes regulares:

La existencia y formalización de los lenguajes regulares (LR) y su vinculación con otros artefactos lingüísticos-matemáticos ya bien formalizados, estudiados e incluso llevados a la práctica ha sido de vital importancia en el ulterior desarrollo de los mecanismos de procesamiento de lenguajes de computadora, fundamentalmente en los analizadores lexicográficos gracias a la posibilidad de derivar el reconocimiento de los LR mediante autómatas finitos que son fáciles de implementar computacionalmente con mecanismos simples y rápidos, óptimos en la obtención de parsers veloces y robustos que a su vez le ofrecen a los desarrolladores información detallada de los errores léxicos, sintácticos e incluso advierten sobre errores semánticos.
Lo mismo sucede por ejemplo con las expresiones regulares implementadas ya en muchos Lenguaje de programación de propósito general modernos que permiten a los desarrolladores de lenguajes mecanismos muy eficientes para la obtención intuitiva de partes de compiladores que reconocen los tókenes o partículas lexicales del código fuente como fase del proceso completo de interpretación o compilado, según sea el caso.
A manera de ilustración en el caso del ejemplo anterior vemos la siguiente función Python que a partir de cualquiera de los elementos formalizadores del LR correspondiente permite decidir si un texto w es una variable PROLOG: