Lenguajes y Autómatas 1 - Apuntes Unidad 02

13
Lenguajes y Autómatas 1 SCD-1015 Mtro. Christian Mirsha Velasco Castilla 24 Unidad 2. Expresiones Regulares. Lenguajes 1 Regulares. Continuando con la Jerarquía de Chomsky vista en la figura 3, los Lenguajes Regulares son interesantes desde el punto de vista práctico porque pueden ser usados para especificar la construcción de Compiladores e Intérpretes, especialmente el componente denominado Analizador Léxico (ver figura 9) programas que analizan un texto y extraen los lexemas (o unidades léxicas) que hay en el mismo. Los lenguajes regulares se llaman así porque sus cadenas de texto que las integran contienen “regularidades” o repeticiones de ciertos componentes, por ejemplo, el lenguaje L siguiente: L = {ab, abab, ababab, abababab,…} En este ejemplo se aprecia que las palabras de L son simplemente repeticiones de “ab” cualquier número de veces. Aquí la “regularidad” consiste en que las palabras contienen “ab” algún número de veces. Otro ejemplo sería el lenguaje M siguiente: M = {abccc, abab, abccc, ababc,…} La regularidad en el lenguaje M consiste en que sus palabras comienzan con repeticiones de “ab” seguidas o no de repeticiones de “c”. Similarmente es posible definir muchos otros lenguajes basados en la idea de repetir esquemas simples. Esta es la idea básica en la formación de lenguajes regulares. Adicionalmente a las repeticiones de esquemas simples, también se consideran que los lenguajes finitos son regulares. Por ejemplo, el lenguaje N = {anita, lava, la, tina} es regular. Finalmente, al combinar lenguajes regulares (uniéndolos o concatenándolos), también se obtiene otro lenguaje regular. Por ejemplo, el lenguaje O = {a, b, c} uniéndolo con el lenguaje P = {x, y, z} hace que se forme un nuevo conjunto ; concatenándolos forman un nuevo conjunto . Definición formal de un lenguaje regular. Un lenguaje L es regular si y sólo si se cumple al menos una de las condiciones siguientes: L es finito. L es la unión o la concatenación de otros lenguajes regulares R 1 y R 2 , o L = R 1 R 2 respectivamente. 1 Vea la sección 1.3. Lenguajes.

description

Apuntes de la Unidad 02 de la asignatura Lenguajes y Autómatas 1 impartido en el Instituto Tecnológico de Tuxtla Gutiérrez, Chiapas. México.

Transcript of Lenguajes y Autómatas 1 - Apuntes Unidad 02

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 24

    Unidad 2. Expresiones Regulares.

    Lenguajes1 Regulares.

    Continuando con la Jerarqua de Chomsky vista en la figura 3, los Lenguajes Regulares son

    interesantes desde el punto de vista prctico porque pueden ser usados para especificar la

    construccin de Compiladores e Intrpretes, especialmente el componente denominado

    Analizador Lxico (ver figura 9) programas que analizan un texto y extraen los lexemas (o

    unidades lxicas) que hay en el mismo.

    Los lenguajes regulares se llaman as porque sus cadenas de texto que las integran contienen

    regularidades o repeticiones de ciertos componentes, por ejemplo, el lenguaje L siguiente:

    L = {ab, abab, ababab, abababab,}

    En este ejemplo se aprecia que las palabras de L son simplemente repeticiones de ab cualquier

    nmero de veces. Aqu la regularidad consiste en que las palabras contienen ab algn nmero

    de veces. Otro ejemplo sera el lenguaje M siguiente:

    M = {abccc, abab, abccc, ababc,}

    La regularidad en el lenguaje M consiste en que sus palabras comienzan con repeticiones de ab

    seguidas o no de repeticiones de c. Similarmente es posible definir muchos otros lenguajes

    basados en la idea de repetir esquemas simples. Esta es la idea bsica en la formacin de

    lenguajes regulares.

    Adicionalmente a las repeticiones de esquemas simples, tambin se consideran que los lenguajes

    finitos son regulares. Por ejemplo, el lenguaje N = {anita, lava, la, tina} es regular.

    Finalmente, al combinar lenguajes regulares (unindolos o concatenndolos), tambin se obtiene

    otro lenguaje regular. Por ejemplo, el lenguaje O = {a, b, c} unindolo con el lenguaje P = {x, y, z}

    hace que se forme un nuevo conjunto ; concatenndolos forman un nuevo

    conjunto .

    Definicin formal de un lenguaje regular.

    Un lenguaje L es regular si y slo si se cumple al menos una de las condiciones siguientes:

    L es finito.

    L es la unin o la concatenacin de otros lenguajes regulares R1 y R2, o L =

    R1R2 respectivamente.

    1 Vea la seccin 1.3. Lenguajes.

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 25

    L es la Cerradura de Kleene2 de algn lenguaje regular, L = R*.

    Esta definicin permite construir expresiones regulares en la notacin de conjuntos que

    representan a los lenguajes regulares. Tambin esta definicin permite conocer las operaciones

    fundamentales a las que se hace referencia en la seccin 2.2 del presente documento.

    2.1 Definicin formal de una expresin regular.

    Las expresiones regulares denotan lenguajes. Las expresiones regulares sirven para describir

    lenguajes regulares, es decir, son un metalenguaje3 y la notacin de conjuntos es la herramienta

    para hacerlo.

    Las expresiones regulares para la construccin de compiladores e intrpretes proveen una manera

    muy flexible de buscar o reconocer cadenas de texto. Numerosos editores de texto y otras

    utilidades dentro de ellas utilizan las expresiones regulares para buscar y reemplazar patrones en

    un texto.

    Qu es un Patrn? Un patrn es un tipo de sucesos recurrentes, es decir, que tienen el mismo

    comportamiento un nmero casi ilimitado de veces. Por ejemplo, los patrones de comportamiento

    de las personas para cuando se levantan luego de dormir primero se asean, desayunan, van al

    trabajo, comen, siguen trabajando, salen de trabajar, van a casa, se asean, cenan y a dormir. Esta

    son una serie de actividades que se realizan de manera cotidiana. Son elementos que se repiten de

    manera predecible. Puede ser una plantilla de documentos, una plantilla de corte y confeccin que

    se utilizan para generar objetos o partes de ellos. Los patrones ms bsicos se basan en

    repeticiones y periodicidad. Una expresin regular define un patrn; una palabra o cadena de

    texto pertenece a un lenguaje definido por esa expresin regular si y solo si se sigue el patrn.

    Una expresin regular que represente un lenguaje debe cumplir dos condiciones:

    1. Correcta. Todas las palabras representadas por la expresin regular deben ser parte del

    lenguaje.

    2. Completa. Toda palabra del lenguaje debe ser representada por la expresin regular.

    Para definir expresiones regulares se requiere del conocimiento de ciertas operaciones que

    afectan a los conjuntos que representan a los lenguajes. Vea la seccin 2.2.

    Las expresiones regulares son simplemente frmulas cuyo propsito es representar cada una de

    ellas a un conjunto de cadenas de caracteres que se forman con respecto al lenguaje y alfabeto en

    que se basan.

    2 Vea la seccin 1.3. Lenguajes.

    3 Un lenguaje para hablar acerca de otro lenguaje. El lenguaje que se describe es llamado el lenguaje objeto

    y el metalenguaje puede ser el mismo lenguaje objeto. Por ejemplo, se utilizan los elementos del espaol para describir al espaol mismo.

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 26

    La expresin regular ms bsica est sealada por el smbolo representa al conjunto

    vaco .

    Para comprender intuitivamente la manera en que las expresiones regulares representan

    lenguajes, considere el proceso de verificar si una palabra dada pertenece o no al lenguaje en

    cuestin. Se usar la palabra empata como una manera simple de indicar este escenario.

    La palabra vaca empata con la expresin regular .

    La palabra vaca no debe confundirse con un lenguaje vaco ya que el nmero de

    elementos o cardinalidad de estos dos elementos es diferente. Para el primero, la cardinalidad es

    uno, mientras que para el segundo es cero.

    Una palabra de una letra como {a} empata con una expresin regular consistente en la

    misma letra, en este caso a.

    Luego, una palabra = , esto es, que se encuentra formada por los caracteres que

    representan tanto como empatan con la expresin

    Cuando la expresin regular es de la forma , puede empatar con una palabra

    cuando sta empata con algn elemento dentro del conjunto resultado de la unin entre

    ambos conjuntos, la expresin + denota tal cuestin.

    Una palabra empata con una expresin P* cuando tal puede ser dividida en segmentos

    = 12n de manera tal que cada una de tales partes empata con el objeto de estudio

    en cuestin.

    Por lo tanto, se generan los siguientes teoremas:

    1. (el conjunto vaco)

    2. = {} (la palabra vaca)

    3.

    4.

    5.

    6.

    Para calcular el significado de una expresin regular, se aplica en ella las funciones anteriores y

    eliminando parntesis para darle ms legibilidad al programa.

    Ejemplo. Para obtener el significado de una expresin, se aplica siempre la funcin J. La expresin:

    .

    , es una parte de esta expresin.

    , es una parte de esta expresin.

    = , usando la ecuacin 4.

    , usando la ecuacin 3 y 6.

    , usando la ecuacin 5.

    , usando la ecuacin 3 y simplificando.

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 27

    Por lo tanto, ste es el lenguaje que permite que las palabras sobre {a, b} que terminan en a.

    Con el objeto de hacer la notacin menos pesada puede simplificar las expresiones regulares

    siguiendo estos lineamientos:

    Omita las comillas dobles que denotan los conjuntos regulares.

    Elimine las llaves y convierta a parntesis.

    Elimine los parntesis innecesarios. Se supone que la precedencia de operadores en el

    orden establecido en la seccin 2.2 es vlido.

    Eventualmente elimine el operador de concatenacin suponiendo que ste se encuentra

    explcito entre dos subexpresiones continuas.

    2.2 Operaciones.

    Para comprender la notacin de las expresiones regulares, es necesario que repase las tres

    operaciones sobre lenguajes que representan a los operadores de las expresiones regulares. Las

    operaciones bsicas que pueden hacerse sobre los lenguajes son:

    La UNIN de dos conjuntos regulares L y M se designa como que muestra al

    conjunto resultante de la unin de todas las cadenas de texto del conjunto regular L con

    todas las cadenas de texto del conjunto regular M. Para las expresiones regulares

    ALTERNATIVA es el nombre utilizado para esta operacin.

    Ejemplo: Si el conjunto regular L = {001, 10, 111} y el conjunto regular M = {, 001}, entonces la

    UNIN entre estos forman a un nuevo conjunto regular = {, 001, 10, 111}. Su segundo

    modo de funcionamiento es que si y son expresiones regulares, | es una expresin regular

    de manera tal que | = , es decir, puede aparecer como resultado o indistintamente.

    De ah lo de ALTERNATIVA.

    La CONCATENACIN de dos conjuntos regulares L y M es el conjunto de cadenas de texto

    que pueden formarse tomando cualquier cadena de L y concatenndola con cualquier

    cadena de M resultando en una cadena de L seguida inmediatamente de una cadena de M

    como si fuesen una sola. Para designar esta operacin el smbolo () es utilizando para

    representar esta operacin. Sin embargo, en las expresiones regulares, el smbolo no se

    utiliza. Si y son expresiones regulares entonces es una expresin regular

    concatenada.

    Ejemplo: Si el conjunto regular L = {001, 10, 111} y M = {, 001}, entonces la CONCATENACIN

    entre estos conjuntos forman uno nuevo L M = {001, 10, 111, 001001, 10001, 111001}. El

    smbolo significa vaco por lo que cualquier elemento concatenado con l da como resultado el

    mismo elemento. Vea la tabla 1.

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 28

    Tabla 1. Concatenacin de conjuntos y sus elementos.

    Elemento de L Elemento de M Elemento resultante de L M

    001 001

    10 10

    111 111

    001 001 001001

    10 001 10001

    111 001 111001

    La CLAUSURA o CERRADURA DE KLEENE de un conjunto regular N se designa mediante N*

    y representa el total de cadenas de texto que se pueden formar tomando cualquier

    nmero de cadenas de N, posiblemente con repeticiones (es decir, la misma cadena se

    puede seleccionar ms de una vez) y concatenando todas ellas. Por ejemplo, si N = {0, 1},

    entonces N* es igual a todas las cadenas de 0 y 1 repitindose de manera infinita, es decir,

    N* = {, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111,} De igual manera, si O

    = {a, bc} entonces O* = {, a, bc, abc, aabcbc, aaabcbcbcbc, aaaabcbcbcbcbcbc,} Observe

    una particularidad, dentro de los elementos de O existe una palabra denominada bc.

    Para formar la cerradura se utiliza bc como un elemento indivisible, es decir, b y c no

    son elementos independientes, son uno slo. De manera tal que si se utilizan deben serlo

    de manera conjunta. Concatenar a y bc cinco veces cada uno da como resultado:

    aaaaabcbcbcbcbc bcbcbcbcbcaaaaa abcabcabcabcabc bcabcabcabcabca.

    Observe que adems de las cadenas de texto formadas, tambin se agrega a la palabra

    vaca como parte del conjunto.

    Existe un caso muy particular que realmente no es una operacin sino una derivacin de la

    Cerradura de Kleene. Se le denomina POTENCIA. La potencia de un conjunto regular consiste en la

    concatenacin de los elementos del conjunto consigo mismos i veces}. Observe que si L0 dado L =

    {0, 1}, el resultado de esta accin es una cadena vaca . Si L1 el resultado es {0, 1}. Si L2 el

    resultado es {00, 01, 10, 11}, si L3 el resultado es {000, 001, 010, 011, 100, 101, 110, 111}. En

    ocasiones se requiere excluir la cadena vaca del conjunto de cadenas de texto resultante. El

    conjunto de cadenas no vacas de un conjunto regular L se denota como L+ o CIERRE POSITIVO.

    Las expresiones regulares sirven para abreviar la descripcin completa de los conjuntos regulares:

    El conjunto regular {} es representado simplemente por , es decir, denota al lenguaje

    de la cadena .

    Las operaciones que se ejecutan sobre los conjuntos regulares: Unin, Concatenacin y

    Cerradura de Kleene tambin se aplican sobre las expresiones regulares con los

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 29

    operadores + (en otros estudios se utiliza el smbolo |), yuxtaposicin4 (representado con

    el smbolo o no) as como *, respectivamente.

    Por ejemplo, la siguiente relacin muestra los equivalentes que existen entre los conjuntos

    regulares que definen lenguajes y sus expresiones regulares que las norman. Vea la tabla 2.

    Tabla 2. Equivalencias entre las operaciones sobre conjuntos y expresiones regulares.

    Conjunto regular original Expresin regular equivalente

    {}

    {0} 0

    {01} = {0}{1} 001

    {0, 1} = 0 + 1 0|1

    {1, 2}{001} = (1 + 2)001 (1|2)001

    {110}* {0, 1} (110)*(0 + 1) (110)*(0|1)

    {10, 111, 111010}* =

    (10 + 111 + 111010)* (10|111|111010)*

    En la construccin de expresiones regulares se permite el uso de parntesis para indicar la

    precedencia de operadores, pero cuando no se utilizan hay que tener en cuenta el orden de

    precedencia de los operadores. Sin embargo, en ocasiones las expresiones regulares a menudo

    contienen pares innecesarios de parntesis. Tal vez sea necesario eliminar ciertos pares de

    parntesis, si se adoptan las siguientes convenciones:

    El operador unario * tiene la precedencia ms alta y es asociativo a la izquierda, ya sea

    cerradura completa como nicamente positiva.

    La concatenacin tiene la segunda precedencia ms alta y es asociativa a la izquierda.

    Por ltimo, se aplican todos los operadores de unin + (alternativa con el smbolo barra

    vertical |). Tiene la precedencia ms baja y es asociativo a la izquierda. Su significado es O,

    por ejemplo: a|b permite seleccionar entre la letra a o la letra b.

    2.2.1 Ejemplos de alfabetos, lenguajes y expresiones regulares.

    Ejemplo: Encontrar una expresin regular para el lenguaje en {a, b}* en el que inmediatamente

    antes de toda b aparezca una a.

    Solucin: Si construimos cadenas de texto en donde antes de toda b aparezca una a entonces

    las siguientes cadenas son vlidas:

    4 Yuxtaposicin proviene de la palabra en latn iuxta que significa junto a. No utiliza ningn operador

    visible. Si el elemento HO se yuxtapone con LA se forma el elemento HOLA.

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 30

    abababab.

    ababab.

    abab.

    a.

    ab.

    aab.

    aabaab.

    aaab.

    aaabaaab.

    aaaab.

    aaaabaaaab.

    abaabaaabaaaababaabaaabaaaab.

    Como puede observar, la letra a puede repetirse muchas veces pero b slo aparece una sola

    vez despus de aparecer una letra a. Esto quiere decir que la palabra bb para este lenguaje no

    es posible construirla. La regla indica que nicamente b aparece luego de una a.

    La expresin regular entonces queda como (a + ab)*, que indica que a puede aparecer muchas

    veces (el asterisco permite ello) que pueda aparecer ab muchas veces que la combinacin

    entre muchas a y muchos ab pueda surgir. Estas alternativas son sealadas por el smbolo +.

    Una solucin aceptable de las expresiones regulares debe de tener dos caractersticas:

    Correcta. Las palabras que represente la expresin regular propuesta deben satisfacer la

    descripcin del problema (por ejemplo, una solucin a*(a + b)* no es adecuada porque

    representa algunas palabras, como abb, que no satisfacen la condicin de que toda b

    est inmediatamente precedida por una a.

    Completa. La expresin regular propuesta debe representar a todas las palabras que

    satisfagan a una condicin. As para el problema del ejemplo, la solucin (ab)* no es

    adecuada porque hay palabras tales como aab pertenecientes al lenguaje, que no son

    representadas por dicha expresin regular.

    Ejemplo: Obtener una expresin regular que represente al lenguaje en {a, b, c} en el que las

    palabras contienen exactamente una vez dos b contiguas. Por ejemplo, las palabras aabb y

    babb pertenecen a este lenguaje, pero no aaba, abbba ni bbabb.

    Solucin: Para resolver este problema se expresa primero la estructura de la expresin regular de

    la manera siguiente:

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 31

    Se puede ver que aparecen de entrada las dos b contiguas solicitadas por el ejercicio. Ahora, el

    subproblema es determinar que expresiones regulares les competen a los contextos sealados.

    El lenguaje del contexto 1 comprende a las palabras que no contienen bb y adems no terminan

    en b. Si eso pasa, entonces quedaran bbb lo cual ya no cumple el objetivo del problema. Esto

    es equivalente a decir que toda b est seguida de una a o de una c. La expresin regular del

    contexto 1 puede ser entonces:

    Los detalles se representan por los puntos suspensivos. Lo que falta por considerar es que puede

    haber cualquier cantidad de a o c en el contexto 1, por lo que dicho contexto queda as:

    Similarmente se pueden obtener la expresin para contexto 2, que unindola con la anterior da la

    solucin del problema:

    Un importante elemento de metodologa consiste en transformar los enunciados de lenguajes de

    manera que sean ms fcilmente representables por una expresin regular. En particular, los

    enunciados negativos del tipo las palabras que no contengan bb son un poco complejas en su

    estructuracin, porque en las expresiones regulares no hay ningn operador para representar tal

    cuestin. En consecuencia, es necesario convertir un enunciado sobre lo que no se permite en otro

    enunciado sobre lo que s se permite. Por ejemplo, si en un lenguaje las palabras no deben

    contener la cadena bb, qu es lo que s pueden contener? Aqu se puede hacer un anlisis

    considerando que se puede tener una b sola, o tambin seguida de una a. Como hay dos

    casos, se puede pensar en utilizar el operador + para combinar esos casos y as en adelante.

    Ejemplo: Obtener una expresin regular que represente el lenguaje en {a, b} tal que si una palabra

    contiene la subcadena aa, entonces no debe tener bb.

    Solucin: Para iniciar esta solucin se establece la siguiente estructura:

    Para que las palabras no contengan aa, pueden contener cualquier secuencia con b, o bien

    secuencias en que toda a est separada de otra a por lo menos con una b. Como la cantidad

    de a es cualquiera, necesariamente se debe hacer intervenir a una Cerradura de Kleene. Esto

    dar la siguiente estructura:

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 32

    Una idea para precisar ms esta estructura sera pensar que antes y despus de la a debe haber

    una b, como en la expresin (b + bab)*. Aunque esta expresin regular es correcta, no es

    completa pues hay palabras como ab que no son representadas por ella. Entonces se puede

    analizar que despus de la a est la b que la separa de otras eventuales a definiendo as una

    nueva estructura:

    Ahora bien, si se analiza en qu puede aparecer al inicio y al final de una palabra, la subexpresin

    (b + ab)* por s misma ya es capaz de representar palabras que comiencen ya sea con a o con

    b por lo que se puede omitir el lado izquierdo, en cambio no es capaz de representar palabras

    terminadas con a como por ejemplo, la palabra ba. Hay que aadir esta posibilidad pero si se

    hace que el contexto derecho sea a se excluyen palabras tales como ab. Entonces, el contexto

    derecho puede ser a o b, que se resuelve con una expresin a + b, dando como resultado:

    Pero an esta expresin presenta un problema, que es el no poder representar a la palabra vaca.

    Esto puede resolverse de manera tal que si se observa que la expresin (b + ab)* ya representaba

    palabras que terminen en b entonces completar la solucin consiste en agregar una a o nada

    en absoluto, quedando la expresin regular como:

    Con esta expresin las siguientes cadenas son vlidas:

    b

    bbbbb

    ab

    ababababab

    bab

    bbbbbababababab

    ba

    bbbbba

    abababababa

    baba

    bbbbbabababababa

    a

    Para complementar la expresin regular y de manera similar, el contexto de no bb es formulado:

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 33

    Ejemplo: Sea el vocabulario {a, b} y su expresin regular aa*bb*, indique el lenguaje que denota y

    algunas cadenas de dicho lenguaje.

    Solucin: Algunas cadenas que pueden formarse son:

    ab

    aab

    abb

    aaaaaab

    abbbbbb

    Esto quiere decir que el lenguaje que describe es: cadenas que inician con una a y continan

    con varias o ninguna de ellas para terminar con una o varias b.

    Ejemplo: Sea el vocabulario {0, 1}, la expresin regular 1(01)* denota el conjunto de cadenas que

    empiezan por 1 y van o no seguidas de una o varias cadenas 01. Obtenga algunas cadenas.

    Solucin: Las cadenas que pueden producirse con esta expresin regular son:

    1

    101

    10101010101

    Ejemplo: Sea el vocabulario {0, 1}, la expresin regular (0 + 1)+ denota el conjunto de nmeros

    base 2. Genere algunas cadenas.

    Solucin: Las cadenas que pueden producirse con esta expresin regular son:

    0

    1

    01

    000111

    010101

    111000

    101010

    000000

    111111

    Ejemplo: Sea el vocabulario {0, 1, 2}, la expresin regular (0 + 1 + 2)+ denota el conjunto de

    nmeros base 3. Genere algunas cadenas.

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 34

    Solucin: Algunas de las cadenas que pueden producirse con esta expresin regular son:

    000

    001

    002

    010

    011

    012

    020

    021

    022

    100

    100

    101

    102

    110

    111

    112

    120

    121

    122

    Ejemplo: Se requiere una expresin regular para el conjunto de cadenas que constan de 0 y 1

    alternos.

    Solucin: Primero se desarrolla una expresin regular para el lenguaje formado por una sola

    cadena 01. Se puede luego emplear al operador asterisco para obtener una expresin para todas

    las cadenas 01010101.

    La regla bsica de las expresiones regulares dice que 0 y 1 son expresiones que representan

    los lenguajes {0} y {1}, respectivamente. Si se concatenan las dos expresiones, se obtiene una

    expresin regular para el lenguaje {01}, esta expresin es 01. Como regla general, se requiere

    una expresin regular para el lenguaje formado por una sola cadena , utilizando la misma

    cadena como una expresin regular.

    Ahora se obtienen todas las cadenas formadas por cero o ms ocurrencias de 01 utilizando la

    expresin regular (01)*, el asterisco afecta a ambos caracteres. Sin embargo, no es an el lenguaje

    buscado ya que slo incluye aquellas cadenas formadas por 0 y 1 alternos que comienzan por

    0 y terminan con 1. Tambin se necesita considerar la posibilidad de que exista un 1 al

    principio y un 0 al final de cada cadena. Un mtodo sera construir tres expresiones regulares

    que manejasen estas opciones. Es decir 0(10)* se puede emplear para las cadenas que comienzan

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 35

    y terminan con 0 y 1(01)* para las cadenas que comienzan y terminan con 1. La expresin

    regular completa es:

    Observe que se utiliza el operador + para obtener la unin de los cuatro lenguajes que

    proporcionan todas las cadenas con ceros y unos alternos. Una manera alterna de especificar tal

    expresin regular es:

    2.3 Aplicaciones con problemas reales.

    Las expresiones regulares son la base o la materia prima de los Autmatas5. Estas expresiones

    algebraicas proporcionan algo que los Autmatas no pueden ofrecer: una manera declarativa para

    expresar las cadenas de texto que se desean aceptar luego de ser procesadas. Las expresiones

    regulares sirven como lenguaje de entrada de muchos sistemas que manipulan cadenas de texto.

    Por ejemplo, el comando de bsqueda de informacin grep de UNIX o comandos equivalentes

    para localizar cadenas en los exploradores web o en los sistemas de formato de texto. Estos

    sistemas utilizan una notacin de tipo expresin regular para describir los patrones que el usuario

    desea localizar en los archivos.

    Generadores de analizadores lxicos. LEX o FLEX son programas de distribucin gratuita. Un

    analizador lxico es el componente de un compilador que divide el programa fuente en unidades

    lgicas o sintcticas formadas por uno o ms caracteres que tienen un significado. Entre las

    unidades lgicas o sintcticas se incluyen las palabras clave, identificadores, y signos matemticos,

    por ejemplo. Un generador de analizadores lxicos acepta descripciones de las formas de unidades

    lgicas, que son principalmente expresiones regulares.

    Un problema comn en la programacin de computadoras es el de tener la seguridad de que los

    datos de entrada de un programa son correctos. Por ejemplo, si se espera tener un entero sin

    signo como dato de entrada y el usuario confunde uno de los dgitos con un carcter no numrico,

    se puede dar todo tipo de datos impropios, desde una terminacin abnormal hasta el clculo de

    resultados incorrectos. La programacin cuidadosa pretende construir un programa a prueba de

    balas, incluyendo unas rutinas de entrada que analicen la informacin introducida por el usuario

    y, de alguna forma, prevenir que se aplique informacin incorrecta al programa.

    La Teora de la Gramtica y Lenguajes Formales son una herramienta matemtica que permite

    abordar con rigor el diseo de lenguajes de programacin. Gracias a ellos existen tales

    generadores de programas que normalmente la industria de Tecnologas de la Informacin utiliza

    para automatizar procesos. Es tal su utilidad que la Inteligencia Artificial la necesita para crear las 5 Consulte la unidad 3 del presente documento.

  • Lenguajes y Autmatas 1 SCD-1015

    Mtro. Christian Mirsha Velasco Castilla 36

    aplicaciones de Procesamiento de Lenguajes Naturales (comprensin, generacin y traduccin) as

    como el Reconocimiento del Habla. Junto con la Teora de Autmatas (sistemas que reciben

    informacin, la transforman y producen otra que se transmite al entorno) se tiene un amplio

    campo de aplicacin:

    Lgica de Circuitos Electrnicos Secuenciales.

    Teora de Control de Sistemas.

    Teora de la Comunicacin.

    Arquitectura de Computadoras.

    Redes Conmutadas y Codificadas.

    Reconocimiento de Patrones.

    Redes Neuronales.

    Reconocimiento y Procesado de Lenguajes de Programacin.

    Traduccin de Lenguajes.

    Teora de Lenguajes Formales.

    En esta asignatura, los Lenguajes y Autmatas son los elementos necesarios para la creacin de

    traductores, procesadores de texto, compiladores e intrpretes; herramientas necesarias para la

    formulacin de lenguajes de programacin.