SEP                                DGIT                    SEIT

 

     INSTITUTO  TECNOLÓGICO  DE  MINATITLAN

 

 

Operaciones de conjuntos de ∑*

 

Las cadenas de símbolos juegan un papel importante en las ciencias computacionales. Programas computacionales, documentos escritos en texto, fórmulas matemáticas y teoremas en un sistema formal son objetos que representamos convencionalmente como secuencias finitas de símbolos. Así, para poder escribir programas que manipulen otros programas, programas editores de texto, programas para manipular fórmulas algebraicas o programas que prueben teoremas debemos de tener las herramientas necesarias para la manipulación de cadenas individuales y conjuntos de cadenas.

El símbolo ĺ denotará un alfabeto finito y ĺ* será el conjunto de todas las cadenas de longitud finita formados por los símbolos provenientes de ĺ. La principal operación sobre los elementos de ĺ* es la concatenación.

Sea ĺ un alfabeto y x  y y elementos de ĺ*. Si x =a1 a2… am y y = b1 b2... bn donde ai, bj Î ĺ y m, n Î N entonces la concatenación de x con y, denotada x·y, o simplemente xy, es la cadena xy = a1 a2… am b1 b2... bn. Si x =L, entonces xy = y para toda x; similarmente si y = L, entonces xy= x

Lo siguiente es una notación conveniente para representar la concatenación de una cadena con sí misma n veces. Esta definición inductiva es basada en la definición de N y además no requiere cláusula extrema.

Sea x un elemento de ĺ*. Para cada n Î N, la cadena xn es definido como sigue:

1.  x0 = L

2.  xn+1 = x0· x

Como por ejemplo, si ĺ = {a, b} y x = ab, entonces x0 = L, x1 = ab, x2 = abab, x3 = ababab.

Con frecuencia trataremos colecciones de cadenas en vez de cadenas individuales. Por ejemplo, en una especificación de lenguaje de programación, deberemos de caracterizar conjuntos enteros de programas los cuales pueden ser escritos en el lenguaje. Dada la importancia de estos elementos, una considerable estructura de terminologías y notaciones han sido desarrolladas para concordar con esto.

Sea ĺ un alfabeto finito. Un lenguaje sobre ĺ es un subconjunto de ĺ*. Por ejemplo, el conjunto {a, ab, abb} es un lenguaje sobre ĺ = {a, b}.

Desde que cada lenguaje es un conjunto la colección usual de operaciones de conjuntos vistas en este documento pueden ser aplicadas a los lenguajes. De cualquier modo, dado que son colecciones de cadena, hay otras operaciones de lenguaje importantes que pueden ser definidas también, muchas de las cuales son basadas en las operaciones de concatenación. Estas operaciones son importantes en una variedad de áreas de aplicación así como también para el estudio de modelos de computación.

Sea  A y  B lenguajes sobre ĺ. El  conjunto producto de A con B, denotado como A · B, o simplemente  AB, es el lenguaje AB = { xy 1 x Î A Ů y Π B }.

El lenguaje AB consiste en todas las cadenas formadas por la concatenación de un elemento de A con un elemento de B. Se debe hacer notar que en general AB ą BA ya que la operación de producto de conjunto no es conmutativa.

Sea A, B, C y D lenguajes arbitrarios sobre ĺ, de lo cual se obtienen las siguientes relaciones:

a)  AĆ = ĆA = Ć

b)  A{ L } = { L } A = A

c)  ( AB) C = A( BC )

d)  Si A Ě B y C Ě D, entonces AC Ě BD

e)  A(B Č C) = AB Č AC

f)  ( B Č C ) A = BA Č CA

g)  A ( B Ç C) Ě AB  AC

h)  ( B Ç C) A Ě BA Ç CA

Sea A un lenguaje sobre ĺ. El lenguaje An es definido inductivamente como sigue:

A0 = { L }

An+1 = An · A

El lenguaje An es un conjunto de productos de A con si mismo n veces. Además si zÎ An con n ł 1, entonces z = w1w2... wn, donde wi Î A para cada i desde 1 hasta n.

    

     

Hosted by www.Geocities.ws

1