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, , 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 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 .
- 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 entradas para las cuales una máquina de Turing concreta se detiene.
- 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:
- Cadenas producidas por una gramática formal (véase Jerarquía de Chomsky).
- Cadenas producidas por una expresión regular.
- Cadenas aceptadas por un autómata, tal como una máquina de Turing.
[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 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.
[editar] Véase también
[editar] Enlace externo
- Lenguajes formales en itesm.mx.