Está en la página 1de 5

Lenguajes y Cadenas

-- Introducción --

El lenguaje usado y comprendido por las personas para comunicarse, se compone de un


conjunto de palabras y métodos para combinarlas, se conoce como lenguaje natural. Por otra
parte, los lenguajes que se utilizan para comunicarse con los computadores se conocen
como lenguajes formales los cuales pueden a su vez ser usados para modelar lenguajes
naturales.

En ciencias de la computación, los lenguajes formales se consideran como conjuntos de


cadenas de símbolos de un alfabeto fijo, además de las reglas o gramática usadas para
obtenerlas. Es de observar, que esta definición no atribuye significado alguno a las cadenas
de símbolos de un lenguaje, por lo cual una semántica formal no es condición necesaria para
definir un lenguaje formal, siendo esta una diferencia importante con los lenguajes naturales.

Índice

1 Alfabeto
2 Cadena
3 Operaciones sobre lenguajes
3.1 Unión
3.2 Concatenación
3.3 Cerradura de Kleene
3.4 Cerradura positiva
4 Bibliografía

Alfabeto

Se define un alfabeto ∑ : alfabeto de símbolos como un conjunto finito no vacío de elementos


o símbolos. Luego, dado que los alfabetos son conjuntos, estos se pueden unir
arbitrariamente dando como resultado a su vez conjuntos no vacíos y finitos. Como ejemplos
de alfabetos tenemos:
Ejemplo 1: ∑ = { 0,1,2,3,4,5,6,7,8,9 }

Ejemplo 2: ∑ = { 0, 1 }

Ejemplo 3: ∑ = { 0,1,2,3,4,5,6,7 }

Ejemplo 4: ∑ = { 0,1,2,3,4,5,6,7,8,9, a, …, z, A, B, C, D, E, F, _ }

Ejemplo 5: ∑ = { a,...,z,A,..,Z,0,...,9,_,@,.}5:

Cadena

Por su parte, definimos formalmente una cadena como una secuencia ordenada de símbolos
sobre un alfabeto, es decir, que toma la secuencia de los elementos que la componen de este
conjunto. Es útil considerar las siguientes características de las cadenas o palabras de un
lenguaje:

 Orden lexicográfico, que consiste en el orden de los símbolos dentro de una cadena Es
de anotar, que cualquier palabra que contenga símbolos de un alfabeto definido es una
cadena válida, sin importar si esta tiene o no significado.

 La existencia de la cadena vacía, denotada por Є como aquella cadena que presenta
cero apariciones de símbolos de un alfabeto y que tiene el mismo significado del 1 en un
sistema numérico en relación a su utilidad como módulo de la operación de producto.

 La longitud de cadena, que corresponde al número de caracteres que la conforman.

 Subcadenas dentro de cadenas.

R
 La inversa de una cadena x que se denota como x , Por ejemplo, si la cadena x = s1, s2,
,,,, sn entonces xR = sn, ..., s2,s1. Se observa en Palíndromos.

 La operación de concatenación de cadenas. Por ejemplo, si tenemos una cadena x de


longitud m y una cadena z de longitud n, la concatenación de x y z denotada por xz es la
cadena obtenida por la adición de z al final de x, en la forma xb … xmzb … zm. De la
misma forma, cuando una cadena se concatena consigo misma varias veces se usa la
notación de potencia xn que significa xx… x n veces.
 Pertenencia a la cerradura de Kleene de un lenguaje, denotada por ∑* y que consiste en
el conjunto de todas las posibles cadenas del lenguaje sobre el alfabeto dado incluyendo
la cadena vacía.

Como ejemplos de cadenas definidas sobre los alfabetos definidos anteriormente tenemos:

Ejemplo 6: 0000132993, 231455

Ejemplo 7: 0, 1, 00, 01, 10, 11, 001010101

Ejemplo 8: 0,1635, 232443, 34567

Ejemplo 9: 0,1635, 232443, 34567, 1610C35F, F0232443, 31C4567

Ejemplo 10: jcsierragon@gmail.com, jsierrag2@ucentral.edu.co

Operaciones sobre Lenguajes

Como ya se anotó, un lenguaje es un conjunto de cadenas de caracteres. Es importante


considerar que hay varias operaciones que se pueden aplicar a los lenguajes, derivadas de
las operaciones sobre conjuntos. a continuación se definen operaciones sobre lenguajes.

Unión. Se define la unión de los lenguajes L y M como L U M = { x / x Є L v x Є M }

Ejemplo 11. Sean los lenguajes unitarios L = {a} y M = {b}


Luego, L U M = {a} U {b} = {a, b}

Ejemplo 12. Sean los lenguajes L = {a, b, c} y M = {d, e}


Luego, L U M = {a, b, c} U {d, e} = {a, b, c, d, e}

Ejemplo 13. Sean los lenguajes L= { "rojo", "verde", "azul" } y M = {"casa", "carro"}
Luego, L U M = { "rojo", "verde", "azul", "casa", "carro"}

Concatenación. Se define la concatenación de los lenguajes L y M como


LM = { xy / x Є L ʌ y Є M }
Ejemplo 14. Sean los lenguajes unitarios L={a} y M={b}
Luego, LM = {a} {b} = {ab}

Ejemplo 15. Sean los lenguajes L= {a, b, c} y M = {d, e}


Luego, LM = {a, b, c} {d, e} = {ad, ae, bd, be, cd, ce}

Ejemplo 16. Sean los lenguajes L= {"mi"} y M = {"_casa" }


Luego, LM = {"mi" } {"_casa" } = {"mi_casa" }

Cerradura (de Kleene). Se define la cerradura de Kleene de L como L* = U∞i=0 Li . Como se


puede observar esta operación viene a ser la unión de todas las potencias del lenguaje L. De
la misma forma, podemos considerar que cada potencia del lenguaje L, es una operación de
concatenación las veces que indica el índice de cada potencia.

Ejemplo 17. Sea el lenguaje L = {a}


Luego, L* = {a}* = U∞i=0 ai = {a}0 U {a}1 U {a}2 U {a}3 U …
= {a}0 U {a} U {a}{a} U {a}{a}{a} U …
= {Є} U {a} U {aa} U {aaa} U … U
= {Є, a, aa, aaa, …}
Nota. { } ≠ {Є}

Cerradura positiva. Se define la cerradura positiva de L como L+ = U∞i=1 Li

Ejemplo 18. Sea el lenguaje L = {a}


Luego, L = {a}+ = U∞i=1 ai = a1 U a2 U a3 U a4 U …
+

= a1 U aa U aaa U aaaa U … U
= {a} U {aa} U {aaa} U {aaaa} U … U
= { a, aa, aaa, aaaa,…}

Es de anotar que las operaciones de unión y concatenación son binarias, y que las
operaciones de cerradura son unarias.
Bibliografía

[1] Aho, a. V., Sethi, R., & Ullman, J. D. (2008). Compiladores: principios, técnicas y
herramientas. Pearson Educación.

[2] De Castro R. (2004). Teoría de la computación, Lenguajes, autómatas, gramáticas.


Universidad Nacional de Colombia.

----------------- Fin de documento

También podría gustarte