Concatenación de lenguajes regulares
Tomemos dos lenguajes regulares L1, L2. Demostraremos que su concatenación L = L1 ∘ L2 es también un lenguaje regular.
Qué es la concatenación
Al concatenar las dos palabras «010» y «1111» se obtiene la palabra «0101111». La concatenación de lenguajes produce así un nuevo lenguaje, que construimos concatenando cada palabra de un lenguaje con cada palabra del otro. La concatenación de dos palabras y de dos lenguajes la representaremos con un círculo: ∘. Entonces podemos definir la concatenación de los lenguajes L1 y L2 así:
Idea de la demostración
Tenemos dos lenguajes regulares L1, L2 y dos autómatas que aceptan estos lenguajes:
Construiremos un autómata no determinista A = ⟨Q, Σ, δ, q, F⟩ que «contenga en su interior» los dos autómatas A1 y A2. La idea básica es que empezamos a aceptar la palabra con el autómata A1 y, cuando el autómata A1 llega a un estado final, intentamos aceptar el resto de la palabra con el autómata A2. Si este autómata también acepta esa parte de la palabra, el autómata A acepta la palabra.
Ejemplo
Tomemos este autómata A1, que acepta las palabras no vacías formadas solo por ceros y las palabras formadas por un uno seguido únicamente de ceros (1, 10, 100, …):
y tomemos además este autómata A2, que acepta las palabras que terminan en 01:
Unimos los autómatas así: desde todos los estados finales del autómata A1 añadimos transiciones ε hacia el estado inicial del autómata A2 y después convertimos los estados finales de A1 en estados ordinarios. El estado inicial del nuevo autómata completo será el estado inicial del autómata A1:
¿Cómo funcionará el autómata? Empezamos simulando el funcionamiento del autómata A1. Si pasamos a un antiguo estado final, q1 o q2, sabemos que el autómata A1 acepta una parte de la palabra. Para que la palabra completa pertenezca al lenguaje L1 ∘ L2, el segundo autómata A2 tiene que aceptar todavía el resto de la palabra; por eso de todos los antiguos estados finales salen transiciones ε hacia el estado inicial original del autómata A2.
Tomemos como ejemplo la palabra 0001. Pertenece a la concatenación de ambos lenguajes, porque la palabra puede obtenerse concatenando las palabras 00 ∘ 01. Pero también puede obtenerse concatenando las palabras 0 ∘ 001. En nuestro autómata podemos simular ambas formas. El autómata puede seguir este camino:
Con este camino el autómata «aceptaría» primero la parte 00 de la palabra y después la parte 01. O puede seguir este otro camino:
y el autómata «aceptaría» así primero la parte 0 de la palabra y luego la parte 001. En ambos casos llegamos, naturalmente, al estado final p2.
Procedimiento formal
Una vez más: tenemos dos lenguajes regulares L1, L2 y dos autómatas que aceptan estos lenguajes:
Construimos un autómata no determinista A = ⟨Q, Σ, δ, q, F⟩ que cumple:
- Q = Q1 ∪ Q2 (suponemos además que Q1 ∩ Q2 = ∅)
- Σ= Σ1 ∪ Σ2
- q = q0
- F = F2
La función de transición δ la construimos por casos:
Fuentes
Capítulos: Propiedades de cierre de los lenguajes regulares, Unión de lenguajes regulares, Intersección de lenguajes regulares, Diferencia de lenguajes regulares, Complemento de un lenguaje regular, Concatenación de lenguajes regulares, Clausura de un lenguaje regular