Diferencia entre revisiones de «Lenguaje formal»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Deshecha la edición 25791668 de 200.36.248.4 (disc.)
Línea 9: Línea 9:
* El conjunto de todas las palabras sobre <math>\{a, b\}\,</math>.
* El conjunto de todas las palabras sobre <math>\{a, b\}\,</math>.
* El conjunto <math>\{ a^n : n\}\, </math> es un número primo.
* El conjunto <math>\{ a^n : n\}\, </math> es un número primo.
* El conjunto de todos lo
* El conjunto de todos los programas sintácticamente válidos en un determinado [[lenguaje de programación]].
* El conjunto de sentencias bien formadas en [[Lógica de primer orden|lógica de predicados]].


== Especificación de lenguajes formales ==
== Especificación de lenguajes formales ==

Revisión del 02:47 23 abr 2009

En matemáticas, lógica, y ciencias de la computación, un lenguaje formal es un conjunto de palabras (cadenas de caracteres) de longitud finita en los casos más simples o expresiones válidas (formuladas por palabras) formadas a partir de un alfabeto (conjunto de caracteres) finito. El nombre lenguaje se justifica porque las estructuras que con este se forman tienen reglas de buena formación (gramática) e interpretación semántica (significado) en una forma muy similar a los lenguajes hablados o naturales.

Un posible alfabeto sería, digamos, , y una cadena cualquiera sobre este alfabeto sería, por ejemplo, . Un lenguaje sobre este alfabeto, que incluyera esta cadena, sería: el conjunto de todas las cadenas que contienen el mismo número de símbolos que , por ejemplo.

La palabra vacía (esto es, la cadena de longitud cero) se permite en este tipo de lenguajes, notándose frecuentemente mediante , ó . A diferencia de lo que ocurre con el alfabeto (que es un conjunto finito) y con cada palabra (que tiene una longitud también finita), un lenguaje puede estar compuesto por un número infinito de palabras.

Ejemplos de lenguajes formales

  • El conjunto de todas las palabras sobre .
  • El conjunto es un número primo.
  • El conjunto de todos los programas sintácticamente válidos en un determinado lenguaje de programación.
  • El conjunto de sentencias bien formadas en lógica de predicados.

Especificación de lenguajes formales

Los lenguajes formales se pueden especificar de una amplia variedad de formas, como por ejemplo:

Operaciones

Se pueden utilizar varias operaciones para producir nuevos lenguajes a partir de otros dados. Supóngase que L1 y L2 son lenguajes sobre un alfabeto común. Entonces:

  • la concatenación L1L2 consiste de todas aquellas palabras de la forma vw donde v es una palabra de L1 y w es una palabra de L2
  • la intersección L1&L2 consiste en todas aquellas palabras que están contenidas tanto en L1 como en L2
  • la unión L1|L2 consiste en todas aquellas palabras que están contenidas ya sea en L1 o en L2
  • el complemento ~L1 consiste en todas aquellas palabras producibles sobre el alfabeto de L1 que no están ya contenidas en L1
  • el cociente L1/L2 consiste de todas aquellas palabras v para las cuales existe una palabra w en L2 tales que vw se encuentra en L1
  • la estrella L1* consiste de todas aquellas palabras que pueden ser escritas de la forma W1W2...Wn donde todo Wi se encuentra en L1 y n ≥ 0. (Nótese que esta definición incluye a ε en cualquier L*)
  • la intercalación L1*L2 consiste de todas aquellas palabras que pueden ser escritas de la forma v1w1v2w2...vnwn; son palabras tales que la concatenación v1...vn está en L1, y la concatenación w1...wn está en L2

Una pregunta que se hace típicamente sobre un determinado lenguaje formal L es cuán difícil es decidir si incluye o no una determinada palabra v. Este tema es del dominio de la teoría de la computabilidad y la teoría de la complejidad computacional.

Por contraposición al lenguaje propio de los seres vivos y en especial el lenguaje humano, considerados lenguajes naturales, se denomina lenguaje formal a los lenguajes «artificiales» propios de las matemáticas o la informática, los lenguajes artificiales son llamados lenguajes formales (incluyendo lenguajes de programación). Sin embargo, el lenguaje humano tiene una característica que no se encuentra en los lenguajes de programación: la diversidad.

En 1956, Noam Chomsky creó la Jerarquía de Chomsky para organizar los distintos tipos de lenguaje formal.

Verdades concernientes a los lenguajes formales

Teorema 1: El conjunto de lenguajes en general (incluyendo los no-formales) es incontable.

Lema 1: El conjunto de lenguajes en un alfabeto no vacío dado es incontable

Afirmar que un alfabeto es no-vacío equivale a que ese alfabeto contenga al menos un símbolo, ergo, basta demostrar que el conjunto de lenguajes en el alfabeto es incontable. Como sabemos, un lenguaje L en es un subconjunto de , esto nos lleva a la conclusión de que, el conjunto de todos los lenguajes en es justamente (el conjunto de todos los subconjuntos o conjunto potencia de ) y es evidente que es infinito (de hecho; contable), también ha sido demostrado que si es un conjunto infinito (contable o incontable), entonces es mayor que porque pasa a ser un conjunto infinito de órdenes del infinito, al ser mayor, no existirá biyección entre y , lo que hace a un conjunto infinito incontable, la prueba ha finalizado.

Demostración del Teorema 1: Puede derivarse fácilmente que la aseveración delineada en el Teorema 1 es verdadera, porque el conjunto de lenguajes en general es justamente una unión infinita de conjuntos del tipo , donde es un conjunto infinito contable.

Teorema 2: Los lenguajes son conjuntos contables

Se sabe que un lenguaje en un alfabeto es un subconjunto de y como ya se hizo mención, es infinito incontable, por ende, es como mucho un conjunto infinito incontable (del mismo tamaño que ), la prueba ha culminado.

Teorema 3: El conjunto de lenguajes formales es contable

Como sabemos un lenguaje formal puede ser generado por una gramática formal (o de estructura de frase), lo cual implica que todo lenguaje formal puede ser aceptado por una MT, lo que a su vez implica que se puede definir una biyección entre el conjunto de lenguajes formales y el conjunto de las MT´s (debido a la propiedad transitiva de la relación "existe biyección entre y "). Para demostrar el teorema se utilizará el concepto de codificación de MT´s que se introduce en el estudio de las MT´s universales, generalmente se codifica una MT con una función que tiene precisamente como dominio al conjunto de las MT´s (lo llamaremos ) y como codominio , esa función puede ser una biyección si el codominio pasa a ser Y (un subconjunto de ) y como es contable, ese subconjunto también será contable y como existe dicha biyección (entre e ), la aserción ha sido demostrada, prueba concluida.

Véase también

Enlace externo