Está en la página 1de 3

Introducción a los Lenguajes Formales

Lenguaje Formal

• La teoría de los lenguajes formales estudia unas entidades matemáticas abstractas


denominadas lenguajes que en ningún momento debemos confundir o equiparar con las
lenguas naturales. Sin embargo, los lenguajes formales pueden, en determinadas
circunstancias, servirnos como modelos abstractos de determinadas propiedades de las
lenguas naturales, de ahí la importancia de conocer los fundamentos de la teoría.

•En matemáticas, lógica y ciencias de la computación, 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.

Alfabeto

• Un alfabeto es un conjunto finito de símbolos. El símbolo es un primitivo de la teoría de los


lenguajes formales y para representarlos se suelen utilizar o bien las primeras letras del
alfabeto latino o bien dígitos. Por tanto, cualquiera de los conjuntos siguientes es un alfabeto:

• Una cadena o palabra en un alfabeto es una serie arbitrariamente larga de símbolos unidos
por concatenación que representamos disponiendo los diferentes símbolos que la componen
en el orden deseado; por ejemplo: aaabbbccc, es una cadena. Denotamos la cadena vacía con
el símbolo Ʌ, 𝜀, ó con { } sin indicar ningún elemento entre ellas.

La longitud de una cadena es el número de símbolos de la cadena y se expresa como


|aaabbbccc| = 9.

En relación con cualquier alfabeto ∑, el conjunto de todas las cadenas en ∑, se denota como
∑*. Tal es el caso ∑, *={a,b}={ Ʌ, a, b, aa, ab, ba, bb, aaa, aab, aba, ….}
Lenguaje

Un lenguaje es un conjunto finito o infinito de cadenas. Los conjuntos siguientes son, por
tanto, lenguajes:

• Es necesario señalar que no todos los lenguajes que pueblan este universo son del interés
de la teoría de los lenguajes formales, cuyo objetivo es investigar si hay un orden dentro de
ese universo y estudiar las propiedades de aquellos lenguajes que podríamos calificar de
«interesantes».

• Hay dos puntos de vista desde los cuales podemos determinar si un lenguaje es interesante
o no. Por un lado, son interesantes aquellos lenguajes en los que se observa que se sigue
alguna pauta regular en la construcción de las cadenas.

Desde este punto de vista, el lenguaje L3 es digno de estudio, pero no L4:

• Estos dos puntos de vista son los que definen los objetivos principales de las dos grandes
disciplinas matemáticas ocupadas de poner orden en el universo de los lenguajes formales: la
Teoría de los Lenguajes Formales y la Teoría de la Complejidad Computacional.

 La Teoría de los lenguajes formales estudia los lenguajes prestando atención únicamente a
sus propiedades estructurales, definiendo clases de complejidad estructural y estableciendo
relaciones entre las diferentes clases.
 La Teoría de la complejidad computacional estudia los lenguajes prestando atención a los
recursos que utilizaría un dispositivo mecánico para completar un procedimiento de
decisión, definiendo así diferentes clases de complejidad computacional y las relaciones que
existen entre ellas.

 La clausura transitiva o, también, clausura de Kleene de un alfabeto , escrito *, es el


conjunto de todas las cadenas sobre . Por tanto:

Interpretar

Con estas herramientas ya podemos especificar algunos lenguajes utilizando constructores


de conjuntos:

También podría gustarte