SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
Módulo 1
Unidad 1 y 2
Lectura 1 - Lenguajes Formales
Materia: Lenguajes Formales y Computabilidad
Profesor: Daniel Zamo
Lenguajes Formales y Computabilidad – Daniel Zamo | 2
1. Lenguajes Formales
1. 1 Conjuntos, funciones, relaciones y
métodos de prueba
Conjuntos
Un conjunto es una colección de objetos. Los elementos u objetos del
conjunto pueden o no tener una relación entre ellos. Según esta definición
los elementos mostrados en la Figura 1 conforman un conjunto.
Figura 1: objetos que constituyen un conjunto
Esta noción de conjunto constituye una de las bases en la que la teoría de
lenguajes formales y autómatas se construye.
Elementos de un conjunto
Podemos identificar o etiquetar los elementos del conjunto.
Para el ejemplo de la Figura 1 podríamos acordar de identificar cada
elemento con una letra y asignarle una etiqueta resultando lo mostrado en
la Figura 2. De modo de identificar cada uno de ellos con un nombre.
Lenguajes Formales y Computabilidad – Daniel Zamo | 3
Figura 2: identificar los objetos
Debemos siempre tener en cuenta que estos elementos pueden ser de
cualquier tipo y representar cualquier cosa.
Resumiendo todo conjunto está formado por símbolos1 que son
entidades abstractas que pueden ser de cualquier tipo, aunque para el
tratamiento de este trabajo las letras y los dígitos serán los símbolos
usados con más frecuencia.
Con lo antedicho podemos afirmar:
• Los símbolos de un conjunto son etiquetados para facilitar la
exposición de los temas, normalmente con las primeras letras
minúsculas del alfabeto normal (a, b, c, ..) o con dígitos.
• Existen dos maneras de definir un conjunto:
1. Por enumeración: consiste básicamente en enumerar los
símbolos que pertenecen al conjunto.
 {0, 1, 2, 3, 4, 5, 6, 7} conjunto numérico en base 8 o
sistema octal.
2. Indicando algún criterio/s que se pueda/n utilizar para
determinar que símbolos pertenecen al conjunto. Realizarlo
de este modo es necesario cuando el número de símbolos es
muy grande. Y sería imposible enumerar todos los objetos.
 Por ejemplo pensemos el caso de un conjunto perros,
podemos definir una regla de pertenencia al mismo.
Podemos decir que un objeto perro pertenece a nuestro
conjunto y entonces para cualquier objeto sería posible
 definir si pertenece o no al conjunto. La forma habitual de
 escribir estas reglas en matemáticas se expresan con el
siguiente patrón: 𝑃 = {𝑥 |𝑥 𝑒𝑠 𝑝𝑒𝑟𝑟𝑜}
1
Símbolo, objeto, miembro, dígito o elemento serán utilizados indistintamente en este
trabajo para representar lo mismo, salvo indicación contraria.
Lenguajes Formales y Computabilidad – Daniel Zamo | 4
Un conjunto es una colección de objetos considerada como un objeto en sí.
Un conjunto está definido únicamente por los elementos que lo componen,
y no por la manera en la que se lo representa.
Conjunto vacío
Se indica aquí ya que se trata de un conjunto un tanto especial. Se trata de
un conjunto que no tiene elementos. Es representado por 𝜙 y también por
el símbolo {𝜖}.
Relación entre conjuntos y sus elementos
Existe una serie de relaciones básicas entre los conjuntos y sus
elementos:
• Pertenencia. Es la relación más básica. Dado un elemento 𝑥, esté
puede o no pertenecer a un conjunto dado 𝐴. Esto se indica como
𝑥 ∈ 𝐴.
• Igualdad. Dos conjuntos son iguales si y sólo si tienen los mismos
elementos. Este principio, denominado principio de extensionalidad
establece el hecho de que un conjunto queda definido únicamente
por sus elementos.
• Inclusión. Dado un conjunto 𝐴, cualquier subcolección 𝐵 de sus
elementos es un subconjunto de 𝐴. Esto se indica como 𝐵 ⊆ 𝐴.
Operaciones con conjuntos
Las operaciones básicas del álgebra de conjuntos son:
• Unión. La unión de los conjuntos 𝐴 y 𝐵 es el conjunto 𝐴 ∪ 𝐵 que
contiene todos los elementos de 𝐴 y de 𝐵.
• Intersección. La intersección de dos conjuntos 𝐴 y 𝐵 es el conjunto
𝐴 ∩ 𝐵 que contiene todos los elementos comunes de A y B.
• Diferencia. La diferencia entre dos conjuntos 𝐴 y 𝐵 es el conjunto
𝐴 − 𝐵 que contiene todos los elementos de 𝐴 que no pertenecen a 𝐵.
• Complemento. El complemento de un conjunto 𝐴 es el conjunto
𝐴 𝐶
que contiene todos los elementos que no pertenecen a 𝐴.
𝑃 = {𝑥 |𝑥 𝑒𝑠 𝑝𝑒𝑟𝑟𝑜}
• El conjunto se etiqueto con una letra en mayúscula.
• La definición se encerró en paréntesis
• El símbolo | se lee como “que tal”
La lectura resulta: P es el conjunto de todos los x tal que x es perro
Lenguajes Formales y Computabilidad – Daniel Zamo | 5
• Producto cartesiano. El producto cartesiano de dos conjuntos 𝐴 y
𝐵 es el conjunto 𝐴 𝑥 𝐵que contiene todos los pares ordenados (𝑎, 𝑏)
cuyo primer (segundo) elemento pertenece a 𝐴 (𝑎 𝐵).
Relaciones
En el lenguaje del amor [moisl.lecture1], una "relación" se refiere al estado
en el que dos personas se encuentran. Podemos formalizar este concepto,
para así comprender la relación en lenguaje formal. Tomemos dos
conjuntos: 𝑀 = {𝑥 |𝑥 𝑒𝑠 𝑢𝑛𝑎 𝑚𝑢𝑗𝑒𝑟} y 𝐻 = {𝑦 | 𝑦 𝑒𝑠 𝑢𝑛 ℎ𝑜𝑚𝑏𝑟𝑒}. Calculemos
el producto cartesiano, que se traduce en un conjunto que contiene todos
los pares posibles de hombres y mujeres.
Ahora pensemos en un hombre y una mujer que están enamorados
estos son un par en el producto cartesiano. Si ahora imaginamos a
todos los hombres y mujeres de una ciudad que están enamorados
tendremos un conjunto bastante más grande de pares. Sin embargo,
todavía es un pequeño subconjunto del producto cartesiano de todos
los hombres y mujeres. Ahora estamos en condiciones de identificar y
seleccionar todas las parejas en el conjunto amor relevantes del
producto cartesiano de todos los hombres y mujeres, y obtendremos
un conjunto, aquí hemos llegado a lo que un matemático llamaría
una “relación”.
Funciones
Tomemos dos conjuntos 𝑅 y 𝑇. El producto cartesiano 𝑅 𝑥 𝑇 se compone de
pares ordenados (𝑠, 𝑡), donde 𝑠 𝜖 𝑆 y 𝑡 𝜖 𝑇.
Una relación es cualquier conjunto de pares ordenados, o cualquier
correspondencia entre conjuntos y una función es la que da exactamente un
valor a la variable dependiente (t) para cada valor de la variable
independiente (𝑠14T ) en el dominio.
O dicho de otro modo una relación entre 2 conjuntos 𝑆 y 𝑇14T es cualquier
subconjunto del producto cartesiano 𝑆 𝑥 𝑇14T , incluso el vacio. Una función de
𝑆14T en 𝑇14T debe cumplir que para todo elemento de 𝑆14T exista un único elemento
de 𝑇14T (que se suele llamar 𝑓(𝑠)14T ) relacionado con él.
Una función puede considerarse como un caso particular de una relación.
Cada relación o correspondencia de un elemento 𝑥 ∈ 𝑋 con un (y sólo un)
𝑦 ∈ 𝑌 se denota 𝑓(𝑥) = 𝑦, en lugar de (𝑥, 𝑦) ∈ 𝑓.
Lenguajes Formales y Computabilidad – Daniel Zamo | 6
Ejemplos
Relación
Dados los conjuntos 𝐴 = {1, 2} y 𝐵 = {𝑎, 𝑏}
• Su producto cartesiano es: 𝐴 𝑥 𝐵 = {(1, 𝑎), (1, 𝑏), (2, 𝑎), (2, 𝑏)}
• Una relación es un subconjunto de ese producto por ejemplo:
𝑅 = {(2, 𝑎), (2, 𝑏)}
Función
Dados los conjuntos 𝑷 = {𝒙 |𝒙 𝒆𝒔 𝒑𝒐𝒍í𝒈𝒐𝒏𝒐} y 𝑵 = {𝒚 |𝒚 𝒆𝒔 𝒏ú𝒎𝒆𝒓𝒐}
• Ambos conjuntos están relacionados a través del número de
lados de cada polígono, a cada polígono del conjunto 𝑃 le
corresponde un valor (y solo uno) del conjunto 𝑁.
Figura 3: representación de la función, como un conjunto, ver
[Wikipedia.funcion]
Relación es la correspondencia de un primer conjunto, llamado Dominio, con un
segundo conjunto, llamado Recorrido o Rango, de manera que a cada elemento del
Dominio le corresponde uno o más elementos del Recorrido o Rango. Dicho de otro
modo la relación es un subconjunto de un producto cartesiano de los conjuntos, de tal
manera que los símbolos del conjunto resultante están "relacionados" de alguna
manera, compartiendo algunas características determinadas.
De manera abstracta, el concepto general de función se refiere a una regla que asigna a
cada elemento de un primer conjunto un único elemento de un segundo conjunto. La
Función es una relación a la cual se añade la condición de que a cada valor del Dominio
le corresponde uno y sólo un valor del Recorrido.
Lenguajes Formales y Computabilidad – Daniel Zamo | 7
Métodos de prueba
Problema
En la teoría de autómatas, un problema es la cuestión de decidir si una
determinada cadena es un elemento de un determinado lenguaje.
Cualquier cosa que coloquialmente denominemos problema podemos
expresarlo con un lenguaje [Hopcroft.2007, página 31] (o como elemento
de un lenguaje), por ello este autor asegura que lenguaje y problema es la
misma cosa.
De forma más precisa podemos decir:
Para un alfabeto Σ y si 𝐿 es un lenguaje de Σ, entonces el problema 𝐿 es:
Dada una cadena 𝑤 de Σ∗
, decidir si 𝑤 pertenece o no a 𝐿.
En matemáticas, un teorema es una afirmación que es verdadera. Una
demostración (prueba) es una secuencia de afirmaciones
matemáticas que constituyen un argumento para demostrar que un
teorema es verdadero. Las declaraciones de la demostración de un
teorema son axiomas, las hipótesis del teorema a ser probado, y los
teoremas previamente probados. La pregunta principal es "¿Cómo hacemos
para demostrar teoremas?" (Cómo resolvemos un problema dado). Esto no
suele ser simple, ni fácil. No hay manera específica de dar con una prueba,
ni una solución tan directa, pero hay algunas estrategias genéricas que
podrían ser de ayuda. En esta sección, se revisan algunas de estas
estrategias utilizadas por [Hopcroft.2007]. La mejor manera de hacerse una
idea de cómo lograrlo es mediante la resolución de un gran número de
problemas.
Estos son algunos consejos útiles:
• Leer y entender completamente la afirmación del teorema
por demostrar. (La mayoría de las veces esta es la parte más
difícil).
• Suele ocurrir que, los teoremas contienen teoremas dentro
de ellos mismos.
• Tratar de resolver algunos casos simples del teorema de
modo de obtener un control sobre él.
• Tratar de escribir las demostraciones, una vez que se tienen.
(Esto es para asegurar la exactitud de la misma; suele ocurrir
que los errores se encuentran en el momento de la escritura).
• Es necesario tener paciencia, pensar, expresarse y escribir
con claridad y tratar de ser lo más precisos posible.
Lenguajes Formales y Computabilidad – Daniel Zamo | 8
Demostraciones formales
Las demostraciones es algo que todos los informáticos necesitamos
comprender y conocer. Es conveniente establecer la veracidad de la
proposición oportuna que se vaya a emplear para la solución de un
problema.
Algunos profesionales suelen aplicar el punto de vista de que una
demostración formal de la corrección de un programa debe realizarse a
medida que se escribe el mismo. Este punto de vista no es productivo. Por
otro lado hay quienes aseguran de que las demostraciones no tienen lugar
en la disciplina de programación, de modo que aplican la afirmación si no
está seguro de que el programa sea correcto, ejecútelo y compruébelo.
La postura aconsejada por [Hopcroft.2007] incluye ambas.
• Probar los programas es fundamental.
1. Pero se podrá realizar hasta cierto punto ya que es imposible
por ejemplo hacerlo para todas las posibles entradas.
2. En el caso de un programa muy complejo (que contenga
recursiones o iteraciones), si no comprendemos que es lo
que ocurre cuando se ejecuta un bucle o una llamada a una
tarea de forma recursiva, es poco probable que podamos
escribir el código correctamente. Si al probar el código
resulta ser incorrecto, será necesario reescribirlo.
• Para conseguir iteraciones o recursiones correctas, es necesario
establecer hipótesis inductivas y resulta útil razonar (formal o
informalmente), que la hipótesis es coherente con la iteración o
recursión.
La teoría de autómatas, quizás más que cualquier otra materia de las que
conforman las Ciencias de la Computación, se presta a las demostraciones.
Demostraciones deductivas
Estas consisten de una secuencia de proposiciones cuya veracidad se
comprueba partiendo de una proposición inicial (Hipótesis) o de varias
proposiciones dadas, hasta llegar a una conclusión [Hopcroft.2007, página
6]. Es una demostración con una secuencia de pasos justificados.
Este razonamiento se mueve de lo general a lo particular2, tomando una
premisa general, deduciendo conclusiones particulares. Un argumento
deductivo valido es aquel en el que la conclusión necesariamente se deriva
de la premisa.
Puede ser que la premisa no sea verdadera, pero la forma del argumento si
sea válida.
2
Información completa en [harvey] de la lógica inductiva y deductiva.
En matemáticas una proposición verdadera se llama teorema
Lenguajes Formales y Computabilidad – Daniel Zamo | 9
Un argumento deductivo valido contendrá algo en la conclusión totalmente
nuevo e independiente de aquellas cosas mencionadas en la premisa inicial
(hipótesis). Todo en la conclusión de un argumento deductivo válido debe
también estar contenido en las premisas. La veracidad de la
conclusión de un argumento de este tipo depende de dos cosas:
• La condición de correcta (o que sea válida) de la forma del
argumento.
• La verdad (o veracidad) de la premisa.
De modo que la única debilidad de un argumento deductivo es el verdadero
valor de las premisas. Las conclusiones serán tan buenas como sus
premisas. Dicho de otro modo las conclusiones obtenidas siempre están
determinadas por las presunciones establecidas.
Ejemplo
Premisa: todos los hombres son mortales.
Premisa: Juan es un hombre.
Conclusión: Juan es mortal.
Reducción a definiciones
Los términos utilizados en la declaración pueden tener consecuencias que
son menos obvias de ver. Si no se está seguro de cómo comenzar una
prueba, quizás se pueda convertir todos los términos de la hipótesis a sus
definiciones.
Otras formas de teoremas
Demostración del tipo Si – entonces
La forma 𝑆𝑖 − 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 (𝑖𝑓 − 𝑡ℎ𝑒𝑛) es la más común en las áreas típicas de
las matemáticas. La mayoría de las proposiciones matemáticas pueden ser
indicadas con esta forma, donde encontramos la hipótesis y la tesis.
Ejemplo:
En estas estructuras si cambiamos la hipótesis con la tesis se obtiene la
inversa de la proposición.
Lenguajes Formales y Computabilidad – Daniel Zamo | 10
Demostración del tipo Si – y – solo –si
En ocasiones nos encontraremos con proposiciones del tipo A si y solo si B.
En estos casos para demostrar la proposición "A si y solo si B" se demostrara
las proposiciones siguientes:
1. La parte 𝑠𝑖: "𝑠𝑖 𝐵 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝐴" y
2. La parte solo 𝑠𝑖: “𝑠𝑖 𝐴 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝐵”, lo que ha menudo se escribe de la
forma equivalente “𝐴 𝑠𝑜𝑙𝑜 𝑠𝑖 𝐵”
Las demostraciones pueden presentarse en cualquier orden. En muchos
teoremas una parte es claramente más fácil que la otra, por lo que es
habitual comenzar por ella.
Teoremas que no parecen tener la forma si-entonces
A veces, nos encontramos con teoremas que no parece tener una hipótesis
del tipo si-entonces. Un ejemplo es el teorema trigonométrico: 𝑠𝑖𝑛2
𝜃 +
𝑐𝑜𝑠2
𝜃 = 1, el cual no tiene una hipótesis, si no que consiste en todas las
declaraciones que se necesita saber para interpretar este teorema.
Conectivas lógicas
A continuación se adjunta la tabla que despliega las conectivas lógicas, incluyendo
los símbolos que se utilizan para este trabajo, dicha tabla está basada en el artículo
[Miller.symbol].
Conectiva
Expresión en el
lenguaje
natural
Símbolo
utilizado
Símbolo
alternativo
Negación No ¬ ~
Conjunción Y ∧ &
Disyunción O ∨
Condicional
material
Si … entonces ⟶ ⊃
Bicondicional Si y solo si ↔ ≡
Negación
conjunta
Ni … ni ↓
Disyunción
excluyente
O bien … o bien ↮ ⊕, ≢, 𝑊
Lenguajes Formales y Computabilidad – Daniel Zamo | 11
Otras formas de demostración
Demostración por reducción al absurdo
Prueba indirecta por la cual se demuestra una tesis cuando su negación nos
conduce a una contradicción lógica: si suponemos ¬𝐴 y llegamos a una
contradicción (𝐵 ∧ ¬𝐵), entonces podemos afirmar que 𝐴 es
necesariamente verdadera.
Contraejemplos
En la lógica, un contraejemplo es una excepción a una regla general que se
propone. Por ejemplo, consideremos la proposición “todos los docentes son
perezosos”. Debido a que esta declaración hace que la afirmación de que
una determinada propiedad (la pereza) se cumple para todos los docentes,
incluso un solo ejemplo de un docente diligente demostrará que es falso.
Por lo tanto, cualquier docente trabajador es un contraejemplo “todos los
docentes son perezosos”. Más precisamente, un ejemplo contrario es una
instancia específica de la falsedad de una cuantificación universal (un "para
todos" declaración).
Este término también se utiliza a veces para los ejemplos que ilustran la
necesidad de la hipótesis completa de un teorema. Un contraejemplo puede
ser local o global, para un ejemplo en concreto.
Demostraciones inductivas
En el razonamiento inductivo, comenzamos con las observaciones y
medidas específicas, de modo de detectar patrones y regularidades, esto nos
permite formular algunas hipótesis tentativas que podemos explorar, y,
finalmente, terminar el desarrollo con algunas conclusiones generales,
teorías o definiciones. La demostración inductiva es recursiva desde una
proposición parametrizada.
El razonamiento inductivo se mueve de lo particular a lo general. Reúne
observaciones particulares en forma de premisas, luego razona a partir de
estas hacia una conclusión general. Una forma común de realizar esto es
cuando recopilamos evidencia de algún fenómeno observado, luego
derivamos una conclusión general acerca del fenómeno basados en nuestra
evidencia recopilada. En un argumento inductivo, la conclusión va más allá
de lo que las premisas nos dicen en realidad.
Lenguajes Formales y Computabilidad – Daniel Zamo | 12
Representación inductivo – deductivo
La Figura 4 muestra un esquema del razonamiento inductivo y el
deductivo, a modo de comparación.
1.2 Alfabetos. Palabra. Operaciones con
palabras
Alfabetos
Comúnmente con el término “alfabeto” nos referimos a las letras que
componen nuestro sistema de escritura. En el lenguaje formal y en la teoría
de autómatas la noción de alfabeto se generaliza para incluir cualquier
conjunto de símbolos y que puede representarse en cualquier medio.
Los elementos de un alfabeto se llaman letras o símbolos. Y normalmente
serán identificados con letras o dígitos, aunque esto no siempre es
necesario. Con esto queremos hacer notas que los símbolos de un alfabeto
pueden corresponderse a estructura de datos complejas en una
computadora.
Un alfabeto se puede definir por enumeración (como lo hicimos para los
conjuntos).
A continuación se definen dos alfabetos:
• Σ1 = {0, 1} es el alfabeto de los números binarios;
• Σ2 = {<, >} es el alfabeto de los símbolos < y >
Figura 4: razonamiento deductivo e inductivo, más información en [socialreseach]
Un alfabeto es un conjunto no vacío de símbolos o letras (elementos)
El termino símbolo es una utilidad de construcción literal para ilustrar las ideas,
es una abstracción, que pueden ser marcas o una configuración de marcas para
formar un patrón particular para referirse a una idea.
Lenguajes Formales y Computabilidad – Daniel Zamo | 13
Palabra
Una palabra, o cadena, sobre un alfabeto es una secuencia finita de
símbolos (o letras). El conjunto de todas las palabras sobre un alfabeto Σ se
denota generalmente por Σ∗
. En matemáticas o en programación, una
cadena de caracteres (palabra, secuencia de caracteres, o frase) es una
secuencia ordenada de longitud arbitraria (aunque finita) de elementos que
pertenecen a un cierto alfabeto. En general, una cadena de caracteres es una
sucesión de caracteres (letras, números u otros signos o símbolos).
Ejemplo:
• sea el alfabeto Σ3 = {𝑎, 𝑏, 𝑐, 𝑑, 𝑒, … … … . . , 𝑧} (letras minúsculas
latinas)
• son palabras sobre el alfabeto las cadenas 𝑗𝑢𝑎𝑛, 𝑎𝑙𝑢𝑚𝑛𝑜, 𝑎𝑢𝑡𝑜
Una definición más formal de palabra que pertenezca a un alfabeto debe
partir de la existencia de constructores y destructores de palabras. Para
poder definir palabras sobre un alfabeto son precisas tres componentes:
1. Una secuencia o palabra especial, llamada palabra vacía. La misma
no contiene ninguna letra (cero símbolos). Es identificada con 𝜀
(otros autores, [Cubero.2007] , la denotan con 𝜆)
2. Un constructor de palabras (la operación de concatenación de un
símbolo con una palabra), que a partir de un símbolo 𝜎 y una
palabra 𝑥 construye una palabra nueva, 𝜎. 𝑥, que se obtiene
colocando la letra 𝜎 a la izquierda de las letras de 𝑥.
3. Dos analizadores de palabras, identificados como inicial y resto, de
modo que si 𝑥 es una palabra no vacía, 𝑖𝑛𝑖𝑐𝑖𝑎𝑙(𝑥) es una letra (la
primera de 𝑥) y 𝑟𝑒𝑠𝑡𝑜(𝑥) es otra palabra.
Es necesario que los constructores y analizadores de palabras aquí
introducidos verifiquen las siguientes relaciones:
• Si 𝑥 es una palabra arbitraria distinta de 𝜖, se cumple que:
𝑖𝑛𝑖𝑐𝑖𝑎𝑙(𝑥). 𝑟𝑒𝑠𝑡𝑜(𝑥) = 𝑥
• Si 𝑥 es una palabra cualquiera y 𝜎 es cualquier símbolo, se cumple
lo siguiente: 𝑖𝑛𝑖𝑐𝑖𝑎𝑙(𝜎. 𝑥) = 𝜎 ∧ 𝑟𝑒𝑠𝑡𝑜(𝜎. 𝑥) = 𝑥
Convención
En lo sucesivo se utilizarán las últimas letras minúsculas del alfabeto habitual para
identificar las palabras de un alfabeto. Las letras iniciales del alfabeto habitual serán
utilizadas para identificar un símbolo en particular perteneciente al alfabeto. Por
ejemplo 𝑥 = 𝑗𝑢𝑎𝑛, 𝑦 = 𝑎𝑏, 𝑤 = 𝑎𝑙𝑢𝑚𝑛𝑜, tanto 𝑥, 𝑦 y 𝑤 son palabras del alfabeto Σ3
(𝑥, 𝑦, 𝑤 ∈ Σ)
Lenguajes Formales y Computabilidad – Daniel Zamo | 14
Hay muchas maneras de implementar un sistema de palabras que satisfaga
los axiomas anteriores mediante estructuras de datos en un ordenador, esto
permite representar y analizar conceptos más complejos.
Longitud de cadena
Se llama longitud de una cadena al número de letras (símbolos) que la
componen.
Sea la palabra 𝑥, su longitud es representada con la notación |𝑥|.
Ejemplo: si 𝑤 = 111 su longitud es |𝑤| = |111| = 3
Lenguaje universal
El conjunto de todas las palabras que se puede construir con las letras de un
alfabeto Σ se llama universo del discurso o lenguaje universal de Σ. Y es
representado como Σ∗
. El lenguaje universal es un conjunto infinito.
Operaciones con palabras
Esta sección define algunas operaciones sobre el conjunto Σ∗
de todas las
palabras construidas con las letras de un alfabeto Σ = {𝑎1, 𝑎2, … , 𝑎 𝑛}
Concatenación de palabras
Sean dos palabras 𝑥, 𝑦 ∈ Σ.
• Suponiendo que |𝑥| = 𝑖, |𝑦| = 𝑗.
• La concatenación de las palabras 𝑥 e 𝑦, se obtiene añadiendo los
símbolos de 𝑦 a continuación de los de 𝑥.
• Esta operación es representada indistintamente como 𝑥𝑦 o 𝑥. 𝑦, y
genera otra palabra 𝑧.
• Por ejemplo: si 𝑥 = 𝑏𝑙 e 𝑦 = 𝑎𝑎𝑎𝑏𝑙𝑎, la concatenación es 𝑧 = 𝑥𝑦 =
𝑏𝑙𝑎𝑎𝑎𝑏𝑙𝑎
• La notación 𝑥. 𝑦 se utiliza cuando pueda producirse una ambigüedad
si se utiliza la notación 𝑥𝑦 o cuando sea necesario especificar la
notación de la operación con un símbolo.
• Podemos observar que la concatenación es una extensión de la
concatenación de un símbolo con una palabra, como se definió
anteriormente.
Propiedades de la concatenación:
• Esta operación es cerrada en el conjunto de palabras Σ∗
• Tiene propiedades asociativa de modo que 𝑥(𝑦𝑧) = (𝑥𝑦)𝑧
• La operación de concatenación es un semigrupo
• El símbolo vació ({𝜀} o 𝜆) es el elemento neutro de la concatenación
de palabras tanto por la derecha como por la izquierda. En efecto,
sea 𝑤una palabra cualquiera, se cumple que 𝜆𝑥 = 𝑥𝜆 = 𝑥
• La concatenación no tiene propiedades de conmutación
• La concatenación tiene propiedad de cancelación por la izquierda.
Para todo 𝑎, 𝑏, 𝑐 ∈ Σ∗
se cumple que 𝑎𝑏 = 𝑎𝑐 ⇒ 𝑏 = 𝑐
Lenguajes Formales y Computabilidad – Daniel Zamo | 15
• También se cumple la ley de cancelación por la derecha: 𝑎𝑐 = 𝑏𝑐 ⇒
𝑎 = 𝑏
Potencias de un alfabeto
• Si Σ es un alfabeto, se puede expresar el conjunto de todas las
cadenas de una determinada longitud de dicho alfabeto utilizando
una notación exponencial. De modo que definiendo Σ 𝑘
resultará el
conjunto de las cadenas de longitud 𝑘, tales que cada uno de los
símbolos de las mismas pertenece a Σ.
Potencia i-ésima
• Se llama potencia i-ésima de una palabra 𝑎 a la operación que
consiste en concatenarla consigo misma 𝑖 cantidad de veces. Por
propiedad asociativa no es necesario especificar el orden en el que
tiene que ejecutarse las 𝑖 operaciones.
• Ejemplo: sea 𝑥 un símbolo (palabra) la potencia i-ésima se calcula
como 𝑥 𝑖
= 𝑥𝑥 … 𝑥 (𝑖 cantidad de veces).
• Esta no es una operación nueva si no que es un modo de reducir
algunos casos de la operación concatenación.
Palabra inversa
• Sea 𝑥 = 𝜎1 𝜎2 … 𝜎 𝑛 su palabra inversa (o palabra refleja) se
representa como 𝑥 𝑅
donde 𝑥 𝑅
= 𝜎 𝑛 … 𝜎2 𝜎1 o sea la inversa está
formada por las mismas letras en orden inverso.
Propiedades
Prefijos, sufijos
• Sea 𝑧 = 𝑥𝑦. Se dice que 𝑥 es prefijo (o cabeza) de 𝑧, y que 𝑦 es sufijo
(o cola) de 𝑧. Además, 𝑥 es prefijo propio de 𝑧 si 𝑦 no es la palabra
vacía. De igual manera, 𝑦 es sufijo propio de 𝑧 si 𝑥 no es la palabra
vacía.
o Ejemplo: sea 𝑥 = 𝑎𝑏𝑐. Las siguientes palabras son prefijos de
𝑥 ∶ 𝜖, 𝑎, 𝑎𝑏, 𝑎𝑏𝑐. Las siguientes palabras son sufijos de
𝑥: 𝜖, 𝑐, 𝑏𝑐, 𝑎𝑏𝑐. Todas son propias excepto 𝑎𝑏𝑐.
Propiedad de la longitud
• Observe que la función longitud de una palabra tiene, respecto a la
concatenación, una propiedad semejante a la función logaritmo
respecto a la multiplicación de números reales: |𝑥𝑦| = |𝑥| + |𝑦|.
Lenguajes Formales y Computabilidad – Daniel Zamo | 16
1.3 Definición Formal de Lenguaje.
Operaciones con lenguajes
Definición formal de lenguaje
Lenguaje, sobre un alfabeto Σ, es cualquier subconjunto 𝐿 del conjunto
universal de palabras sobre el alfabeto Σ.
Un lenguaje formal es un lenguaje cuyos símbolos primitivos y reglas
para unir esos símbolos están formalmente especificados.
[Wikipedia.lenguaje].
Una importante restricción sobre lo que puede ser un lenguaje es que todos
los alfabetos son finitos, de modo que los lenguajes, aunque pueden tener
un número infinito de cadenas, están restringidos a que dichas cadenas
estén formadas por los símbolos que definen un alfabeto finito y
establecido.
Es válido describir lenguajes utilizando la descripción de conjuntos. Esto es
del modo {𝑥 | 𝑎𝑙𝑔𝑜 𝑎𝑐𝑒𝑟𝑐𝑎 𝑑𝑒 𝑥}.
Ejemplo: {𝑤 | 𝑤 𝑒𝑠 𝑢𝑛 𝑝𝑟𝑜𝑔𝑟𝑎𝑚𝑎 𝑃𝐻𝑃 𝑠𝑖𝑛𝑡á𝑐𝑡𝑖𝑐𝑎𝑚𝑒𝑛𝑡𝑒 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑜}
También es habitual reemplazar 𝑤 por alguna expresión con parámetros y
describir los símbolos del lenguaje estableciendo condiciones sobre ellos.
Ejemplo: �√ 𝑛2
� 20 > 𝑛 ≥ 4} (El conjunto de la raíz cuadrada de los
𝑛 𝑡𝑎𝑙 𝑞𝑢𝑒 𝑛 es 𝑚𝑎𝑦𝑜𝑟 𝑖𝑔𝑢𝑎𝑙 𝑞𝑢𝑒 4 y 𝑚𝑒𝑛𝑜𝑟 𝑞𝑢𝑒 20)
Operaciones con lenguajes
Podemos utilizar varias operaciones para generar nuevos lenguajes, a partir
de otros dados.
Concatenación
Sean dos lenguajes definidos sobre el mismo alfabeto, 𝐿1, 𝐿2 ⊂ Σ∗
.
La concatenación de 𝐿1 𝐿2 (alternativamente 𝐿1. 𝐿2) consiste de todas
aquellas palabras de la forma 𝑦𝑤 donde 𝑦 es una palabra de 𝐿1 y 𝑤 es una
palabra de 𝐿2.
Palabra: sea un alfabeto Σ1, se llama palabra (formada con los símbolos de Σ1) a toda
secuencia finita de las letras pertenecientes a ese alfabeto.
Lenguaje: cualquier subconjunto 𝐿 del conjunto universal de palabras sobre un
alfabeto Σ.
Lenguajes Formales y Computabilidad – Daniel Zamo | 17
Más formalmente se llama concatenación de los dos lenguajes, denotada
como 𝐿1 𝐿2, al lenguaje definido así: 𝐿1 𝐿2 = {𝑥𝑦 | 𝑥 ∈ 𝐿1, 𝑦 ∈ 𝐿2}.
Propiedades de la concatenación
• Operación cerrada: el lenguaje concatenación pertenece al mismo
alfabeto inicial de los lenguajes que participan en la operación.
• Asociativa: la concatenación es asociativa o sea : (𝐿1 𝐿2)𝐿3 =
𝐿1(𝐿2 𝐿3).
Por cumplirse las dos propiedades anteriores, la concatenación de
lenguajes es también un semigrupo.
• Existencia del elemento neutro: para cualquier lenguaje 𝐿, el
lenguaje formado por la palabra vacía cumple que ∅𝐿 = 𝐿∅ = 𝐿
Por cumplirse las propiedades anteriores, esta operación es un
monoide.
Unión
Sean dos lenguajes definidos sobre el mismo alfabeto, 𝐿1, 𝐿2 ⊂ Σ∗
.
Se define la unión de los dos lenguajes, 𝐿1 + 𝐿2, al lenguaje definido así:
𝐿1 + 𝐿2 = {𝑥 | 𝑥 ∈ 𝐿1 ∨ 𝑥 ∈ 𝐿2}
Es decir, al conjunto formado por las palabras que pertenezcan
indistintamente a uno u otro de los lenguajes.
El símbolo para denotar la unión de lenguajes puede ser + o ∪.
Cualquier lenguaje formado por un numero finito de palabras,
{𝑥1, 𝑥2, 𝑥3, … , 𝑥 𝑛}, se puede escribir de la forma: 𝑥1 + 𝑥2 + 𝑥3 + ⋯ + 𝑥 𝑛 ≡
𝑥1 ∪ 𝑥2 ∪ 𝑥3 ∪ … ∪ 𝑥 𝑛
Propiedades de la unión
La unión de lenguajes posee las siguientes propiedades
• Operación cerrada: el lenguaje resultante de la unión de dos
lenguajes sobre el mismo alfabeto es también un lenguaje sobre
dicho alfabeto.
• Propiedad asociativa: (𝐿1 ∪ 𝐿2) ∪ 𝐿3 = 𝐿1 ∪ (𝐿2 ∪ 𝐿3).
Por cumplirse las dos propiedades anteriores, la unión de lenguajes
es un semigrupo.
• Existencia de elemento neutro: cualquiera que sea el lenguaje 𝐿, el
lenguaje vacío que ∅ ∪ 𝐿 = 𝐿 ∪ ∅ = 𝐿.
Por cumplirse las tres propiedades anteriores, la unión de lenguajes
es monoide.
• Propiedad conmutativa: cualesquiera que sean 𝐿1 y 𝐿2, se verifica
que 𝐿1 ∪ 𝐿2 = 𝐿2 ∪ 𝐿1.
Por poseer las cuatro propiedades anteriores se dice que la unión de
dos lenguajes conforman un monoide abeliano.
Lenguajes Formales y Computabilidad – Daniel Zamo | 18
• Propiedad idempotente: cualquiera que sea 𝐿, se cumple que
𝐿 ∪ 𝐿 = 𝐿.
Como tanto la concatenación como la unión son un monoide se dice que el
conjunto de lenguajes sobre un alfabeto, junto con las operaciones de
concatenación y de unión, es un binoide.
A partir de los lenguajes formados por la palabra vacía o por una única
palabra de una sola letra, junto a las operaciones de concatenación y unión
es posible generar cualquier lenguaje sobre un alfabeto Σ (excepto el 𝜙). Por
lo tanto, el alfabeto es un conjunto de generadores para el conjunto 𝕃 de
todos los lenguajes que pueden definirse sobre Σ por lo que 𝕃 se denomina
binoide libre generado por Σ.
Potencia i-ésima
Sea 𝐿 un lenguaje la potencia i-ésima viene dada por concatenarlo tantas
veces como lo indica 𝑖. Al igual que la concatenación esta operación tiene
propiedad asociativa, no es necesario especificar el orden en el que tienen
que efectuarse las 𝑖 operaciones de concatenación: 𝐿𝑖
= 𝐿𝐿𝐿𝐿 … 𝐿 (tantas
veces como lo indique 𝑖).
Algunos autores no consideran a esta como una operación en si, ya que es
una extensión de la concatenación, pero en algunos casos puede simplificar
algunos casos de la.
Se define también 𝐿1
= 𝐿 y 𝐿0
= 𝜆. Es evidente que se verifica que, para todo
lenguaje 𝐿 y para todo 𝑖, 𝑗 ≥ 0, 𝐿𝑖
𝐿 𝑗
= 𝐿𝑖+𝑗
.
Iteración
Se llama iteración, cierre o clausura de un lenguaje 𝐿:
𝐿∗
=∪𝑖=0
∞
𝐿𝑖
Esto quiere decir, el lenguaje que se obtiene uniendo el lenguaje 𝐿 con todas
sus potencias posibles, incluso 𝐿0
.
Clausura positiva
La clausura positiva de un lenguaje 𝐿 se define así:
𝐿+
=∪𝑖=1
∞
𝐿𝑖
Las siguientes entidades son evidentes:
𝐿∗
= 𝐿+
∪ 𝜆
𝐿+
= 𝐿𝐿∗
= 𝐿∗
𝐿
Esta operación justifica la notación de Σ∗
para el lenguaje universal de un
alfabeto Σ.
Lenguajes Formales y Computabilidad – Daniel Zamo | 19
Inverso
Sea 𝐿 un lenguaje cualquiera. Se llama inverso o lenguaje reflejo de 𝐿 a
{𝑥 𝑅
| 𝑥 ∈ 𝐿}
es decir, el que contiene las palabras inversas a las de 𝐿.
Si tenemos un lenguaje 𝐿, su inverso es representado por 𝐿 𝑅
.
Expresiones regulares
Hemos visto que los lenguajes son un conjunto finito o infinitos de
sentencias. Los lenguajes de programación con un número de sentencias
finitos se pueden especificar exhaustivamente enumerando todas sus
sentencias. No obstante para los lenguajes con un número de sentencias
infinito esta tarea se hace imposible, pues los medios para describirlos son
finitos. La manera habitual de describir un lenguaje es mediante su
gramática, pero debemos considerar que las gramáticas que se utilizan en
los lenguajes de programación necesitan de una modelización matemática
que haga factible su implementación en los compiladores. Noam Chomsky
(ver sección Gramáticas de Chomsky) logro grandes avances en la
concepción de un modelo matemático de las gramáticas conectándolos con
los lenguajes naturales. Esto permitió descubrir una relación entre la teoría
de las maquinas abstractas y la teoría de los lenguajes formales, facilitando
no solo la comprensión y la descripción formal de los lenguajes, sino
también el desarrollo de los correspondientes compiladores para la
programación de computadoras que por ese tiempo estaban surgiendo. Se
original así los metalenguajes, que son herramientas que sirven para
describir formalmente a los lenguajes.
Los metalenguajes son herramientas para la descripción formal de los
lenguajes, que facilitan no sólo la comprensión del mismo, sino también el
desarrollo del compilador correspondiente.
Un ejemplo de metalenguaje son las expresiones regulares, las cuales
describen los componentes léxicos (o tokens) de un lenguaje, estas
expresiones son utilizadas en muchos sistemas que tienen que ver con el
procesamiento y reconocimiento de cadenas, por ejemplo:
1. Muchos comandos de búsqueda, como sed o grep de UNIX (Linux) o
comandos equivalentes para la búsqueda de cadena (tokens) que se
ven en los navegadores web o los sistemas de formato de texto. Estos
sistemas utilizan una notación de expresión regular, como patrones
que describen lo que el usuario desea encontrar en un archivo de
texto.
Lenguajes Formales y Computabilidad – Daniel Zamo | 20
2. Las expresiones regulares (o descripciones regulares), definen, casi
siempre, la forma de especificar los tokens de modo que sean
reconocidos por los analizadores léxicos de los compiladores en los
lenguajes de programación. Tomando estas expresiones regulares
como entrada, los analizadores léxicos pueden ser programados a
mano o generados automáticamente, realizando tareas muy
concretas de la gestión de símbolos. El módulo de lectura de un
programa y el analizador léxico son los únicos elementos de un
compilador que necesitan trabajar con el texto del programa al
completo (ver [Grune.2007, página 50 - 52]). En la Figura 5 se
muestra la estructura conceptual de un compilador.
Una expresión regular es una fórmula que describe un posible conjunto
infinito de cadenas, estas pueden ser entendidas como un patrón para
seleccionar o buscar cadenas dentro de un lenguaje3, también pueden ser
entendidas como una forma de describir un lenguaje.
Ejemplo: la expresión 𝑎𝑏 ∗ puede emplearse para buscar un texto que
consiste en un carácter 𝑎 seguido de por cero o más caracteres 𝑏. Esta
expresión genera un conjunto infinito {𝑎, 𝑎𝑏, 𝑎𝑏𝑏, 𝑎𝑏𝑏𝑏 … }. Cuando se tiene
una cadena que puede ser generada por una expresión regular dada
decimos que la expresión regular selecciona o produce una coincidencia
para la cadena.
3
Habitualmente las expresiones regulares las utilizamos cuando buscamos ciertas
ocurrencias en los editores de texto más comunes.
Figura 5: Estructura conceptual de un compilador [Grune.2007, página 11]
Lenguajes Formales y Computabilidad – Daniel Zamo | 21
Operadores de expresiones regulares
Las expresiones regulares denotan lenguajes. Por ejemplo, la expresión
regular 01∗
+ 10∗
indica que el lenguaje consiste de todas las cadenas
formadas por un solo 0 seguido por cualquier número de 1 o de un solo 1
seguido de cualquier número de 0.
Por el momento es imposible interpretar completamente las expresiones
regulares y antes de describir su notación es oportuno recordar tres
operaciones posibles de realizar con los lenguajes, dos de ellas ya han sido
vistas:
1. La unión de los lenguajes, 𝐴 y 𝐵, definida como 𝐴 ∪ 𝐵 = {𝑥|𝑥 ∈ 𝐴 ∨
𝑥 ∈ 𝐵}
2. La concatenación de los lenguajes, A y B, definida como AB =
{ab|a ∈ A ∧ b ∈ B}
3. El cierre de Kleene4 de un lenguaje L, denotado como L∗
y
representa el conjunto de las cadenas que se pueden formar
mediante la adopción de cualquier número de cadenas a partir de L,
posiblemente con repeticiones y concatenaciones. Por ejemplo si
L = {0, 1}, entonces L∗
son todas las cadenas de 0´s y 1′
s.
Formalmente, L∗
es la unión infinita ∪i≥0 Li
, donde L0
= {ϵ}, L1
= L, y
Li
, para i > 1 es LLL … L (la concatenación de i copias de L).
Otros autores representan el cierre de Kleene de un lenguaje L como
L∗
= {ϵ} ∪ L ∪ L ∪ L ∪ L ….
El Kleene Star (operador de Kleene o cierre de Kleene) es una operación
unaria en un conjunto de símbolos o caracteres. La aplicación del operador
a un conjunto 𝑉 se escribe como 𝑉∗
. Este es ampliamente utilizado para las
expresiones regulares, que es el contexto en el que fue introducido por S.
Kleene para caracterizar algunos autómatas.
• Si 𝑉 es un conjunto de cadenas, entonces 𝑉∗
se define como el
menor superconjunto de 𝑉 que contiene 𝜆 (cadena vacía) y es
cerrado bajo la operación de concatenación de cadenas. Este sistema
también se describe como el conjunto de las cadenas que se forman
a partir de la concatenación de cero o más cadenas de 𝑉.
• Si 𝑉 es un conjunto de símbolos o caracteres entonces 𝑉∗
es el
conjunto de todas las cadenas sobre los símbolos (o caracteres)
pertenecientes a 𝑉, incluyendo 𝜆.
4
El cierre de Kleene (closure, or star, or Kleene closure, operador) por Stephen Cole
Kleene (http://en.wikipedia.org/wiki/S._C._Kleene), quien originó la notación de
expresiones regulares y el operador de este.
Lenguajes Formales y Computabilidad – Daniel Zamo | 22
Construcción de expresiones regulares
Todas las algebras comienzan con expresiones elementales, probablemente
con constantes y/o variables. Luego mediante la aplicación de un
determinado conjunto de operadores (con sus métodos de agrupación y los
operandos), podemos construir más expresiones, y agregar expresiones
previamente construidas.
Por ejemplo el álgebra aritmética comienza con constantes como números
enteros y reales, agrega luego las variables y se basa en expresiones más
complejas con operadores aritméticos como la 𝑠𝑢𝑚𝑎 y la 𝑚𝑢𝑙𝑡𝑖𝑝𝑙𝑖𝑐𝑎𝑐𝑖ó𝑛.
El álgebra de las expresiones regulares sigue este patrón, con constantes y
variables que denotan al lenguaje, y los operadores de las tres operaciones
comentadas anteriormente (unión, concatenación y operador de Kleene). Se
puede ahora describir la expresión regular recursivamente. Para la
expresión regular 𝐸 se describe el lenguaje que representa y es denotada
como 𝐿(𝐸)5P.
Una expresión regular consiste de tres partes:
1. La constante {𝜖} y ∅, respectivamente, o sea 𝐿(𝜖), y 𝐿(∅) = ∅.
2. Si 𝑎 es cualquier símbolo, entonces 𝒂 es una expresión regular. Esta
expresión denota el lenguaje {𝑎}. Es decir 𝐿(𝒂) = {𝑎}. Los autores de
la obra [Hopcroft.2007] resaltan la letra en negrita para indicar una
expresión que corresponde a un símbolo.
3. Una variable, usualmente mayúscula e itálica, como 𝐿, que denota
cualquier lenguaje.
Ejemplo: consideremos la expresión:
(0 ∪ 1)01∗
El lenguaje descripto por esta expresión es el conjunto de todas las cadenas
binarias…
1. Que comienzan con 0 o 1 (esto lo indica (0 ∪ 1));
2. El segundo símbolo es 0 (esto lo indica 0);
3. Y finaliza con cero o más 1′𝑠 (esto lo indica 01∗
).
Con lo que resulta que el lenguaje descripto por esta expresión es
{00, 001, 0011, … . , 10, 101, … . , 1011, 10111}
5
Los autores del trabajo [Hopcroft.2007, página 89] indican que 𝐸 es sólo la expresión
regular y el lenguaje que ella denota es 𝐿(𝐸).
Lenguajes Formales y Computabilidad – Daniel Zamo | 23
Operadores y patrones
La Tabla 1 muestra los componentes de las expresiones regulares, en ella se
pueden ver los patrones básicos y operadores.
Patrones básicos
𝑥 Carácter 𝑥 Es la expresión más simple
ya que especifica el
carácter explícitamente
. Cualquier carácter Es la expresión más básica
ya que selecciona un solo
carácter
[𝑥𝑦𝑧 … ] Cualquiera de los caracteres 𝑥, 𝑦, 𝑧, …
Operadores de repetición
𝑅?
Una 𝑅 o nada
𝑅∗
Cero o más ocurrencias de 𝑅
𝑅∗
Una o más ocurrencias de 𝑅
Operadores de composición
𝑅1 𝑅2 Una 𝑅1 seguida por una 𝑅2
𝑅1 | 𝑅2 O 𝑅1 o 𝑅2
Agrupamiento
(𝑅) 𝑅
Tabla 1: Componentes de las expresiones regulares [Grune.2007, página 53]
Lenguajes Formales y Computabilidad – Daniel Zamo | 24
2. Gramáticas Formales
2. 1 Definición. Tipos de gramáticas.
Gramáticas tipo 0
Gramáticas
Una gramática es un ente formal que especifica de una manera finita, un
conjunto de sentencias, o cadenas de símbolos, potencialmente infinito y
que constituye un lenguaje.
Una gramática se puede definir como una cuádrupla formada por un
vocabulario terminal, un vocabulario no terminal, un símbolo inicial, y un
conjunto de producciones o reglas de derivación. Todas las sentencias del
lenguaje definido por la gramática están formadas con símbolos del
vocabulario terminal o símbolos terminales. El vocabulario no terminal es
un conjunto de símbolos introducidos como elementos auxiliares para la
definición de las producciones gramaticales, y no figuran en las sentencias
del lenguaje. El conjunto de símbolos terminales y el conjunto de símbolos
no terminales no tienen ningún elemento en común. El símbolo inicial es
un símbolo perteneciente al vocabulario no terminal, y a partir del cual
pueden obtenerse todas las sentencias del lenguaje generado por la
gramática. Las producciones o reglas de derivación son transformaciones
de cadenas de símbolos, que se expresan mediante una pareja de
expresiones separadas por una flecha. A la izquierda de la flecha está el
símbolo o conjunto de símbolos a transformar, y a la derecha se sitúan los
símbolos resultantes de la transformación. Las reglas de derivación pueden
aplicarse sucesivamente, desde el símbolo inicial hasta obtener una cadena
de símbolos terminales, con lo que se obtiene una sentencia del lenguaje6.
Una gramática describe la estructura de las frases y de las palabras (o la
combinación de símbolos) de un lenguaje, esto se aplica tanto a los
lenguajes naturales como a los lenguajes artificiales creados para
programar computadoras.
Por ejemplo la sintaxis del lenguaje español puede representarse mediante
una serie de reglas relativamente sencillas que definen las partes de la
oración, mediante las cuales podemos comprobar si una frase concreta es o
no correcta7. Algunas de estas reglas son las siguientes:
• Una oración posee sujeto y predicado;
• Un sujeto es un sintagma nominal;
• Un sintagma nominal consta de un grupo nominal y de un
calificativo opcional;
6
Detalle en trabajo [Jacobo.capitulo6]
7
Detalle en trabajo [Cubero.2007]
Lenguajes Formales y Computabilidad – Daniel Zamo | 25
• Un grupo nominal consta de un determinante opcional y de un
nombre;
• Un calificativo es un adjetivo o un pronombre relativo seguido de
una oración subordinada;
• Un predicado consta de un verbo seguido de un conjunto opcional
de complementos;
Se puede observar que estas reglas establecen ciertos términos (en el texto
aparecen resaltadas en cursiva) en función de otros semejantes, o de
palabras concretas (como la preposición a). Para representarlas se utiliza
una notación especial, es la regla de producción y es expresada como:
< 𝑡𝑒𝑟𝑚𝑖𝑛𝑜 𝑜 𝑡𝑒𝑟𝑚𝑖𝑛𝑜𝑠 𝑞𝑢𝑒 𝑠𝑒 𝑒𝑠𝑡𝑎 𝑑𝑒𝑓𝑖𝑛𝑖𝑒𝑛𝑑𝑜 > ⟶< 𝑑𝑒𝑓𝑖𝑛𝑖𝑐𝑖ó𝑛 >
El término que se está definiendo se llama parte izquierda de la regla de
producción. Su definición es la parte derecha de la regla.
Por ejemplo podríamos expresar reglas como las anteriores en forma de
reglas de producción:
< 𝑜𝑟𝑎𝑐𝑖ó𝑛 >⟶< 𝑓𝑟𝑎𝑠𝑒 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑎 >< 𝑓𝑟𝑎𝑠𝑒 𝑣𝑒𝑟𝑏𝑎𝑙 >
< 𝑓𝑟𝑎𝑠𝑒 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑎 >⟶< 𝑎𝑑𝑗𝑒𝑡𝑖𝑣𝑜 >< 𝑓𝑟𝑎𝑠𝑒 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑎 >
< 𝑓𝑟𝑎𝑠𝑒 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑎 >⟶< 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑜 >
< 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑜 >⟶ 𝑛𝑖ñ𝑜
< 𝑎𝑑𝑗𝑒𝑡𝑖𝑣𝑜 >⟶ 𝑝𝑒𝑞𝑢𝑒ñ𝑜
Los términos encerrados entre los signos < y > se consideran símbolos de
un alfabeto, y se tratan como si fuesen letras, para todos los efectos.
Observe que algunas de las reglas anteriores son recursivas. Una lista de
términos del mismo tipo suele expresarse mediante una regla recursiva,
junto con otra definición alternativa cuya parte derecha sea la palabra vacía.
Observe también que algunas de las reglas anteriores añaden información
morfológica sobre las palabras, indicando cuáles son nombres,
preposiciones, etc. (Por ejemplo < 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑜 >⟶ 𝑛𝑖ñ𝑜).
Tipos de gramáticas de Chomsky
En el año 1950 el lingüista norteamericano Avram Noam Chomsky
introduce la teoría de las gramáticas transformacionales [Chomsky.1959] o
teoría de lenguajes formales, está le proporciona a los lenguajes naturales
una herramienta más para su estudio, y convierte a la lingüística en ciencia.
Esta teoría facilita el estudio y la formalización de los lenguajes en general,
y se hace extensivo también a los lenguajes de programación de
ordenadores.
Lenguajes Formales y Computabilidad – Daniel Zamo | 26
El estudio de los lenguajes se divide tradicionalmente en dos grandes
partes, esto se representa en el diagrama mostrado en la Figura 5:
Estructura conceptual de un compilador [Grune.2007, página 11]. En dicho
diagrama se agrupan cuáles de esas áreas son también aplicables a los
lenguajes de computadoras.
Figura 6: Diagrama, estudio de los lenguajes
Gracias al trabajo realizado por Chomsky surge una relación imprevista entre dos
campos tan diferentes en apariencia, como la teoría de las maquinas abstractas y
la teoría de lenguajes formales.
Chomsky clasifico los lenguajes en una jerarquía inclusiva, mostrada en la Figura 7:
jerarquías de las gramáticas de Chomsky que reciben el nombre de jerarquías de
las gramáticas de Chomsky.
Figura 7: jerarquías de las gramáticas de Chomsky
Lenguajes Formales y Computabilidad – Daniel Zamo | 27
Gramáticas del tipo 0:
• Es el más general, a estos lenguajes no se les impone
restricción alguna;
• El conjunto de las gramáticas de este tipo está íntimamente
relacionado con el conjunto de todos los problemas
computables o recursivamente enumerables;
• Se pueden resolver mediante una máquina de Touring.
Gramáticas del tipo 1:
• Corresponden a los lenguajes sensibles al contexto;
• En este caso se introducen limitaciones en la estructura gramatical;
• Estas gramáticas pueden analizarse mediante autómatas lineales
acotados.
Gramáticas del tipo 2:
• Este tipo de gramáticas corresponden a los lenguajes
independientes del contexto;
• Se restringen aún más la libertad de la formación de reglas
gramaticales;
• Todos los lenguajes de computación, sin excepción tienen una
sintaxis que se puede expresar mediante gramáticas del tipo 2 y
siempre es posible analizarla mediante un autómata a pila.
Gramáticas del tipo 3:
• Este tipo de gramáticas pertenece a un tipo de lenguaje muy
sencillo, llamados lenguajes regulares;
• Se construyen con restricciones muy estrechas;
• Solo el análisis morfológico de los lenguajes de computación
pertenecen a este tipo de gramáticas;
• La gramática de cualquier lenguaje regular se puede analizar
mediante un autómata finito;
• Estas máquinas abstractas se pueden utilizar en el análisis y diseño
orientado a objetos y en el álgebra de las expresiones regulares de
las matemáticas.
Definición
Una gramática es intuitivamente un conjunto de reglas, que son utilizadas
para construir un lenguaje contenido en Σ∗
de algún alfabeto 𝛴.En principio
describe únicamente la estructura sintáctica, pero dado que la semántica de
un lenguaje está definida en términos de su sintaxis, la gramática también
contribuye a la definición de la semántica.
Tipos de gramáticas
Existen varios tipos, pero en el programa de la materia nos interesan
particularmente las siguientes gramáticas:
Lenguajes Formales y Computabilidad – Daniel Zamo | 28
• Jerarquía de Chomsky: las cuatro tipos presentados en el ítem
anterior, y que como se verá esta jerarquía incluye a las demás;
• Las irrestrictas: En la teoría del lenguaje formal, una gramática
sin restricciones es una gramática formal en la que no hay
restricciones en los costados derecho e izquierdo de las
producciones. Esta se corresponden con la clase más general de las
gramáticas en la jerarquía de Chomsky, y puede generar lenguajes
arbitrarios recursivamente enumerables;
• Las sensible al contexto: Esta gramática formal, abreviada por
CSG (Context-Sensitive Grammar), los lados izquierdo y derecho de
las normas de producción pueden estar rodeado de un contexto de
símbolos terminales y no terminales, estas son más generales que
las gramáticas libres de contexto, pero aún lo suficientemente
ordenada para ser analizado por un autómata lineal acotado. El
concepto de sensible al contexto fue presentado también por N.
Chomsky, como una manera de describir la sintaxis del lenguaje
natural en el que de hecho es a menudo el caso de que una palabra
pueda o no pueda ser apropiada en un lugar determinado,
dependiendo del contexto;
• Las indexadas: Una gramática indexada es una gramática formal
que describe los lenguajes indexados. Estos lenguajes descubiertos
por Alfred Aho, pueden ser reconocidos por autómatas de pila
anidados. Los lenguajes indexados son un subconjunto propio de de
los lenguajes sensibles al contexto, se califican como una familia
abstracta de lenguajes y por lo tanto satisfacen muchas de las
propiedades de cierre. Esta clase de lenguajes tienen importancia
práctica en el procesamiento del lenguaje natural como una
generalización de cómputo accesible de lenguajes libres de contexto,
ya que las gramáticas indexadas pueden describir muchas de las
restricciones no locales que ocurren en los lenguajes naturales;
• Libre de contexto: En la teoría del lenguaje formal, una gramática
libre de contexto (o CFG de Context-Free Grammar) es una
gramática formal en la que cada regla de producción tiene la forma
o 𝑉 ⟶ 𝑤
Donde 𝑉 es un símbolo no terminal único, y 𝑤 es una cadena de
terminales y / o no-terminales (𝑤 puede estar vacío).
Los lenguajes generados por gramáticas libres de contexto son
conocidos como los lenguajes independientes del contexto. Estas
gramáticas son importantes en la informática para describir la
estructura de los lenguajes de programación y otros lenguajes
artificiales;
• Árboles adyacentes: Estas gramáticas, abreviadas por TAG
(Tree-adjoining grammar) ; son un formalismo gramatical definido
por A. Joshi. Son similares a las gramáticas libres de contexto, pero
la unidad elemental de reescritura es el árbol en lugar del símbolo.
Mientras que las gramáticas libres de contexto tienen reglas para
Lenguajes Formales y Computabilidad – Daniel Zamo | 29
reescribir símbolos como cadenas de otros símbolos, los árboles
adyacentes tienen reglas de reescritura de los nodos de los árboles
como otros árboles;
• Libres de contexto determinista: En la teoría de la gramática
formal, estas son un subconjunto de las gramáticas libres de
contexto. Las gramáticas libres de contexto deterministas (o
abreviadas como DCFG por deterministic context-free grammars)
pueden ser reconocidas por un autómata determinista pushdown.
Un DCFG es el conjunto finito de reglas que definen el conjunto de
expresiones bien formadas en un lenguaje libre de contexto
determinista.
• Gramáticas Regulares: En ciencias de la computación teórica,
una gramática regular es una gramática formal que describe un
lenguaje regular.
Algunas de ellas ya han sido nombradas otras serán tratadas
oportunamente.
Una gramática es una receta con la que contamos para construir elementos
a partir de un conjunto de cadenas de símbolos. Cuando son aplicadas a un
lenguaje de programación, los símbolos son los tokens del lenguaje, las
cadenas de los símbolos son los textos del programa, y los conjuntos de
cadenas de símbolos son el lenguaje de programación.
Gramáticas, lenguajes y máquinas abstractas
Es conveniente realizar una relación entre la jerarquía de gramáticas de
Chomsky, los lenguajes formales, las maquinas abstractas y los problemas
que cada una es capaz de resolver. Esto se muestra en la Figura8: relación
entre la jerarquía de las gramáticas de Chomsky, los distintos tipos de
lenguajes, la teoría de máquinas abstractas y los problemas de la teoría de la
computabilidad, (Cubero.2007, página 8).
Lenguajes Formales y Computabilidad – Daniel Zamo | 30
Figura 8: relación entre la jerarquía de las gramáticas de Chomsky, los distintos tipos de lenguajes,
la teoría de máquinas abstractas y los problemas de la teoría de la computabilidad, [Cubero.2007,
página 8]
2.2 Gramáticas independientes del
contexto. Gramáticas regulares
Gramáticas independientes del contexto
Se llama gramática formal o gramática independiente del contexto (CFG
por context-free grammar8, o simplemente gramática) a la cuádrupla:
𝐺 = (𝑉, 𝑇, 𝑃, 𝑆)
Donde 𝑉 es un conjunto de variables (alfabeto de símbolos no terminales);
𝑇 son los terminales (alfabeto de símbolos terminales); 𝑃 es el conjunto de
producciones (conjunto finito de reglas de producción) y 𝑆 es el símbolo
inicial (axioma o símbolo distinguido).
8
Revisar análisis completo en la obra [Hopcroft.2007, página 173]
Lenguajes Formales y Computabilidad – Daniel Zamo | 31
Gramáticas regulares
Una gramática regular es una gramática formal que describe un lenguaje
regular. Las gramáticas regulares están incluidas en las del tipo 3, de la
jerarquía de Chomsky.
Las gramáticas de tipo 3 se clasifican en dos subgrupos:
• Gramáticas lineales por la izquierda, cuyas reglas de producción
pueden tomar una de las siguientes tres formas:
o 𝐴 ∶≔ 𝑎
o 𝐴 ∶≔ 𝑉𝑎
o 𝑆 ∶≔ 𝜆
Donde 𝑎 ∈ Σ 𝑇, 𝐴, 𝑉, 𝑆 ∈ Σ 𝑁, y 𝑆 es el axioma de la gramática.
• Gramáticas lineales por la derecha, cuyas reglas de producción
pueden tomar una de las siguientes tres formas:
o 𝐴 ∶≔ 𝑎
o 𝐴 ∶≔ 𝑎𝑉
o 𝑆 ∶≔ 𝜆
Donde 𝑎 ∈ Σ 𝑇, 𝐴, 𝑉, 𝑆 ∈ Σ 𝑁, y 𝑆 es el axioma de la gramática.
Anexo I
Lista de símbolos
A continuación se anexan algunos de los símbolos utilizados en
[Hopcroft.2007], a modo de referencia. Los mismos están agrupados. No es
una lista completa, solo se intenta referenciar algunos de los símbolos
usados en este trabajo; esta tabla ha sido resumida principalmente desde
[símbolos.matemáticos] y respetando la obra anterior.
Lista de símbolos de la teoría de conjuntos
Símbolo Nombre
{ } conjunto
∩ intersección
∪ unión
⊆ subconjunto
⊂ proper subset / strict subset
⊄ No es subconjunto
⊇ Superconjunto
⊃ Propiedad superconjunto
⊅ No es superconjunto
= igualdad
Lenguajes Formales y Computabilidad – Daniel Zamo | 32
𝐴 𝐶 Complemento
−

Complemento relativo
∆
𝜃
Simétricamente diferente
∈
Elemento de ..
Pertenece a ..
∉
No es elemento
No pertenece
(𝑎, 𝑏) Par ordenado
𝐴 × 𝐵 Producto cartesiano
Ø Conjunto vacío
𝑈∗ Conjunto universal
{ } Cadena vacía
𝜀
(𝜆)
Identifica la palabra vacía, que existe en
cualquier alfabeto y tiene una longitud cero.
Σ 𝑘
Conjunto de todas las cadenas que
pertenecen a Σ de longitud 𝑘.
Σ+ Es el conjunto de cadenas no vacías del
alfabeto Σ.
Σ∗ Conjunto de todas las palabras sobre el
alfabeto Σ.
|𝐴|
#𝐴
cardinalidad
Lista de símbolos matemáticos básico
Símbolo Nombre
= Igualdad
≠ Desigualdad
Lista de símbolos de álgebra
Símbolo Nombre
≡ Equivalente (idéntico a..)
≅ Aproximadamente igual a…
Lenguajes Formales y Computabilidad – Daniel Zamo | 33
≈ Casi igual a ..
∞ Símbolo infinito
𝑥
Variable 𝑥 (representa cualquier valor a
buscar)
𝑓(𝑥) Función de 𝑥
Lista de símbolos lógicos
Símbolo Nombre
∧ Conjunción (𝑎𝑛𝑑)
∨ Disyunción (𝑜𝑟)
¬ Negación
⟹ implica
⟺ Equivalencia (𝑠𝑖 𝑦 𝑠𝑜𝑙𝑜 𝑠𝑖)
∀ Para todo
∃ Existe
∄ No existe
∴ Por lo tanto
Lenguajes Formales y Computabilidad – Daniel Zamo | 34
Bibliografía
[Chomsky.1959] Chomsky, Noam. “On certain formal properties of
grammars”
[Cubero.2007] E. Cubero, M. Moreno, R. Salomon. “Teoría de Autómatas y
Lenguajes Formales”
[Grune.2007] D. Grune, H. E. Bal, C. J. H. Jacob y K. G. Langendoen.
“Diseño de Compiladores Modernos”. Mc Graw Hill, 2007.
[Hopcroft.1993] J. Hopcroft, J. Ullman. “Introducción a la Teoría de
Autómatas, Lenguajes y Computación, 1 Edición”.
[Hopcroft.2001] J. Hopcroft, J. Ullman. “Introduction To Automata
Theory, Languages, and Computation, 2nd Edition”.
[Hopcroft.2007] J. Hopcroft, J. Ullman. “Introduction To Automata
Theory, Languages, and Computation, 3rd Edition”.
[Hopcroft.2008] J. Hopcroft, J. Ullman. “Teoría de Autómatas, lenguajes y
computación, 3ra Edición”.
Lecturas en Internet
[hans] Hans Uszkoreit, What is Computational Linguistics?
• http://www.coli.uni-saarland.de/~hansu/what_is_cl.html
[harvey] Harvey and Laurie Bluedorn, Two Methods of Reasoning
• http://www.triviumpursuit.com/articles/two_methods_of_reasoni
ng.php
[Jacobo.capitulo6] Ing. M. Á. Durán Jacobo. “Introducción a los Lenguajes
formales, Capitulo 6, Lenguaje formal”.
• http://www.libros.publicaciones.ipn.mx/PDF/1338.pdf
[Miller.symbol] Earliest Uses of Various Mathematical Symbols
• http://jeff560.tripod.com/mathsym.html
[moisl.lecture 1]Hermann Moisl, Computational Linguistics, lectura 1
• http://www.staff.ncl.ac.uk/hermann.moisl/ell236/lecture1.htm
[símbolos.matemáticos] Símbolos matemáticos
• http://www.rapidtables.com/math/symbols/Set_Symbols.htm
[socialresearch] William M.K. Trochim, Deduction & Induction
• http://www.socialresearchmethods.net/kb/dedind.php
Lenguajes Formales y Computabilidad – Daniel Zamo | 35
[Wikipedia.función] Función Matemática
• http://es.wikipedia.org/wiki/Funci%C3%B3n_matem%C3%A1tica
[Wikipedia.lenguaje] Lenguaje formal
• http://es.wikipedia.org/wiki/Lenguaje_formal
[Wikipedia.lógicas] Lógica proposicional
• http://es.wikipedia.org/wiki/L%C3%B3gica_proposicional
[Wikipedia.símbolos] Símbolos matemáticos
• http://es.wikipedia.org/wiki/Anexo:S%C3%ADmbolos_matem%C3
%A1ticos

Más contenido relacionado

La actualidad más candente

Teoría básica de conjuntos
Teoría básica de conjuntosTeoría básica de conjuntos
Teoría básica de conjuntosangiegutierrez11
 
Operaciones matematicas jorge armando rincon rincon
Operaciones matematicas   jorge armando rincon rinconOperaciones matematicas   jorge armando rincon rincon
Operaciones matematicas jorge armando rincon rinconMatemticasTarea
 
Clase01a Conjuntos
Clase01a ConjuntosClase01a Conjuntos
Clase01a Conjuntosarq_sotelo
 
Fundadores/ Inventores del Dominio y el Rango
Fundadores/ Inventores del Dominio y el RangoFundadores/ Inventores del Dominio y el Rango
Fundadores/ Inventores del Dominio y el RangoSara Castañeda Mendoza
 
Tema 7 Álgebra Lineal - Introducción a la Matemática Discreta
Tema 7 Álgebra Lineal - Introducción a la Matemática DiscretaTema 7 Álgebra Lineal - Introducción a la Matemática Discreta
Tema 7 Álgebra Lineal - Introducción a la Matemática DiscretaJuan Gabriel Gomila Salas
 
Utp 2015-2_sirn_s10_conjuntos difusos
 Utp 2015-2_sirn_s10_conjuntos difusos Utp 2015-2_sirn_s10_conjuntos difusos
Utp 2015-2_sirn_s10_conjuntos difusosjcbp_peru
 
Logica proposicional
Logica proposicionalLogica proposicional
Logica proposicionalLeandro __
 
Algebra presentación
Algebra presentaciónAlgebra presentación
Algebra presentaciónmylend
 
Algebra presentación
Algebra presentaciónAlgebra presentación
Algebra presentaciónmylend
 
Relaciones y grafos PSMBNA
Relaciones y grafos PSMBNARelaciones y grafos PSMBNA
Relaciones y grafos PSMBNAJose Marquez M
 
Unidad cuatro conjuntos y funciones lineales.
Unidad cuatro conjuntos y funciones lineales.Unidad cuatro conjuntos y funciones lineales.
Unidad cuatro conjuntos y funciones lineales.UNIDAD EDUCATIVA SAYAUSI
 

La actualidad más candente (19)

Argumentación
ArgumentaciónArgumentación
Argumentación
 
Teoría básica de conjuntos
Teoría básica de conjuntosTeoría básica de conjuntos
Teoría básica de conjuntos
 
Tercer momento
Tercer momentoTercer momento
Tercer momento
 
Operaciones matematicas jorge armando rincon rincon
Operaciones matematicas   jorge armando rincon rinconOperaciones matematicas   jorge armando rincon rincon
Operaciones matematicas jorge armando rincon rincon
 
Clase01a Conjuntos
Clase01a ConjuntosClase01a Conjuntos
Clase01a Conjuntos
 
Fundadores/ Inventores del Dominio y el Rango
Fundadores/ Inventores del Dominio y el RangoFundadores/ Inventores del Dominio y el Rango
Fundadores/ Inventores del Dominio y el Rango
 
Tema 7 Álgebra Lineal - Introducción a la Matemática Discreta
Tema 7 Álgebra Lineal - Introducción a la Matemática DiscretaTema 7 Álgebra Lineal - Introducción a la Matemática Discreta
Tema 7 Álgebra Lineal - Introducción a la Matemática Discreta
 
Numeros
NumerosNumeros
Numeros
 
Utp 2015-2_sirn_s10_conjuntos difusos
 Utp 2015-2_sirn_s10_conjuntos difusos Utp 2015-2_sirn_s10_conjuntos difusos
Utp 2015-2_sirn_s10_conjuntos difusos
 
Antologia
AntologiaAntologia
Antologia
 
Logica proposicional
Logica proposicionalLogica proposicional
Logica proposicional
 
Tipos de conjuntos
Tipos de conjuntosTipos de conjuntos
Tipos de conjuntos
 
Conjuntos 2
Conjuntos 2Conjuntos 2
Conjuntos 2
 
Logica matematico. :v
Logica matematico. :vLogica matematico. :v
Logica matematico. :v
 
Algebra 3
Algebra 3Algebra 3
Algebra 3
 
Algebra presentación
Algebra presentaciónAlgebra presentación
Algebra presentación
 
Algebra presentación
Algebra presentaciónAlgebra presentación
Algebra presentación
 
Relaciones y grafos PSMBNA
Relaciones y grafos PSMBNARelaciones y grafos PSMBNA
Relaciones y grafos PSMBNA
 
Unidad cuatro conjuntos y funciones lineales.
Unidad cuatro conjuntos y funciones lineales.Unidad cuatro conjuntos y funciones lineales.
Unidad cuatro conjuntos y funciones lineales.
 

Similar a Lectura 1

juen sivira.pptx
juen sivira.pptxjuen sivira.pptx
juen sivira.pptxJuanSivira1
 
Las leyes de de morgan son una parte de la lógica proposicional y analítica
Las leyes de de morgan son una parte de la lógica proposicional y analíticaLas leyes de de morgan son una parte de la lógica proposicional y analítica
Las leyes de de morgan son una parte de la lógica proposicional y analíticaSol Ramos
 
IntroAlgebraConjuntos.pdf
IntroAlgebraConjuntos.pdfIntroAlgebraConjuntos.pdf
IntroAlgebraConjuntos.pdflilibethdiaz7
 
Números-reales-y-plano-numérico.pdf
Números-reales-y-plano-numérico.pdfNúmeros-reales-y-plano-numérico.pdf
Números-reales-y-plano-numérico.pdfRaybersonRamirezSanc
 
Concepto de conjuntos
Concepto de conjuntosConcepto de conjuntos
Concepto de conjuntosanderson245
 
Conjuntos, numeros reales, desigualdades y valor absoluto
Conjuntos, numeros reales, desigualdades y valor absolutoConjuntos, numeros reales, desigualdades y valor absoluto
Conjuntos, numeros reales, desigualdades y valor absolutogenesislopez46
 
numeros reales.pptx
numeros reales.pptxnumeros reales.pptx
numeros reales.pptxNaimarRiera
 
presentacion matematicas.pptx
presentacion matematicas.pptxpresentacion matematicas.pptx
presentacion matematicas.pptxDaniel160680
 
Conjuntos, Números Reales, Desigualdades, Valor Absoluto
Conjuntos, Números Reales, Desigualdades, Valor AbsolutoConjuntos, Números Reales, Desigualdades, Valor Absoluto
Conjuntos, Números Reales, Desigualdades, Valor AbsolutoMoises884155
 
Resumen de matemáticas discretas
Resumen de matemáticas discretasResumen de matemáticas discretas
Resumen de matemáticas discretasheleoespinoza
 
Lenguaje algebraico y pensamiento funcional
Lenguaje algebraico y pensamiento funcionalLenguaje algebraico y pensamiento funcional
Lenguaje algebraico y pensamiento funcionalMilanisEstherBuznSol
 
Teoria de conjuntos
Teoria de conjuntosTeoria de conjuntos
Teoria de conjuntosjcremiro
 

Similar a Lectura 1 (20)

juen sivira.pptx
juen sivira.pptxjuen sivira.pptx
juen sivira.pptx
 
Numero reales
Numero reales Numero reales
Numero reales
 
Las leyes de de morgan son una parte de la lógica proposicional y analítica
Las leyes de de morgan son una parte de la lógica proposicional y analíticaLas leyes de de morgan son una parte de la lógica proposicional y analítica
Las leyes de de morgan son una parte de la lógica proposicional y analítica
 
IntroAlgebraConjuntos.pdf
IntroAlgebraConjuntos.pdfIntroAlgebraConjuntos.pdf
IntroAlgebraConjuntos.pdf
 
Matemática Conjuntos
Matemática ConjuntosMatemática Conjuntos
Matemática Conjuntos
 
Conjuntos matematicos
Conjuntos matematicosConjuntos matematicos
Conjuntos matematicos
 
Números-reales-y-plano-numérico.pdf
Números-reales-y-plano-numérico.pdfNúmeros-reales-y-plano-numérico.pdf
Números-reales-y-plano-numérico.pdf
 
Concepto de conjuntos
Concepto de conjuntosConcepto de conjuntos
Concepto de conjuntos
 
Consulta de conjuntos
Consulta de conjuntosConsulta de conjuntos
Consulta de conjuntos
 
Conjuntos, numeros reales, desigualdades y valor absoluto
Conjuntos, numeros reales, desigualdades y valor absolutoConjuntos, numeros reales, desigualdades y valor absoluto
Conjuntos, numeros reales, desigualdades y valor absoluto
 
numeros reales.pptx
numeros reales.pptxnumeros reales.pptx
numeros reales.pptx
 
Consulta de conjuntos
Consulta de conjuntosConsulta de conjuntos
Consulta de conjuntos
 
presentacion matematicas.pptx
presentacion matematicas.pptxpresentacion matematicas.pptx
presentacion matematicas.pptx
 
Conjuntos, Números Reales, Desigualdades, Valor Absoluto
Conjuntos, Números Reales, Desigualdades, Valor AbsolutoConjuntos, Números Reales, Desigualdades, Valor Absoluto
Conjuntos, Números Reales, Desigualdades, Valor Absoluto
 
unidad II de matematicas.docx
unidad II de matematicas.docxunidad II de matematicas.docx
unidad II de matematicas.docx
 
Resumen de matemáticas discretas
Resumen de matemáticas discretasResumen de matemáticas discretas
Resumen de matemáticas discretas
 
Lenguaje algebraico y pensamiento funcional
Lenguaje algebraico y pensamiento funcionalLenguaje algebraico y pensamiento funcional
Lenguaje algebraico y pensamiento funcional
 
Teoria de conjuntos
Teoria de conjuntosTeoria de conjuntos
Teoria de conjuntos
 
Funciones
FuncionesFunciones
Funciones
 
Conjunto
ConjuntoConjunto
Conjunto
 

Último

Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 

Último (20)

Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 

Lectura 1

  • 1. Módulo 1 Unidad 1 y 2 Lectura 1 - Lenguajes Formales Materia: Lenguajes Formales y Computabilidad Profesor: Daniel Zamo
  • 2. Lenguajes Formales y Computabilidad – Daniel Zamo | 2 1. Lenguajes Formales 1. 1 Conjuntos, funciones, relaciones y métodos de prueba Conjuntos Un conjunto es una colección de objetos. Los elementos u objetos del conjunto pueden o no tener una relación entre ellos. Según esta definición los elementos mostrados en la Figura 1 conforman un conjunto. Figura 1: objetos que constituyen un conjunto Esta noción de conjunto constituye una de las bases en la que la teoría de lenguajes formales y autómatas se construye. Elementos de un conjunto Podemos identificar o etiquetar los elementos del conjunto. Para el ejemplo de la Figura 1 podríamos acordar de identificar cada elemento con una letra y asignarle una etiqueta resultando lo mostrado en la Figura 2. De modo de identificar cada uno de ellos con un nombre.
  • 3. Lenguajes Formales y Computabilidad – Daniel Zamo | 3 Figura 2: identificar los objetos Debemos siempre tener en cuenta que estos elementos pueden ser de cualquier tipo y representar cualquier cosa. Resumiendo todo conjunto está formado por símbolos1 que son entidades abstractas que pueden ser de cualquier tipo, aunque para el tratamiento de este trabajo las letras y los dígitos serán los símbolos usados con más frecuencia. Con lo antedicho podemos afirmar: • Los símbolos de un conjunto son etiquetados para facilitar la exposición de los temas, normalmente con las primeras letras minúsculas del alfabeto normal (a, b, c, ..) o con dígitos. • Existen dos maneras de definir un conjunto: 1. Por enumeración: consiste básicamente en enumerar los símbolos que pertenecen al conjunto.  {0, 1, 2, 3, 4, 5, 6, 7} conjunto numérico en base 8 o sistema octal. 2. Indicando algún criterio/s que se pueda/n utilizar para determinar que símbolos pertenecen al conjunto. Realizarlo de este modo es necesario cuando el número de símbolos es muy grande. Y sería imposible enumerar todos los objetos.  Por ejemplo pensemos el caso de un conjunto perros, podemos definir una regla de pertenencia al mismo. Podemos decir que un objeto perro pertenece a nuestro conjunto y entonces para cualquier objeto sería posible  definir si pertenece o no al conjunto. La forma habitual de  escribir estas reglas en matemáticas se expresan con el siguiente patrón: 𝑃 = {𝑥 |𝑥 𝑒𝑠 𝑝𝑒𝑟𝑟𝑜} 1 Símbolo, objeto, miembro, dígito o elemento serán utilizados indistintamente en este trabajo para representar lo mismo, salvo indicación contraria.
  • 4. Lenguajes Formales y Computabilidad – Daniel Zamo | 4 Un conjunto es una colección de objetos considerada como un objeto en sí. Un conjunto está definido únicamente por los elementos que lo componen, y no por la manera en la que se lo representa. Conjunto vacío Se indica aquí ya que se trata de un conjunto un tanto especial. Se trata de un conjunto que no tiene elementos. Es representado por 𝜙 y también por el símbolo {𝜖}. Relación entre conjuntos y sus elementos Existe una serie de relaciones básicas entre los conjuntos y sus elementos: • Pertenencia. Es la relación más básica. Dado un elemento 𝑥, esté puede o no pertenecer a un conjunto dado 𝐴. Esto se indica como 𝑥 ∈ 𝐴. • Igualdad. Dos conjuntos son iguales si y sólo si tienen los mismos elementos. Este principio, denominado principio de extensionalidad establece el hecho de que un conjunto queda definido únicamente por sus elementos. • Inclusión. Dado un conjunto 𝐴, cualquier subcolección 𝐵 de sus elementos es un subconjunto de 𝐴. Esto se indica como 𝐵 ⊆ 𝐴. Operaciones con conjuntos Las operaciones básicas del álgebra de conjuntos son: • Unión. La unión de los conjuntos 𝐴 y 𝐵 es el conjunto 𝐴 ∪ 𝐵 que contiene todos los elementos de 𝐴 y de 𝐵. • Intersección. La intersección de dos conjuntos 𝐴 y 𝐵 es el conjunto 𝐴 ∩ 𝐵 que contiene todos los elementos comunes de A y B. • Diferencia. La diferencia entre dos conjuntos 𝐴 y 𝐵 es el conjunto 𝐴 − 𝐵 que contiene todos los elementos de 𝐴 que no pertenecen a 𝐵. • Complemento. El complemento de un conjunto 𝐴 es el conjunto 𝐴 𝐶 que contiene todos los elementos que no pertenecen a 𝐴. 𝑃 = {𝑥 |𝑥 𝑒𝑠 𝑝𝑒𝑟𝑟𝑜} • El conjunto se etiqueto con una letra en mayúscula. • La definición se encerró en paréntesis • El símbolo | se lee como “que tal” La lectura resulta: P es el conjunto de todos los x tal que x es perro
  • 5. Lenguajes Formales y Computabilidad – Daniel Zamo | 5 • Producto cartesiano. El producto cartesiano de dos conjuntos 𝐴 y 𝐵 es el conjunto 𝐴 𝑥 𝐵que contiene todos los pares ordenados (𝑎, 𝑏) cuyo primer (segundo) elemento pertenece a 𝐴 (𝑎 𝐵). Relaciones En el lenguaje del amor [moisl.lecture1], una "relación" se refiere al estado en el que dos personas se encuentran. Podemos formalizar este concepto, para así comprender la relación en lenguaje formal. Tomemos dos conjuntos: 𝑀 = {𝑥 |𝑥 𝑒𝑠 𝑢𝑛𝑎 𝑚𝑢𝑗𝑒𝑟} y 𝐻 = {𝑦 | 𝑦 𝑒𝑠 𝑢𝑛 ℎ𝑜𝑚𝑏𝑟𝑒}. Calculemos el producto cartesiano, que se traduce en un conjunto que contiene todos los pares posibles de hombres y mujeres. Ahora pensemos en un hombre y una mujer que están enamorados estos son un par en el producto cartesiano. Si ahora imaginamos a todos los hombres y mujeres de una ciudad que están enamorados tendremos un conjunto bastante más grande de pares. Sin embargo, todavía es un pequeño subconjunto del producto cartesiano de todos los hombres y mujeres. Ahora estamos en condiciones de identificar y seleccionar todas las parejas en el conjunto amor relevantes del producto cartesiano de todos los hombres y mujeres, y obtendremos un conjunto, aquí hemos llegado a lo que un matemático llamaría una “relación”. Funciones Tomemos dos conjuntos 𝑅 y 𝑇. El producto cartesiano 𝑅 𝑥 𝑇 se compone de pares ordenados (𝑠, 𝑡), donde 𝑠 𝜖 𝑆 y 𝑡 𝜖 𝑇. Una relación es cualquier conjunto de pares ordenados, o cualquier correspondencia entre conjuntos y una función es la que da exactamente un valor a la variable dependiente (t) para cada valor de la variable independiente (𝑠14T ) en el dominio. O dicho de otro modo una relación entre 2 conjuntos 𝑆 y 𝑇14T es cualquier subconjunto del producto cartesiano 𝑆 𝑥 𝑇14T , incluso el vacio. Una función de 𝑆14T en 𝑇14T debe cumplir que para todo elemento de 𝑆14T exista un único elemento de 𝑇14T (que se suele llamar 𝑓(𝑠)14T ) relacionado con él. Una función puede considerarse como un caso particular de una relación. Cada relación o correspondencia de un elemento 𝑥 ∈ 𝑋 con un (y sólo un) 𝑦 ∈ 𝑌 se denota 𝑓(𝑥) = 𝑦, en lugar de (𝑥, 𝑦) ∈ 𝑓.
  • 6. Lenguajes Formales y Computabilidad – Daniel Zamo | 6 Ejemplos Relación Dados los conjuntos 𝐴 = {1, 2} y 𝐵 = {𝑎, 𝑏} • Su producto cartesiano es: 𝐴 𝑥 𝐵 = {(1, 𝑎), (1, 𝑏), (2, 𝑎), (2, 𝑏)} • Una relación es un subconjunto de ese producto por ejemplo: 𝑅 = {(2, 𝑎), (2, 𝑏)} Función Dados los conjuntos 𝑷 = {𝒙 |𝒙 𝒆𝒔 𝒑𝒐𝒍í𝒈𝒐𝒏𝒐} y 𝑵 = {𝒚 |𝒚 𝒆𝒔 𝒏ú𝒎𝒆𝒓𝒐} • Ambos conjuntos están relacionados a través del número de lados de cada polígono, a cada polígono del conjunto 𝑃 le corresponde un valor (y solo uno) del conjunto 𝑁. Figura 3: representación de la función, como un conjunto, ver [Wikipedia.funcion] Relación es la correspondencia de un primer conjunto, llamado Dominio, con un segundo conjunto, llamado Recorrido o Rango, de manera que a cada elemento del Dominio le corresponde uno o más elementos del Recorrido o Rango. Dicho de otro modo la relación es un subconjunto de un producto cartesiano de los conjuntos, de tal manera que los símbolos del conjunto resultante están "relacionados" de alguna manera, compartiendo algunas características determinadas. De manera abstracta, el concepto general de función se refiere a una regla que asigna a cada elemento de un primer conjunto un único elemento de un segundo conjunto. La Función es una relación a la cual se añade la condición de que a cada valor del Dominio le corresponde uno y sólo un valor del Recorrido.
  • 7. Lenguajes Formales y Computabilidad – Daniel Zamo | 7 Métodos de prueba Problema En la teoría de autómatas, un problema es la cuestión de decidir si una determinada cadena es un elemento de un determinado lenguaje. Cualquier cosa que coloquialmente denominemos problema podemos expresarlo con un lenguaje [Hopcroft.2007, página 31] (o como elemento de un lenguaje), por ello este autor asegura que lenguaje y problema es la misma cosa. De forma más precisa podemos decir: Para un alfabeto Σ y si 𝐿 es un lenguaje de Σ, entonces el problema 𝐿 es: Dada una cadena 𝑤 de Σ∗ , decidir si 𝑤 pertenece o no a 𝐿. En matemáticas, un teorema es una afirmación que es verdadera. Una demostración (prueba) es una secuencia de afirmaciones matemáticas que constituyen un argumento para demostrar que un teorema es verdadero. Las declaraciones de la demostración de un teorema son axiomas, las hipótesis del teorema a ser probado, y los teoremas previamente probados. La pregunta principal es "¿Cómo hacemos para demostrar teoremas?" (Cómo resolvemos un problema dado). Esto no suele ser simple, ni fácil. No hay manera específica de dar con una prueba, ni una solución tan directa, pero hay algunas estrategias genéricas que podrían ser de ayuda. En esta sección, se revisan algunas de estas estrategias utilizadas por [Hopcroft.2007]. La mejor manera de hacerse una idea de cómo lograrlo es mediante la resolución de un gran número de problemas. Estos son algunos consejos útiles: • Leer y entender completamente la afirmación del teorema por demostrar. (La mayoría de las veces esta es la parte más difícil). • Suele ocurrir que, los teoremas contienen teoremas dentro de ellos mismos. • Tratar de resolver algunos casos simples del teorema de modo de obtener un control sobre él. • Tratar de escribir las demostraciones, una vez que se tienen. (Esto es para asegurar la exactitud de la misma; suele ocurrir que los errores se encuentran en el momento de la escritura). • Es necesario tener paciencia, pensar, expresarse y escribir con claridad y tratar de ser lo más precisos posible.
  • 8. Lenguajes Formales y Computabilidad – Daniel Zamo | 8 Demostraciones formales Las demostraciones es algo que todos los informáticos necesitamos comprender y conocer. Es conveniente establecer la veracidad de la proposición oportuna que se vaya a emplear para la solución de un problema. Algunos profesionales suelen aplicar el punto de vista de que una demostración formal de la corrección de un programa debe realizarse a medida que se escribe el mismo. Este punto de vista no es productivo. Por otro lado hay quienes aseguran de que las demostraciones no tienen lugar en la disciplina de programación, de modo que aplican la afirmación si no está seguro de que el programa sea correcto, ejecútelo y compruébelo. La postura aconsejada por [Hopcroft.2007] incluye ambas. • Probar los programas es fundamental. 1. Pero se podrá realizar hasta cierto punto ya que es imposible por ejemplo hacerlo para todas las posibles entradas. 2. En el caso de un programa muy complejo (que contenga recursiones o iteraciones), si no comprendemos que es lo que ocurre cuando se ejecuta un bucle o una llamada a una tarea de forma recursiva, es poco probable que podamos escribir el código correctamente. Si al probar el código resulta ser incorrecto, será necesario reescribirlo. • Para conseguir iteraciones o recursiones correctas, es necesario establecer hipótesis inductivas y resulta útil razonar (formal o informalmente), que la hipótesis es coherente con la iteración o recursión. La teoría de autómatas, quizás más que cualquier otra materia de las que conforman las Ciencias de la Computación, se presta a las demostraciones. Demostraciones deductivas Estas consisten de una secuencia de proposiciones cuya veracidad se comprueba partiendo de una proposición inicial (Hipótesis) o de varias proposiciones dadas, hasta llegar a una conclusión [Hopcroft.2007, página 6]. Es una demostración con una secuencia de pasos justificados. Este razonamiento se mueve de lo general a lo particular2, tomando una premisa general, deduciendo conclusiones particulares. Un argumento deductivo valido es aquel en el que la conclusión necesariamente se deriva de la premisa. Puede ser que la premisa no sea verdadera, pero la forma del argumento si sea válida. 2 Información completa en [harvey] de la lógica inductiva y deductiva. En matemáticas una proposición verdadera se llama teorema
  • 9. Lenguajes Formales y Computabilidad – Daniel Zamo | 9 Un argumento deductivo valido contendrá algo en la conclusión totalmente nuevo e independiente de aquellas cosas mencionadas en la premisa inicial (hipótesis). Todo en la conclusión de un argumento deductivo válido debe también estar contenido en las premisas. La veracidad de la conclusión de un argumento de este tipo depende de dos cosas: • La condición de correcta (o que sea válida) de la forma del argumento. • La verdad (o veracidad) de la premisa. De modo que la única debilidad de un argumento deductivo es el verdadero valor de las premisas. Las conclusiones serán tan buenas como sus premisas. Dicho de otro modo las conclusiones obtenidas siempre están determinadas por las presunciones establecidas. Ejemplo Premisa: todos los hombres son mortales. Premisa: Juan es un hombre. Conclusión: Juan es mortal. Reducción a definiciones Los términos utilizados en la declaración pueden tener consecuencias que son menos obvias de ver. Si no se está seguro de cómo comenzar una prueba, quizás se pueda convertir todos los términos de la hipótesis a sus definiciones. Otras formas de teoremas Demostración del tipo Si – entonces La forma 𝑆𝑖 − 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 (𝑖𝑓 − 𝑡ℎ𝑒𝑛) es la más común en las áreas típicas de las matemáticas. La mayoría de las proposiciones matemáticas pueden ser indicadas con esta forma, donde encontramos la hipótesis y la tesis. Ejemplo: En estas estructuras si cambiamos la hipótesis con la tesis se obtiene la inversa de la proposición.
  • 10. Lenguajes Formales y Computabilidad – Daniel Zamo | 10 Demostración del tipo Si – y – solo –si En ocasiones nos encontraremos con proposiciones del tipo A si y solo si B. En estos casos para demostrar la proposición "A si y solo si B" se demostrara las proposiciones siguientes: 1. La parte 𝑠𝑖: "𝑠𝑖 𝐵 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝐴" y 2. La parte solo 𝑠𝑖: “𝑠𝑖 𝐴 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝐵”, lo que ha menudo se escribe de la forma equivalente “𝐴 𝑠𝑜𝑙𝑜 𝑠𝑖 𝐵” Las demostraciones pueden presentarse en cualquier orden. En muchos teoremas una parte es claramente más fácil que la otra, por lo que es habitual comenzar por ella. Teoremas que no parecen tener la forma si-entonces A veces, nos encontramos con teoremas que no parece tener una hipótesis del tipo si-entonces. Un ejemplo es el teorema trigonométrico: 𝑠𝑖𝑛2 𝜃 + 𝑐𝑜𝑠2 𝜃 = 1, el cual no tiene una hipótesis, si no que consiste en todas las declaraciones que se necesita saber para interpretar este teorema. Conectivas lógicas A continuación se adjunta la tabla que despliega las conectivas lógicas, incluyendo los símbolos que se utilizan para este trabajo, dicha tabla está basada en el artículo [Miller.symbol]. Conectiva Expresión en el lenguaje natural Símbolo utilizado Símbolo alternativo Negación No ¬ ~ Conjunción Y ∧ & Disyunción O ∨ Condicional material Si … entonces ⟶ ⊃ Bicondicional Si y solo si ↔ ≡ Negación conjunta Ni … ni ↓ Disyunción excluyente O bien … o bien ↮ ⊕, ≢, 𝑊
  • 11. Lenguajes Formales y Computabilidad – Daniel Zamo | 11 Otras formas de demostración Demostración por reducción al absurdo Prueba indirecta por la cual se demuestra una tesis cuando su negación nos conduce a una contradicción lógica: si suponemos ¬𝐴 y llegamos a una contradicción (𝐵 ∧ ¬𝐵), entonces podemos afirmar que 𝐴 es necesariamente verdadera. Contraejemplos En la lógica, un contraejemplo es una excepción a una regla general que se propone. Por ejemplo, consideremos la proposición “todos los docentes son perezosos”. Debido a que esta declaración hace que la afirmación de que una determinada propiedad (la pereza) se cumple para todos los docentes, incluso un solo ejemplo de un docente diligente demostrará que es falso. Por lo tanto, cualquier docente trabajador es un contraejemplo “todos los docentes son perezosos”. Más precisamente, un ejemplo contrario es una instancia específica de la falsedad de una cuantificación universal (un "para todos" declaración). Este término también se utiliza a veces para los ejemplos que ilustran la necesidad de la hipótesis completa de un teorema. Un contraejemplo puede ser local o global, para un ejemplo en concreto. Demostraciones inductivas En el razonamiento inductivo, comenzamos con las observaciones y medidas específicas, de modo de detectar patrones y regularidades, esto nos permite formular algunas hipótesis tentativas que podemos explorar, y, finalmente, terminar el desarrollo con algunas conclusiones generales, teorías o definiciones. La demostración inductiva es recursiva desde una proposición parametrizada. El razonamiento inductivo se mueve de lo particular a lo general. Reúne observaciones particulares en forma de premisas, luego razona a partir de estas hacia una conclusión general. Una forma común de realizar esto es cuando recopilamos evidencia de algún fenómeno observado, luego derivamos una conclusión general acerca del fenómeno basados en nuestra evidencia recopilada. En un argumento inductivo, la conclusión va más allá de lo que las premisas nos dicen en realidad.
  • 12. Lenguajes Formales y Computabilidad – Daniel Zamo | 12 Representación inductivo – deductivo La Figura 4 muestra un esquema del razonamiento inductivo y el deductivo, a modo de comparación. 1.2 Alfabetos. Palabra. Operaciones con palabras Alfabetos Comúnmente con el término “alfabeto” nos referimos a las letras que componen nuestro sistema de escritura. En el lenguaje formal y en la teoría de autómatas la noción de alfabeto se generaliza para incluir cualquier conjunto de símbolos y que puede representarse en cualquier medio. Los elementos de un alfabeto se llaman letras o símbolos. Y normalmente serán identificados con letras o dígitos, aunque esto no siempre es necesario. Con esto queremos hacer notas que los símbolos de un alfabeto pueden corresponderse a estructura de datos complejas en una computadora. Un alfabeto se puede definir por enumeración (como lo hicimos para los conjuntos). A continuación se definen dos alfabetos: • Σ1 = {0, 1} es el alfabeto de los números binarios; • Σ2 = {<, >} es el alfabeto de los símbolos < y > Figura 4: razonamiento deductivo e inductivo, más información en [socialreseach] Un alfabeto es un conjunto no vacío de símbolos o letras (elementos) El termino símbolo es una utilidad de construcción literal para ilustrar las ideas, es una abstracción, que pueden ser marcas o una configuración de marcas para formar un patrón particular para referirse a una idea.
  • 13. Lenguajes Formales y Computabilidad – Daniel Zamo | 13 Palabra Una palabra, o cadena, sobre un alfabeto es una secuencia finita de símbolos (o letras). El conjunto de todas las palabras sobre un alfabeto Σ se denota generalmente por Σ∗ . En matemáticas o en programación, una cadena de caracteres (palabra, secuencia de caracteres, o frase) es una secuencia ordenada de longitud arbitraria (aunque finita) de elementos que pertenecen a un cierto alfabeto. En general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Ejemplo: • sea el alfabeto Σ3 = {𝑎, 𝑏, 𝑐, 𝑑, 𝑒, … … … . . , 𝑧} (letras minúsculas latinas) • son palabras sobre el alfabeto las cadenas 𝑗𝑢𝑎𝑛, 𝑎𝑙𝑢𝑚𝑛𝑜, 𝑎𝑢𝑡𝑜 Una definición más formal de palabra que pertenezca a un alfabeto debe partir de la existencia de constructores y destructores de palabras. Para poder definir palabras sobre un alfabeto son precisas tres componentes: 1. Una secuencia o palabra especial, llamada palabra vacía. La misma no contiene ninguna letra (cero símbolos). Es identificada con 𝜀 (otros autores, [Cubero.2007] , la denotan con 𝜆) 2. Un constructor de palabras (la operación de concatenación de un símbolo con una palabra), que a partir de un símbolo 𝜎 y una palabra 𝑥 construye una palabra nueva, 𝜎. 𝑥, que se obtiene colocando la letra 𝜎 a la izquierda de las letras de 𝑥. 3. Dos analizadores de palabras, identificados como inicial y resto, de modo que si 𝑥 es una palabra no vacía, 𝑖𝑛𝑖𝑐𝑖𝑎𝑙(𝑥) es una letra (la primera de 𝑥) y 𝑟𝑒𝑠𝑡𝑜(𝑥) es otra palabra. Es necesario que los constructores y analizadores de palabras aquí introducidos verifiquen las siguientes relaciones: • Si 𝑥 es una palabra arbitraria distinta de 𝜖, se cumple que: 𝑖𝑛𝑖𝑐𝑖𝑎𝑙(𝑥). 𝑟𝑒𝑠𝑡𝑜(𝑥) = 𝑥 • Si 𝑥 es una palabra cualquiera y 𝜎 es cualquier símbolo, se cumple lo siguiente: 𝑖𝑛𝑖𝑐𝑖𝑎𝑙(𝜎. 𝑥) = 𝜎 ∧ 𝑟𝑒𝑠𝑡𝑜(𝜎. 𝑥) = 𝑥 Convención En lo sucesivo se utilizarán las últimas letras minúsculas del alfabeto habitual para identificar las palabras de un alfabeto. Las letras iniciales del alfabeto habitual serán utilizadas para identificar un símbolo en particular perteneciente al alfabeto. Por ejemplo 𝑥 = 𝑗𝑢𝑎𝑛, 𝑦 = 𝑎𝑏, 𝑤 = 𝑎𝑙𝑢𝑚𝑛𝑜, tanto 𝑥, 𝑦 y 𝑤 son palabras del alfabeto Σ3 (𝑥, 𝑦, 𝑤 ∈ Σ)
  • 14. Lenguajes Formales y Computabilidad – Daniel Zamo | 14 Hay muchas maneras de implementar un sistema de palabras que satisfaga los axiomas anteriores mediante estructuras de datos en un ordenador, esto permite representar y analizar conceptos más complejos. Longitud de cadena Se llama longitud de una cadena al número de letras (símbolos) que la componen. Sea la palabra 𝑥, su longitud es representada con la notación |𝑥|. Ejemplo: si 𝑤 = 111 su longitud es |𝑤| = |111| = 3 Lenguaje universal El conjunto de todas las palabras que se puede construir con las letras de un alfabeto Σ se llama universo del discurso o lenguaje universal de Σ. Y es representado como Σ∗ . El lenguaje universal es un conjunto infinito. Operaciones con palabras Esta sección define algunas operaciones sobre el conjunto Σ∗ de todas las palabras construidas con las letras de un alfabeto Σ = {𝑎1, 𝑎2, … , 𝑎 𝑛} Concatenación de palabras Sean dos palabras 𝑥, 𝑦 ∈ Σ. • Suponiendo que |𝑥| = 𝑖, |𝑦| = 𝑗. • La concatenación de las palabras 𝑥 e 𝑦, se obtiene añadiendo los símbolos de 𝑦 a continuación de los de 𝑥. • Esta operación es representada indistintamente como 𝑥𝑦 o 𝑥. 𝑦, y genera otra palabra 𝑧. • Por ejemplo: si 𝑥 = 𝑏𝑙 e 𝑦 = 𝑎𝑎𝑎𝑏𝑙𝑎, la concatenación es 𝑧 = 𝑥𝑦 = 𝑏𝑙𝑎𝑎𝑎𝑏𝑙𝑎 • La notación 𝑥. 𝑦 se utiliza cuando pueda producirse una ambigüedad si se utiliza la notación 𝑥𝑦 o cuando sea necesario especificar la notación de la operación con un símbolo. • Podemos observar que la concatenación es una extensión de la concatenación de un símbolo con una palabra, como se definió anteriormente. Propiedades de la concatenación: • Esta operación es cerrada en el conjunto de palabras Σ∗ • Tiene propiedades asociativa de modo que 𝑥(𝑦𝑧) = (𝑥𝑦)𝑧 • La operación de concatenación es un semigrupo • El símbolo vació ({𝜀} o 𝜆) es el elemento neutro de la concatenación de palabras tanto por la derecha como por la izquierda. En efecto, sea 𝑤una palabra cualquiera, se cumple que 𝜆𝑥 = 𝑥𝜆 = 𝑥 • La concatenación no tiene propiedades de conmutación • La concatenación tiene propiedad de cancelación por la izquierda. Para todo 𝑎, 𝑏, 𝑐 ∈ Σ∗ se cumple que 𝑎𝑏 = 𝑎𝑐 ⇒ 𝑏 = 𝑐
  • 15. Lenguajes Formales y Computabilidad – Daniel Zamo | 15 • También se cumple la ley de cancelación por la derecha: 𝑎𝑐 = 𝑏𝑐 ⇒ 𝑎 = 𝑏 Potencias de un alfabeto • Si Σ es un alfabeto, se puede expresar el conjunto de todas las cadenas de una determinada longitud de dicho alfabeto utilizando una notación exponencial. De modo que definiendo Σ 𝑘 resultará el conjunto de las cadenas de longitud 𝑘, tales que cada uno de los símbolos de las mismas pertenece a Σ. Potencia i-ésima • Se llama potencia i-ésima de una palabra 𝑎 a la operación que consiste en concatenarla consigo misma 𝑖 cantidad de veces. Por propiedad asociativa no es necesario especificar el orden en el que tiene que ejecutarse las 𝑖 operaciones. • Ejemplo: sea 𝑥 un símbolo (palabra) la potencia i-ésima se calcula como 𝑥 𝑖 = 𝑥𝑥 … 𝑥 (𝑖 cantidad de veces). • Esta no es una operación nueva si no que es un modo de reducir algunos casos de la operación concatenación. Palabra inversa • Sea 𝑥 = 𝜎1 𝜎2 … 𝜎 𝑛 su palabra inversa (o palabra refleja) se representa como 𝑥 𝑅 donde 𝑥 𝑅 = 𝜎 𝑛 … 𝜎2 𝜎1 o sea la inversa está formada por las mismas letras en orden inverso. Propiedades Prefijos, sufijos • Sea 𝑧 = 𝑥𝑦. Se dice que 𝑥 es prefijo (o cabeza) de 𝑧, y que 𝑦 es sufijo (o cola) de 𝑧. Además, 𝑥 es prefijo propio de 𝑧 si 𝑦 no es la palabra vacía. De igual manera, 𝑦 es sufijo propio de 𝑧 si 𝑥 no es la palabra vacía. o Ejemplo: sea 𝑥 = 𝑎𝑏𝑐. Las siguientes palabras son prefijos de 𝑥 ∶ 𝜖, 𝑎, 𝑎𝑏, 𝑎𝑏𝑐. Las siguientes palabras son sufijos de 𝑥: 𝜖, 𝑐, 𝑏𝑐, 𝑎𝑏𝑐. Todas son propias excepto 𝑎𝑏𝑐. Propiedad de la longitud • Observe que la función longitud de una palabra tiene, respecto a la concatenación, una propiedad semejante a la función logaritmo respecto a la multiplicación de números reales: |𝑥𝑦| = |𝑥| + |𝑦|.
  • 16. Lenguajes Formales y Computabilidad – Daniel Zamo | 16 1.3 Definición Formal de Lenguaje. Operaciones con lenguajes Definición formal de lenguaje Lenguaje, sobre un alfabeto Σ, es cualquier subconjunto 𝐿 del conjunto universal de palabras sobre el alfabeto Σ. Un lenguaje formal es un lenguaje cuyos símbolos primitivos y reglas para unir esos símbolos están formalmente especificados. [Wikipedia.lenguaje]. Una importante restricción sobre lo que puede ser un lenguaje es que todos los alfabetos son finitos, de modo que los lenguajes, aunque pueden tener un número infinito de cadenas, están restringidos a que dichas cadenas estén formadas por los símbolos que definen un alfabeto finito y establecido. Es válido describir lenguajes utilizando la descripción de conjuntos. Esto es del modo {𝑥 | 𝑎𝑙𝑔𝑜 𝑎𝑐𝑒𝑟𝑐𝑎 𝑑𝑒 𝑥}. Ejemplo: {𝑤 | 𝑤 𝑒𝑠 𝑢𝑛 𝑝𝑟𝑜𝑔𝑟𝑎𝑚𝑎 𝑃𝐻𝑃 𝑠𝑖𝑛𝑡á𝑐𝑡𝑖𝑐𝑎𝑚𝑒𝑛𝑡𝑒 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑜} También es habitual reemplazar 𝑤 por alguna expresión con parámetros y describir los símbolos del lenguaje estableciendo condiciones sobre ellos. Ejemplo: �√ 𝑛2 � 20 > 𝑛 ≥ 4} (El conjunto de la raíz cuadrada de los 𝑛 𝑡𝑎𝑙 𝑞𝑢𝑒 𝑛 es 𝑚𝑎𝑦𝑜𝑟 𝑖𝑔𝑢𝑎𝑙 𝑞𝑢𝑒 4 y 𝑚𝑒𝑛𝑜𝑟 𝑞𝑢𝑒 20) Operaciones con lenguajes Podemos utilizar varias operaciones para generar nuevos lenguajes, a partir de otros dados. Concatenación Sean dos lenguajes definidos sobre el mismo alfabeto, 𝐿1, 𝐿2 ⊂ Σ∗ . La concatenación de 𝐿1 𝐿2 (alternativamente 𝐿1. 𝐿2) consiste de todas aquellas palabras de la forma 𝑦𝑤 donde 𝑦 es una palabra de 𝐿1 y 𝑤 es una palabra de 𝐿2. Palabra: sea un alfabeto Σ1, se llama palabra (formada con los símbolos de Σ1) a toda secuencia finita de las letras pertenecientes a ese alfabeto. Lenguaje: cualquier subconjunto 𝐿 del conjunto universal de palabras sobre un alfabeto Σ.
  • 17. Lenguajes Formales y Computabilidad – Daniel Zamo | 17 Más formalmente se llama concatenación de los dos lenguajes, denotada como 𝐿1 𝐿2, al lenguaje definido así: 𝐿1 𝐿2 = {𝑥𝑦 | 𝑥 ∈ 𝐿1, 𝑦 ∈ 𝐿2}. Propiedades de la concatenación • Operación cerrada: el lenguaje concatenación pertenece al mismo alfabeto inicial de los lenguajes que participan en la operación. • Asociativa: la concatenación es asociativa o sea : (𝐿1 𝐿2)𝐿3 = 𝐿1(𝐿2 𝐿3). Por cumplirse las dos propiedades anteriores, la concatenación de lenguajes es también un semigrupo. • Existencia del elemento neutro: para cualquier lenguaje 𝐿, el lenguaje formado por la palabra vacía cumple que ∅𝐿 = 𝐿∅ = 𝐿 Por cumplirse las propiedades anteriores, esta operación es un monoide. Unión Sean dos lenguajes definidos sobre el mismo alfabeto, 𝐿1, 𝐿2 ⊂ Σ∗ . Se define la unión de los dos lenguajes, 𝐿1 + 𝐿2, al lenguaje definido así: 𝐿1 + 𝐿2 = {𝑥 | 𝑥 ∈ 𝐿1 ∨ 𝑥 ∈ 𝐿2} Es decir, al conjunto formado por las palabras que pertenezcan indistintamente a uno u otro de los lenguajes. El símbolo para denotar la unión de lenguajes puede ser + o ∪. Cualquier lenguaje formado por un numero finito de palabras, {𝑥1, 𝑥2, 𝑥3, … , 𝑥 𝑛}, se puede escribir de la forma: 𝑥1 + 𝑥2 + 𝑥3 + ⋯ + 𝑥 𝑛 ≡ 𝑥1 ∪ 𝑥2 ∪ 𝑥3 ∪ … ∪ 𝑥 𝑛 Propiedades de la unión La unión de lenguajes posee las siguientes propiedades • Operación cerrada: el lenguaje resultante de la unión de dos lenguajes sobre el mismo alfabeto es también un lenguaje sobre dicho alfabeto. • Propiedad asociativa: (𝐿1 ∪ 𝐿2) ∪ 𝐿3 = 𝐿1 ∪ (𝐿2 ∪ 𝐿3). Por cumplirse las dos propiedades anteriores, la unión de lenguajes es un semigrupo. • Existencia de elemento neutro: cualquiera que sea el lenguaje 𝐿, el lenguaje vacío que ∅ ∪ 𝐿 = 𝐿 ∪ ∅ = 𝐿. Por cumplirse las tres propiedades anteriores, la unión de lenguajes es monoide. • Propiedad conmutativa: cualesquiera que sean 𝐿1 y 𝐿2, se verifica que 𝐿1 ∪ 𝐿2 = 𝐿2 ∪ 𝐿1. Por poseer las cuatro propiedades anteriores se dice que la unión de dos lenguajes conforman un monoide abeliano.
  • 18. Lenguajes Formales y Computabilidad – Daniel Zamo | 18 • Propiedad idempotente: cualquiera que sea 𝐿, se cumple que 𝐿 ∪ 𝐿 = 𝐿. Como tanto la concatenación como la unión son un monoide se dice que el conjunto de lenguajes sobre un alfabeto, junto con las operaciones de concatenación y de unión, es un binoide. A partir de los lenguajes formados por la palabra vacía o por una única palabra de una sola letra, junto a las operaciones de concatenación y unión es posible generar cualquier lenguaje sobre un alfabeto Σ (excepto el 𝜙). Por lo tanto, el alfabeto es un conjunto de generadores para el conjunto 𝕃 de todos los lenguajes que pueden definirse sobre Σ por lo que 𝕃 se denomina binoide libre generado por Σ. Potencia i-ésima Sea 𝐿 un lenguaje la potencia i-ésima viene dada por concatenarlo tantas veces como lo indica 𝑖. Al igual que la concatenación esta operación tiene propiedad asociativa, no es necesario especificar el orden en el que tienen que efectuarse las 𝑖 operaciones de concatenación: 𝐿𝑖 = 𝐿𝐿𝐿𝐿 … 𝐿 (tantas veces como lo indique 𝑖). Algunos autores no consideran a esta como una operación en si, ya que es una extensión de la concatenación, pero en algunos casos puede simplificar algunos casos de la. Se define también 𝐿1 = 𝐿 y 𝐿0 = 𝜆. Es evidente que se verifica que, para todo lenguaje 𝐿 y para todo 𝑖, 𝑗 ≥ 0, 𝐿𝑖 𝐿 𝑗 = 𝐿𝑖+𝑗 . Iteración Se llama iteración, cierre o clausura de un lenguaje 𝐿: 𝐿∗ =∪𝑖=0 ∞ 𝐿𝑖 Esto quiere decir, el lenguaje que se obtiene uniendo el lenguaje 𝐿 con todas sus potencias posibles, incluso 𝐿0 . Clausura positiva La clausura positiva de un lenguaje 𝐿 se define así: 𝐿+ =∪𝑖=1 ∞ 𝐿𝑖 Las siguientes entidades son evidentes: 𝐿∗ = 𝐿+ ∪ 𝜆 𝐿+ = 𝐿𝐿∗ = 𝐿∗ 𝐿 Esta operación justifica la notación de Σ∗ para el lenguaje universal de un alfabeto Σ.
  • 19. Lenguajes Formales y Computabilidad – Daniel Zamo | 19 Inverso Sea 𝐿 un lenguaje cualquiera. Se llama inverso o lenguaje reflejo de 𝐿 a {𝑥 𝑅 | 𝑥 ∈ 𝐿} es decir, el que contiene las palabras inversas a las de 𝐿. Si tenemos un lenguaje 𝐿, su inverso es representado por 𝐿 𝑅 . Expresiones regulares Hemos visto que los lenguajes son un conjunto finito o infinitos de sentencias. Los lenguajes de programación con un número de sentencias finitos se pueden especificar exhaustivamente enumerando todas sus sentencias. No obstante para los lenguajes con un número de sentencias infinito esta tarea se hace imposible, pues los medios para describirlos son finitos. La manera habitual de describir un lenguaje es mediante su gramática, pero debemos considerar que las gramáticas que se utilizan en los lenguajes de programación necesitan de una modelización matemática que haga factible su implementación en los compiladores. Noam Chomsky (ver sección Gramáticas de Chomsky) logro grandes avances en la concepción de un modelo matemático de las gramáticas conectándolos con los lenguajes naturales. Esto permitió descubrir una relación entre la teoría de las maquinas abstractas y la teoría de los lenguajes formales, facilitando no solo la comprensión y la descripción formal de los lenguajes, sino también el desarrollo de los correspondientes compiladores para la programación de computadoras que por ese tiempo estaban surgiendo. Se original así los metalenguajes, que son herramientas que sirven para describir formalmente a los lenguajes. Los metalenguajes son herramientas para la descripción formal de los lenguajes, que facilitan no sólo la comprensión del mismo, sino también el desarrollo del compilador correspondiente. Un ejemplo de metalenguaje son las expresiones regulares, las cuales describen los componentes léxicos (o tokens) de un lenguaje, estas expresiones son utilizadas en muchos sistemas que tienen que ver con el procesamiento y reconocimiento de cadenas, por ejemplo: 1. Muchos comandos de búsqueda, como sed o grep de UNIX (Linux) o comandos equivalentes para la búsqueda de cadena (tokens) que se ven en los navegadores web o los sistemas de formato de texto. Estos sistemas utilizan una notación de expresión regular, como patrones que describen lo que el usuario desea encontrar en un archivo de texto.
  • 20. Lenguajes Formales y Computabilidad – Daniel Zamo | 20 2. Las expresiones regulares (o descripciones regulares), definen, casi siempre, la forma de especificar los tokens de modo que sean reconocidos por los analizadores léxicos de los compiladores en los lenguajes de programación. Tomando estas expresiones regulares como entrada, los analizadores léxicos pueden ser programados a mano o generados automáticamente, realizando tareas muy concretas de la gestión de símbolos. El módulo de lectura de un programa y el analizador léxico son los únicos elementos de un compilador que necesitan trabajar con el texto del programa al completo (ver [Grune.2007, página 50 - 52]). En la Figura 5 se muestra la estructura conceptual de un compilador. Una expresión regular es una fórmula que describe un posible conjunto infinito de cadenas, estas pueden ser entendidas como un patrón para seleccionar o buscar cadenas dentro de un lenguaje3, también pueden ser entendidas como una forma de describir un lenguaje. Ejemplo: la expresión 𝑎𝑏 ∗ puede emplearse para buscar un texto que consiste en un carácter 𝑎 seguido de por cero o más caracteres 𝑏. Esta expresión genera un conjunto infinito {𝑎, 𝑎𝑏, 𝑎𝑏𝑏, 𝑎𝑏𝑏𝑏 … }. Cuando se tiene una cadena que puede ser generada por una expresión regular dada decimos que la expresión regular selecciona o produce una coincidencia para la cadena. 3 Habitualmente las expresiones regulares las utilizamos cuando buscamos ciertas ocurrencias en los editores de texto más comunes. Figura 5: Estructura conceptual de un compilador [Grune.2007, página 11]
  • 21. Lenguajes Formales y Computabilidad – Daniel Zamo | 21 Operadores de expresiones regulares Las expresiones regulares denotan lenguajes. Por ejemplo, la expresión regular 01∗ + 10∗ indica que el lenguaje consiste de todas las cadenas formadas por un solo 0 seguido por cualquier número de 1 o de un solo 1 seguido de cualquier número de 0. Por el momento es imposible interpretar completamente las expresiones regulares y antes de describir su notación es oportuno recordar tres operaciones posibles de realizar con los lenguajes, dos de ellas ya han sido vistas: 1. La unión de los lenguajes, 𝐴 y 𝐵, definida como 𝐴 ∪ 𝐵 = {𝑥|𝑥 ∈ 𝐴 ∨ 𝑥 ∈ 𝐵} 2. La concatenación de los lenguajes, A y B, definida como AB = {ab|a ∈ A ∧ b ∈ B} 3. El cierre de Kleene4 de un lenguaje L, denotado como L∗ y representa el conjunto de las cadenas que se pueden formar mediante la adopción de cualquier número de cadenas a partir de L, posiblemente con repeticiones y concatenaciones. Por ejemplo si L = {0, 1}, entonces L∗ son todas las cadenas de 0´s y 1′ s. Formalmente, L∗ es la unión infinita ∪i≥0 Li , donde L0 = {ϵ}, L1 = L, y Li , para i > 1 es LLL … L (la concatenación de i copias de L). Otros autores representan el cierre de Kleene de un lenguaje L como L∗ = {ϵ} ∪ L ∪ L ∪ L ∪ L …. El Kleene Star (operador de Kleene o cierre de Kleene) es una operación unaria en un conjunto de símbolos o caracteres. La aplicación del operador a un conjunto 𝑉 se escribe como 𝑉∗ . Este es ampliamente utilizado para las expresiones regulares, que es el contexto en el que fue introducido por S. Kleene para caracterizar algunos autómatas. • Si 𝑉 es un conjunto de cadenas, entonces 𝑉∗ se define como el menor superconjunto de 𝑉 que contiene 𝜆 (cadena vacía) y es cerrado bajo la operación de concatenación de cadenas. Este sistema también se describe como el conjunto de las cadenas que se forman a partir de la concatenación de cero o más cadenas de 𝑉. • Si 𝑉 es un conjunto de símbolos o caracteres entonces 𝑉∗ es el conjunto de todas las cadenas sobre los símbolos (o caracteres) pertenecientes a 𝑉, incluyendo 𝜆. 4 El cierre de Kleene (closure, or star, or Kleene closure, operador) por Stephen Cole Kleene (http://en.wikipedia.org/wiki/S._C._Kleene), quien originó la notación de expresiones regulares y el operador de este.
  • 22. Lenguajes Formales y Computabilidad – Daniel Zamo | 22 Construcción de expresiones regulares Todas las algebras comienzan con expresiones elementales, probablemente con constantes y/o variables. Luego mediante la aplicación de un determinado conjunto de operadores (con sus métodos de agrupación y los operandos), podemos construir más expresiones, y agregar expresiones previamente construidas. Por ejemplo el álgebra aritmética comienza con constantes como números enteros y reales, agrega luego las variables y se basa en expresiones más complejas con operadores aritméticos como la 𝑠𝑢𝑚𝑎 y la 𝑚𝑢𝑙𝑡𝑖𝑝𝑙𝑖𝑐𝑎𝑐𝑖ó𝑛. El álgebra de las expresiones regulares sigue este patrón, con constantes y variables que denotan al lenguaje, y los operadores de las tres operaciones comentadas anteriormente (unión, concatenación y operador de Kleene). Se puede ahora describir la expresión regular recursivamente. Para la expresión regular 𝐸 se describe el lenguaje que representa y es denotada como 𝐿(𝐸)5P. Una expresión regular consiste de tres partes: 1. La constante {𝜖} y ∅, respectivamente, o sea 𝐿(𝜖), y 𝐿(∅) = ∅. 2. Si 𝑎 es cualquier símbolo, entonces 𝒂 es una expresión regular. Esta expresión denota el lenguaje {𝑎}. Es decir 𝐿(𝒂) = {𝑎}. Los autores de la obra [Hopcroft.2007] resaltan la letra en negrita para indicar una expresión que corresponde a un símbolo. 3. Una variable, usualmente mayúscula e itálica, como 𝐿, que denota cualquier lenguaje. Ejemplo: consideremos la expresión: (0 ∪ 1)01∗ El lenguaje descripto por esta expresión es el conjunto de todas las cadenas binarias… 1. Que comienzan con 0 o 1 (esto lo indica (0 ∪ 1)); 2. El segundo símbolo es 0 (esto lo indica 0); 3. Y finaliza con cero o más 1′𝑠 (esto lo indica 01∗ ). Con lo que resulta que el lenguaje descripto por esta expresión es {00, 001, 0011, … . , 10, 101, … . , 1011, 10111} 5 Los autores del trabajo [Hopcroft.2007, página 89] indican que 𝐸 es sólo la expresión regular y el lenguaje que ella denota es 𝐿(𝐸).
  • 23. Lenguajes Formales y Computabilidad – Daniel Zamo | 23 Operadores y patrones La Tabla 1 muestra los componentes de las expresiones regulares, en ella se pueden ver los patrones básicos y operadores. Patrones básicos 𝑥 Carácter 𝑥 Es la expresión más simple ya que especifica el carácter explícitamente . Cualquier carácter Es la expresión más básica ya que selecciona un solo carácter [𝑥𝑦𝑧 … ] Cualquiera de los caracteres 𝑥, 𝑦, 𝑧, … Operadores de repetición 𝑅? Una 𝑅 o nada 𝑅∗ Cero o más ocurrencias de 𝑅 𝑅∗ Una o más ocurrencias de 𝑅 Operadores de composición 𝑅1 𝑅2 Una 𝑅1 seguida por una 𝑅2 𝑅1 | 𝑅2 O 𝑅1 o 𝑅2 Agrupamiento (𝑅) 𝑅 Tabla 1: Componentes de las expresiones regulares [Grune.2007, página 53]
  • 24. Lenguajes Formales y Computabilidad – Daniel Zamo | 24 2. Gramáticas Formales 2. 1 Definición. Tipos de gramáticas. Gramáticas tipo 0 Gramáticas Una gramática es un ente formal que especifica de una manera finita, un conjunto de sentencias, o cadenas de símbolos, potencialmente infinito y que constituye un lenguaje. Una gramática se puede definir como una cuádrupla formada por un vocabulario terminal, un vocabulario no terminal, un símbolo inicial, y un conjunto de producciones o reglas de derivación. Todas las sentencias del lenguaje definido por la gramática están formadas con símbolos del vocabulario terminal o símbolos terminales. El vocabulario no terminal es un conjunto de símbolos introducidos como elementos auxiliares para la definición de las producciones gramaticales, y no figuran en las sentencias del lenguaje. El conjunto de símbolos terminales y el conjunto de símbolos no terminales no tienen ningún elemento en común. El símbolo inicial es un símbolo perteneciente al vocabulario no terminal, y a partir del cual pueden obtenerse todas las sentencias del lenguaje generado por la gramática. Las producciones o reglas de derivación son transformaciones de cadenas de símbolos, que se expresan mediante una pareja de expresiones separadas por una flecha. A la izquierda de la flecha está el símbolo o conjunto de símbolos a transformar, y a la derecha se sitúan los símbolos resultantes de la transformación. Las reglas de derivación pueden aplicarse sucesivamente, desde el símbolo inicial hasta obtener una cadena de símbolos terminales, con lo que se obtiene una sentencia del lenguaje6. Una gramática describe la estructura de las frases y de las palabras (o la combinación de símbolos) de un lenguaje, esto se aplica tanto a los lenguajes naturales como a los lenguajes artificiales creados para programar computadoras. Por ejemplo la sintaxis del lenguaje español puede representarse mediante una serie de reglas relativamente sencillas que definen las partes de la oración, mediante las cuales podemos comprobar si una frase concreta es o no correcta7. Algunas de estas reglas son las siguientes: • Una oración posee sujeto y predicado; • Un sujeto es un sintagma nominal; • Un sintagma nominal consta de un grupo nominal y de un calificativo opcional; 6 Detalle en trabajo [Jacobo.capitulo6] 7 Detalle en trabajo [Cubero.2007]
  • 25. Lenguajes Formales y Computabilidad – Daniel Zamo | 25 • Un grupo nominal consta de un determinante opcional y de un nombre; • Un calificativo es un adjetivo o un pronombre relativo seguido de una oración subordinada; • Un predicado consta de un verbo seguido de un conjunto opcional de complementos; Se puede observar que estas reglas establecen ciertos términos (en el texto aparecen resaltadas en cursiva) en función de otros semejantes, o de palabras concretas (como la preposición a). Para representarlas se utiliza una notación especial, es la regla de producción y es expresada como: < 𝑡𝑒𝑟𝑚𝑖𝑛𝑜 𝑜 𝑡𝑒𝑟𝑚𝑖𝑛𝑜𝑠 𝑞𝑢𝑒 𝑠𝑒 𝑒𝑠𝑡𝑎 𝑑𝑒𝑓𝑖𝑛𝑖𝑒𝑛𝑑𝑜 > ⟶< 𝑑𝑒𝑓𝑖𝑛𝑖𝑐𝑖ó𝑛 > El término que se está definiendo se llama parte izquierda de la regla de producción. Su definición es la parte derecha de la regla. Por ejemplo podríamos expresar reglas como las anteriores en forma de reglas de producción: < 𝑜𝑟𝑎𝑐𝑖ó𝑛 >⟶< 𝑓𝑟𝑎𝑠𝑒 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑎 >< 𝑓𝑟𝑎𝑠𝑒 𝑣𝑒𝑟𝑏𝑎𝑙 > < 𝑓𝑟𝑎𝑠𝑒 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑎 >⟶< 𝑎𝑑𝑗𝑒𝑡𝑖𝑣𝑜 >< 𝑓𝑟𝑎𝑠𝑒 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑎 > < 𝑓𝑟𝑎𝑠𝑒 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑎 >⟶< 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑜 > < 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑜 >⟶ 𝑛𝑖ñ𝑜 < 𝑎𝑑𝑗𝑒𝑡𝑖𝑣𝑜 >⟶ 𝑝𝑒𝑞𝑢𝑒ñ𝑜 Los términos encerrados entre los signos < y > se consideran símbolos de un alfabeto, y se tratan como si fuesen letras, para todos los efectos. Observe que algunas de las reglas anteriores son recursivas. Una lista de términos del mismo tipo suele expresarse mediante una regla recursiva, junto con otra definición alternativa cuya parte derecha sea la palabra vacía. Observe también que algunas de las reglas anteriores añaden información morfológica sobre las palabras, indicando cuáles son nombres, preposiciones, etc. (Por ejemplo < 𝑠𝑢𝑠𝑡𝑎𝑛𝑡𝑖𝑣𝑜 >⟶ 𝑛𝑖ñ𝑜). Tipos de gramáticas de Chomsky En el año 1950 el lingüista norteamericano Avram Noam Chomsky introduce la teoría de las gramáticas transformacionales [Chomsky.1959] o teoría de lenguajes formales, está le proporciona a los lenguajes naturales una herramienta más para su estudio, y convierte a la lingüística en ciencia. Esta teoría facilita el estudio y la formalización de los lenguajes en general, y se hace extensivo también a los lenguajes de programación de ordenadores.
  • 26. Lenguajes Formales y Computabilidad – Daniel Zamo | 26 El estudio de los lenguajes se divide tradicionalmente en dos grandes partes, esto se representa en el diagrama mostrado en la Figura 5: Estructura conceptual de un compilador [Grune.2007, página 11]. En dicho diagrama se agrupan cuáles de esas áreas son también aplicables a los lenguajes de computadoras. Figura 6: Diagrama, estudio de los lenguajes Gracias al trabajo realizado por Chomsky surge una relación imprevista entre dos campos tan diferentes en apariencia, como la teoría de las maquinas abstractas y la teoría de lenguajes formales. Chomsky clasifico los lenguajes en una jerarquía inclusiva, mostrada en la Figura 7: jerarquías de las gramáticas de Chomsky que reciben el nombre de jerarquías de las gramáticas de Chomsky. Figura 7: jerarquías de las gramáticas de Chomsky
  • 27. Lenguajes Formales y Computabilidad – Daniel Zamo | 27 Gramáticas del tipo 0: • Es el más general, a estos lenguajes no se les impone restricción alguna; • El conjunto de las gramáticas de este tipo está íntimamente relacionado con el conjunto de todos los problemas computables o recursivamente enumerables; • Se pueden resolver mediante una máquina de Touring. Gramáticas del tipo 1: • Corresponden a los lenguajes sensibles al contexto; • En este caso se introducen limitaciones en la estructura gramatical; • Estas gramáticas pueden analizarse mediante autómatas lineales acotados. Gramáticas del tipo 2: • Este tipo de gramáticas corresponden a los lenguajes independientes del contexto; • Se restringen aún más la libertad de la formación de reglas gramaticales; • Todos los lenguajes de computación, sin excepción tienen una sintaxis que se puede expresar mediante gramáticas del tipo 2 y siempre es posible analizarla mediante un autómata a pila. Gramáticas del tipo 3: • Este tipo de gramáticas pertenece a un tipo de lenguaje muy sencillo, llamados lenguajes regulares; • Se construyen con restricciones muy estrechas; • Solo el análisis morfológico de los lenguajes de computación pertenecen a este tipo de gramáticas; • La gramática de cualquier lenguaje regular se puede analizar mediante un autómata finito; • Estas máquinas abstractas se pueden utilizar en el análisis y diseño orientado a objetos y en el álgebra de las expresiones regulares de las matemáticas. Definición Una gramática es intuitivamente un conjunto de reglas, que son utilizadas para construir un lenguaje contenido en Σ∗ de algún alfabeto 𝛴.En principio describe únicamente la estructura sintáctica, pero dado que la semántica de un lenguaje está definida en términos de su sintaxis, la gramática también contribuye a la definición de la semántica. Tipos de gramáticas Existen varios tipos, pero en el programa de la materia nos interesan particularmente las siguientes gramáticas:
  • 28. Lenguajes Formales y Computabilidad – Daniel Zamo | 28 • Jerarquía de Chomsky: las cuatro tipos presentados en el ítem anterior, y que como se verá esta jerarquía incluye a las demás; • Las irrestrictas: En la teoría del lenguaje formal, una gramática sin restricciones es una gramática formal en la que no hay restricciones en los costados derecho e izquierdo de las producciones. Esta se corresponden con la clase más general de las gramáticas en la jerarquía de Chomsky, y puede generar lenguajes arbitrarios recursivamente enumerables; • Las sensible al contexto: Esta gramática formal, abreviada por CSG (Context-Sensitive Grammar), los lados izquierdo y derecho de las normas de producción pueden estar rodeado de un contexto de símbolos terminales y no terminales, estas son más generales que las gramáticas libres de contexto, pero aún lo suficientemente ordenada para ser analizado por un autómata lineal acotado. El concepto de sensible al contexto fue presentado también por N. Chomsky, como una manera de describir la sintaxis del lenguaje natural en el que de hecho es a menudo el caso de que una palabra pueda o no pueda ser apropiada en un lugar determinado, dependiendo del contexto; • Las indexadas: Una gramática indexada es una gramática formal que describe los lenguajes indexados. Estos lenguajes descubiertos por Alfred Aho, pueden ser reconocidos por autómatas de pila anidados. Los lenguajes indexados son un subconjunto propio de de los lenguajes sensibles al contexto, se califican como una familia abstracta de lenguajes y por lo tanto satisfacen muchas de las propiedades de cierre. Esta clase de lenguajes tienen importancia práctica en el procesamiento del lenguaje natural como una generalización de cómputo accesible de lenguajes libres de contexto, ya que las gramáticas indexadas pueden describir muchas de las restricciones no locales que ocurren en los lenguajes naturales; • Libre de contexto: En la teoría del lenguaje formal, una gramática libre de contexto (o CFG de Context-Free Grammar) es una gramática formal en la que cada regla de producción tiene la forma o 𝑉 ⟶ 𝑤 Donde 𝑉 es un símbolo no terminal único, y 𝑤 es una cadena de terminales y / o no-terminales (𝑤 puede estar vacío). Los lenguajes generados por gramáticas libres de contexto son conocidos como los lenguajes independientes del contexto. Estas gramáticas son importantes en la informática para describir la estructura de los lenguajes de programación y otros lenguajes artificiales; • Árboles adyacentes: Estas gramáticas, abreviadas por TAG (Tree-adjoining grammar) ; son un formalismo gramatical definido por A. Joshi. Son similares a las gramáticas libres de contexto, pero la unidad elemental de reescritura es el árbol en lugar del símbolo. Mientras que las gramáticas libres de contexto tienen reglas para
  • 29. Lenguajes Formales y Computabilidad – Daniel Zamo | 29 reescribir símbolos como cadenas de otros símbolos, los árboles adyacentes tienen reglas de reescritura de los nodos de los árboles como otros árboles; • Libres de contexto determinista: En la teoría de la gramática formal, estas son un subconjunto de las gramáticas libres de contexto. Las gramáticas libres de contexto deterministas (o abreviadas como DCFG por deterministic context-free grammars) pueden ser reconocidas por un autómata determinista pushdown. Un DCFG es el conjunto finito de reglas que definen el conjunto de expresiones bien formadas en un lenguaje libre de contexto determinista. • Gramáticas Regulares: En ciencias de la computación teórica, una gramática regular es una gramática formal que describe un lenguaje regular. Algunas de ellas ya han sido nombradas otras serán tratadas oportunamente. Una gramática es una receta con la que contamos para construir elementos a partir de un conjunto de cadenas de símbolos. Cuando son aplicadas a un lenguaje de programación, los símbolos son los tokens del lenguaje, las cadenas de los símbolos son los textos del programa, y los conjuntos de cadenas de símbolos son el lenguaje de programación. Gramáticas, lenguajes y máquinas abstractas Es conveniente realizar una relación entre la jerarquía de gramáticas de Chomsky, los lenguajes formales, las maquinas abstractas y los problemas que cada una es capaz de resolver. Esto se muestra en la Figura8: relación entre la jerarquía de las gramáticas de Chomsky, los distintos tipos de lenguajes, la teoría de máquinas abstractas y los problemas de la teoría de la computabilidad, (Cubero.2007, página 8).
  • 30. Lenguajes Formales y Computabilidad – Daniel Zamo | 30 Figura 8: relación entre la jerarquía de las gramáticas de Chomsky, los distintos tipos de lenguajes, la teoría de máquinas abstractas y los problemas de la teoría de la computabilidad, [Cubero.2007, página 8] 2.2 Gramáticas independientes del contexto. Gramáticas regulares Gramáticas independientes del contexto Se llama gramática formal o gramática independiente del contexto (CFG por context-free grammar8, o simplemente gramática) a la cuádrupla: 𝐺 = (𝑉, 𝑇, 𝑃, 𝑆) Donde 𝑉 es un conjunto de variables (alfabeto de símbolos no terminales); 𝑇 son los terminales (alfabeto de símbolos terminales); 𝑃 es el conjunto de producciones (conjunto finito de reglas de producción) y 𝑆 es el símbolo inicial (axioma o símbolo distinguido). 8 Revisar análisis completo en la obra [Hopcroft.2007, página 173]
  • 31. Lenguajes Formales y Computabilidad – Daniel Zamo | 31 Gramáticas regulares Una gramática regular es una gramática formal que describe un lenguaje regular. Las gramáticas regulares están incluidas en las del tipo 3, de la jerarquía de Chomsky. Las gramáticas de tipo 3 se clasifican en dos subgrupos: • Gramáticas lineales por la izquierda, cuyas reglas de producción pueden tomar una de las siguientes tres formas: o 𝐴 ∶≔ 𝑎 o 𝐴 ∶≔ 𝑉𝑎 o 𝑆 ∶≔ 𝜆 Donde 𝑎 ∈ Σ 𝑇, 𝐴, 𝑉, 𝑆 ∈ Σ 𝑁, y 𝑆 es el axioma de la gramática. • Gramáticas lineales por la derecha, cuyas reglas de producción pueden tomar una de las siguientes tres formas: o 𝐴 ∶≔ 𝑎 o 𝐴 ∶≔ 𝑎𝑉 o 𝑆 ∶≔ 𝜆 Donde 𝑎 ∈ Σ 𝑇, 𝐴, 𝑉, 𝑆 ∈ Σ 𝑁, y 𝑆 es el axioma de la gramática. Anexo I Lista de símbolos A continuación se anexan algunos de los símbolos utilizados en [Hopcroft.2007], a modo de referencia. Los mismos están agrupados. No es una lista completa, solo se intenta referenciar algunos de los símbolos usados en este trabajo; esta tabla ha sido resumida principalmente desde [símbolos.matemáticos] y respetando la obra anterior. Lista de símbolos de la teoría de conjuntos Símbolo Nombre { } conjunto ∩ intersección ∪ unión ⊆ subconjunto ⊂ proper subset / strict subset ⊄ No es subconjunto ⊇ Superconjunto ⊃ Propiedad superconjunto ⊅ No es superconjunto = igualdad
  • 32. Lenguajes Formales y Computabilidad – Daniel Zamo | 32 𝐴 𝐶 Complemento − Complemento relativo ∆ 𝜃 Simétricamente diferente ∈ Elemento de .. Pertenece a .. ∉ No es elemento No pertenece (𝑎, 𝑏) Par ordenado 𝐴 × 𝐵 Producto cartesiano Ø Conjunto vacío 𝑈∗ Conjunto universal { } Cadena vacía 𝜀 (𝜆) Identifica la palabra vacía, que existe en cualquier alfabeto y tiene una longitud cero. Σ 𝑘 Conjunto de todas las cadenas que pertenecen a Σ de longitud 𝑘. Σ+ Es el conjunto de cadenas no vacías del alfabeto Σ. Σ∗ Conjunto de todas las palabras sobre el alfabeto Σ. |𝐴| #𝐴 cardinalidad Lista de símbolos matemáticos básico Símbolo Nombre = Igualdad ≠ Desigualdad Lista de símbolos de álgebra Símbolo Nombre ≡ Equivalente (idéntico a..) ≅ Aproximadamente igual a…
  • 33. Lenguajes Formales y Computabilidad – Daniel Zamo | 33 ≈ Casi igual a .. ∞ Símbolo infinito 𝑥 Variable 𝑥 (representa cualquier valor a buscar) 𝑓(𝑥) Función de 𝑥 Lista de símbolos lógicos Símbolo Nombre ∧ Conjunción (𝑎𝑛𝑑) ∨ Disyunción (𝑜𝑟) ¬ Negación ⟹ implica ⟺ Equivalencia (𝑠𝑖 𝑦 𝑠𝑜𝑙𝑜 𝑠𝑖) ∀ Para todo ∃ Existe ∄ No existe ∴ Por lo tanto
  • 34. Lenguajes Formales y Computabilidad – Daniel Zamo | 34 Bibliografía [Chomsky.1959] Chomsky, Noam. “On certain formal properties of grammars” [Cubero.2007] E. Cubero, M. Moreno, R. Salomon. “Teoría de Autómatas y Lenguajes Formales” [Grune.2007] D. Grune, H. E. Bal, C. J. H. Jacob y K. G. Langendoen. “Diseño de Compiladores Modernos”. Mc Graw Hill, 2007. [Hopcroft.1993] J. Hopcroft, J. Ullman. “Introducción a la Teoría de Autómatas, Lenguajes y Computación, 1 Edición”. [Hopcroft.2001] J. Hopcroft, J. Ullman. “Introduction To Automata Theory, Languages, and Computation, 2nd Edition”. [Hopcroft.2007] J. Hopcroft, J. Ullman. “Introduction To Automata Theory, Languages, and Computation, 3rd Edition”. [Hopcroft.2008] J. Hopcroft, J. Ullman. “Teoría de Autómatas, lenguajes y computación, 3ra Edición”. Lecturas en Internet [hans] Hans Uszkoreit, What is Computational Linguistics? • http://www.coli.uni-saarland.de/~hansu/what_is_cl.html [harvey] Harvey and Laurie Bluedorn, Two Methods of Reasoning • http://www.triviumpursuit.com/articles/two_methods_of_reasoni ng.php [Jacobo.capitulo6] Ing. M. Á. Durán Jacobo. “Introducción a los Lenguajes formales, Capitulo 6, Lenguaje formal”. • http://www.libros.publicaciones.ipn.mx/PDF/1338.pdf [Miller.symbol] Earliest Uses of Various Mathematical Symbols • http://jeff560.tripod.com/mathsym.html [moisl.lecture 1]Hermann Moisl, Computational Linguistics, lectura 1 • http://www.staff.ncl.ac.uk/hermann.moisl/ell236/lecture1.htm [símbolos.matemáticos] Símbolos matemáticos • http://www.rapidtables.com/math/symbols/Set_Symbols.htm [socialresearch] William M.K. Trochim, Deduction & Induction • http://www.socialresearchmethods.net/kb/dedind.php
  • 35. Lenguajes Formales y Computabilidad – Daniel Zamo | 35 [Wikipedia.función] Función Matemática • http://es.wikipedia.org/wiki/Funci%C3%B3n_matem%C3%A1tica [Wikipedia.lenguaje] Lenguaje formal • http://es.wikipedia.org/wiki/Lenguaje_formal [Wikipedia.lógicas] Lógica proposicional • http://es.wikipedia.org/wiki/L%C3%B3gica_proposicional [Wikipedia.símbolos] Símbolos matemáticos • http://es.wikipedia.org/wiki/Anexo:S%C3%ADmbolos_matem%C3 %A1ticos