Saltar al contenido

Necesita expresión regular para autómatas finitos: número par de 1 y número par de 0

Ya no necesitas investigar más en otros sitios ya que estás al sitio justo, contamos con la solución que buscas pero sin problemas.

Solución:

Cómo escribir expresiones regulares para un DFA usando el teorema de Arden

Permite en lugar de símbolos de lenguaje 0,1 nosotros tomamos Σ = a, b y lo que sigue es el nuevo DFA.

DFA

Observe que el estado de inicio es Q0

No has dado pero en mi respuesta el estado inicial es Q0, Donde el estado final también es Q0.

El idioma aceptado por DFA es un conjunto de todas las cadenas que constan de un símbolo a y b donde número de símbolo a y b son pares (incluyendo Λ).

Algunas cadenas de ejemplo son Λ, aa, bb, abba, babbab , no hay restricción de orden y patrón de apariencia del símbolo, solo ambos deben ser un número par de tiempo.
Nota: Λ está permitido porque numberOf (a) y numberOf (b) es cero que es par.

Como dije en mi respuesta con líneas: Cómo escribir una expresión regular para un DFA, cada estado almacena cierta información. A continuación, se muestra qué información se almacena en cada estado en el DFA anterior.

Q0: Número par de a e incluso un número de b

Q1: Número impar de a e incluso un número de b

Q2: Número impar de a y número impar de b

Q3: Número par de a y número impar de b

(Puede crear DFA para idiomas más interesantes cambiando el conjunto de estados finales)
Uno debería leer la respuesta alineada, porque mi enfoque de la multa de RE para DFA en ambas respuestas es diferente

¿Qué es una expresión regular?

El enfoque se explica a continuación utilizando el Teorema de Arden, aplicable en un diagrama de transición en el que hay un solo estado de inicio y no se define ningún movimiento nulo (nuestro DFA está en esta forma). La técnica se explica en un libro: Lenguajes formales y teoría de los autómatas.

Recuerde 4.2 TEOREMA DE ARDEN:

Dejar B y C son dos expresiones regulares sobre Σ. Si C no contiene Λ, entonces para la ecuación A = B + AC tiene una solución única (una y solo una) A = BC *.

[Solution]:

Paso 1: Escriba la ecuación inicial, una ecuación correspondiente a cada estado en DFA. Esta ecuación significa cómo se puede alcanzar un estado en un solo paso

Entonces, de acuerdo con nuestro DFA, las siguientes 4 ecuaciones son posibles:

  1. Q0 = Λ + Q1a + Q3B
  2. Q1 = Q0a + Q2B
  3. Q2 = Q1b + Q3a
  4. Q3 = Q0b + Q2a

En la ecuación (1) extra Λ es porque Q0 es el estado inicial, se puede alcanzar sin ninguna entrada (un punto de inicio). Porque Q0 también es solo un estado final, una cadena que consta de a, b es aceptable si termina en Q0. Valor de Q0 nos dará la expresión regular requerida por lo que nuestro objetivo es simplemente la ecuación- (1) en términos de a, b.

Paso 2: Simplifique la ecuación usando poniendo el valor de los estados de otras ecuaciones y usando la ecuación de simplificación de Arden.

Primero tomemos la ecuación- (4) y reemplacemos el valor de Q2 de la ecuación- (3).

Q3 = Q0b + Q2a
Q3 = Q0b + (Q1b + Q3a) un
Q3 = Q0b + Q1ba + Q3Automóvil club británico

La última ecuación se puede ver en forma de la ecuación de Arden A = B + AC. Donde A es Q3, B = Q0b + Q1ba y C = aa. Entonces, de acuerdo con la termia de Arden, la ecuación Q3 = Q0b + Q1ba + Q3aa tiene una solución única que es:

Q3 = (Q0b + Q1ba) (aa) *

O se puede escribir esto de la siguiente manera:

5. Q3 = Q0b (aa) * + Q1ba (aa) *

Lógicamente, puede verificar / comprender eq- (5) significa Q3 se puede llegar de dos maneras (+) puño de aplicando b en Q0 luego hay un bucle con etiqueta aa en Q3, la segunda forma es de Q1 con aplicación de ba.

De manera similar, podemos simplificar la ecuación- (2)

Q1 = Q0a + Q2B
Q1 = Q0a + (Q1b + Q3a) b
Q1 = Q0a + Q1bb + Q3ab

Utilice aquí las reglas de simplificación de Arden.

Q1 = (Q0a + Q3ab) (bb) *

simplificar aún más

6. Q1 = Q0a (bb) * + Q3ab (bb) *

Ahora valor de Q3 de la ecuación- (5) a la ecuación- (6)

Q1 = Q0a (bb) * + (Q0b (aa) * + Q1ba (aa) *) ab (bb) *
Q1 = Q0a (bb) * + Q0b (aa) * ab (bb) * + Q1ba (aa) * ab (bb) *

Nuevamente mejore esta última ecuación utilizando la ley de simplificación de Arden.

Q1 = (Q0a (bb) * + Q0b (aa) * ab (bb) *) (ba (aa) * ab (bb) *) *

tomar Q0 estafador:

7. Q1 = Q0(a (bb) * + b (aa) * ab (bb) *) (ba (aa) * ab (bb) *) *

¿Puedes entender esta ecuación? Es cómo puedes ir a Q1 del estado Q0? Recordamos esta solución como ecuación- (7)

Como arriba podemos evaluar el valor de Q1 en términos de estado Q0 y a, bDe manera similar, debemos evaluar el valor para el estado Q3. Para esto podemos poner simple valor del estado Q1 de la ecuación- (5) a la ecuación- (7).

5. Q3 = Q0b (aa) * + Q1ba (aa) *
. Q3 = Q0b (aa) * + Q0(a (bb) * + b (aa) * ab (bb) *) (ba (aa) * ab (bb) *) * ba (aa) *
8. Q3 = Q0 (b (aa) * + (a (bb) * + b (aa) * ab (bb) *) (ba (aa) * ab (bb) *) * ba (aa) *)

Ahora, en la ecuación número (1) ponga el valor del estado Q3 y Q1 de la ecuación número (8) y (7) receptivamente.

Q0 = Λ + Q1a + Q3B
Q0 = Λ + Q0(a (bb) * + (aa) * ab (bb) *) (ba (aa) * ab (bb) *) * a + Q0 (b (aa) * + (a (bb) * + b (aa) * ab (bb) *) (ba (aa) * ab (bb) *) * ba (aa) *) b

Ahora, la última vez aplica la solución de Arden para encontrar el valor del estado Q0 en términos de símbolos a y b.

Q0 = Λ + ((a (bb) * + (aa) * ab (bb) *) (ba (aa) * ab (bb) *) * a + (b (aa) * + (a (bb) * + b ( aa) * ab (bb) *) (ba (aa) * ab (bb) *) * ba (aa) *) b) *

que es lo mismo que (podemos descartar Λ aquí) RE:

((a (bb) * + (aa) * ab (bb) *) (ba (aa) * ab (bb) *) * a + (b (aa) * + (a (bb) * + b (aa ) * ab (bb) *) (ba (aa) * ab (bb) *) * ba (aa) *) b) *

Este es el RE que estabas buscando.

No estoy seguro de que pueda simplificarse más. Te lo dejo como ejercicio.

En la pregunta vinculada, sugerí un método analítico y no formal, pero fue difícil de aplicar y encontrar RE para este DFA y esta pregunta demuestra el poder del teorema de Arden y la solución paso a paso.

Editar:

Mi expresión regular anterior es correcta pero difícil de asimilar debido a su forma asimétrica. A continuación, escribo una nueva forma de RE que es más simétrica.

Tenemos la ecuación- (5), (6) como sigue:

5. Q3 = Q0b (aa) * + Q1ba (aa) *
6. Q1 = Q0a (bb) * + Q3ab (bb) *

Ambos son de construcción simétrica y fáciles de aprender. (lea mi comentario después de la ecuación (5) anterior)

Para evaluar el valor del estado Q1 en términos de Q0, Puse el valor de Q3 de la ecuación- (5) a la ecuación- (6) que me da la ecuación- (7) de la siguiente manera:

7. Q1 = Q0(a (bb) * + b (aa) * ab (bb) *) (ba (aa) * ab (bb) *) *

De manera similar, para evaluar el valor del estado Q3 en términos de Q0, podemos poner valor de Q1 de la ecuación- (6) a la ecuación- (5) que nos dará una nueva forma de ecuación- (8) de la siguiente manera:

Q3 = Q0b (aa) * + Q1ba (aa) *
Q3 = Q0b (aa) * + (Q0a (bb) * + Q3ab (bb) *) ba (aa) *
Q3 = Q0b (aa) * + Q0a (bb) * ba (aa) * + Q3ab (bb) * ba (aa) *

Ahora, podemos tener la ecuación- (8) en nuestra forma deseada:

8. Q3 = Q0(b (aa) * + a (bb) * ba (aa) *) (ab (bb) * ba (aa) *) *

Ahora, tenemos la ecuación- (1), (7), (8):

1. Q0 = Λ + Q1a + Q3B
7. Q1 = Q0(a (bb) * + b (aa) * ab (bb) *) (ba (aa) * ab (bb) *) *
8. Q3 = Q0(b (aa) * + a (bb) * ba (aa) *) (ab (bb) * ba (aa) *) *

Ahora, podemos tener la ecuación- (8) en nuestra forma deseada:

8. Q3 = Q0(b (aa) * + a (bb) * ba (aa) *) (ab (bb) * ba (aa) *) *

Ahora, tenemos la ecuación- (1), (7), (8):

1. Q0 = Λ + Q1a + Q3B
7. Q1 = Q0(a (bb) * + b (aa) * ab (bb) *) (ba (aa) * ab (bb) *) *
8. Q3 = Q0(b (aa) * + a (bb) * ba (aa) *) (ab (bb) * ba (aa) *) *

Ahora pon el valor del estado Q1 y Q3 en la ecuación- (1):

Q0 = Λ + Q0(a (bb) * + b (aa) * ab (bb) *) (ba (aa) * ab (bb) *) * a + Q0(b (aa) * + a (bb) * ba (aa) *) (ab (bb) * ba (aa) *) * b

también se puede escribir como:

Q0 = Λ + Q0 ((a (bb) * + b (aa) * ab (bb) *) (ba (aa) * ab (bb) *) * a + (b (aa) * + a (bb) * ba (aa) *) (ab (bb) * ba (aa) *) * b)

A continuación, aplique el teorema de Arden en esta ecuación y obtenemos el RE final:

Expresión regular para números pares de ‘a’ e incluso números de ‘B’:

((a (bb) * + b (aa) * ab (bb) *) (ba (aa) * ab (bb) *) * a + (b (aa) * + a (bb) * ba (aa) *) (ab (bb) * ba (aa) *) * b) *

¿Se puede simplificar un paso más de la siguiente manera:

((a + b(aa)*ab)(bb)*(ba(aa)*ab(bb)*)*a + (b + a(bb)*ba)(aa)*(ab(bb)*ba(aa)*)*b)*

Nos puedes añadir valor a nuestra información participando con tu veteranía en las observaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *