Lenguaje formal

Recomendar esta página Ver en PDF Imprimir esta página
Wiki de astronomía.
Todo el poder de la Wikipedia y toda la esencia de la astronomía

Lenguaje formal

De Wikipedia, la enciclopedia libre

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 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.

Un posible alfabeto sería, digamos, { a, b},, y una cadena cualquiera sobre este alfabeto sería, por ejemplo, ababba,. 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 a , que b ,, por ejemplo.

La palabra vacía (esto es, la cadena de longitud cero) se permite en este tipo de lenguajes, notándose frecuentemente mediante epsilon ,, e, ó lambda ,. A diferencia de 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.

Tabla de contenidos

[editar] Ejemplos de lenguajes formales

  • El conjunto de todas las palabras sobre {a, b},.
  • El conjunto { a^n : n, 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.

[editar] Especificación de lenguajes formales

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

[editar] 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 W1W2Wn 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 v1w1v2w2vnwn; son palabras tales que la concatenación v1vn está en L1, y la concatenación w1wn 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.

[editar] Véase también

[editar] Enlace externo

Scroll to Top