¿Es posible tomar la construcción del producto para DFA con diferentes idiomas?

Esta pregunta está usando una terminología incorrecta / privada, me temo. Un idioma es un conjunto de cadenas, mientras que un alfabeto es un conjunto de caracteres.

Si esto tiene sentido, uno debe preguntarse si la construcción del producto puede aplicarse a dos autómatas deterministas de estado finito [matemática] M_1 [/ matemática] y [matemática] M_2 [/ matemática] que no tienen el mismo alfabeto de entrada.

Y aquí la respuesta es no . Para entender por qué, uno debe considerar la definición de la construcción del producto.

Suponga que [matemáticas] M_1 = (Q_1, \ Sigma_1, q_ {01}, \ delta_1, F_1) [/ matemáticas] y [matemáticas] M_2 = (Q_2, \ Sigma_2, q_ {02}, \ delta_2, F_2) [/ matemáticas].

En el autómata del producto tenemos [math] Q = Q_1 \ times Q_2 [/ math]. Ingenuamente, ahora se podría esperar que simplemente pudiéramos dejar que [math] \ Sigma = \ Sigma_1 \ cup \ Sigma_2 [/ math]. Sin embargo, considere la función de transición del autómata del producto definida por

[matemáticas] \ delta ((q_1, q_2), a) = (\ delta_1 (q_1), \ delta_2 (q_2)) [/ matemáticas]

Si [math] \ Sigma_1 \ neq \ Sigma_2 [/ math], esta función no estará bien definida para la elección anterior de [math] \ Sigma [/ math] ya que tendremos al menos una [math] a [ / math] encontrado en un alfabeto de entrada pero no en el otro.

  • La construcción de productos es un método para combinar 2 DFA / NFA para proporcionar el cierre en idiomas regulares.
  • Voy a hablar en el contexto de los DFA, porque es trivial usar la construcción de Subconjuntos de un NFA [math] (N) [/ math] dado para convertirlo en un DFA [math] (M) [/ math], [matemática] \ ni [/ matemática], [matemática] L (N) = L (M) [/ matemática].
    Entonces, en lo que respecta a la construcción del producto :
  • Lema : Dado un [matemático] DFA (M) [/ matemático] con [matemático] L (M) [/ matemático] y un [matemático] DFA (M ‘) [/ matemático] y [matemático] L (M’) [/ math], si creamos un [math] DFA (MM ‘) [/ math] con la Construcción del producto de M y M’, entonces:
    i) [matemáticas] L (MM ‘) = L (M) \ cap L (M’) [/ matemáticas], si, [matemáticas] F (N) = F (M) \ veces F (M ‘) [/ matemáticas]
    ii) [matemáticas] L (MM ‘) = L (M) \ copa L (M’) [/ matemáticas], si, [matemáticas] F (N) = \ {f | f = (q (M) _ {i}, f (M ‘) _ {j}) \ vee f = (f (M) _ {i}, q (M’) _ {j}) \} [/ matemáticas], donde, [matemáticas] (q (M) _ {i} \ in Q (M)) \ wedge (q (M ‘) _ {j} \ in Q (M’)) \ wedge ((f ( M) _ {i} \ en F (M)) \ wedge (f (M ‘) _ {i} \ en F (M’)) [/ math]
  • NOTA : La construcción del producto le permite elegir su [matemática] F (MM ‘) [/ matemática] como lo desee. Los que se describieron anteriormente solo se eligen para asegurarse de que la Construcción del producto crea Idiomas regulares cerrados en Unión e Intersección. Sin embargo, tenga en cuenta que la construcción del producto está cerrada en idiomas regulares, porque NO IMPORTA LO QUE ELIJA , representará algunos [math] DFA (MM ‘) [/ math] y su idioma [math] L (MM’) [/ math ] es regular por definición .
  • Como puede ver, [matemáticas] L (M) [/ matemáticas] y [matemáticas] L (M ‘) [/ matemáticas] no tienen que ser similares. De hecho, si los considerara similares, al menos en Construcción de productos de unión / intersección, tendría [matemática] L (MM ‘) = L (M) = L (M’) [/ matemática]. Puede hacerlo, pero está aumentando la Complejidad espacial del lenguaje representado por [math] MM ‘[/ math] sin aumentar su expresividad con respecto a [math] M, M’ [/ math]. – \ _ (= /) _ / –
  • Entonces, , puede hacer la construcción de productos de 2 DFA arbitrarias [matemáticas] (M), DFA (M ‘) [/ matemáticas] con idiomas [matemáticas] L (M), L (M’) [/ matemáticas]. De hecho, puede hacerlo hasta cualquier constante [math] k \ in \ mathbb {N} [/ math]:
    [matemáticas] DFA (M_ {1} … M_ {k}) = DFA (M_ {1}) \ veces … \ veces DFA (M_ {k}) [/ matemáticas]
  • Para su ejemplo: puede elegir el idioma [matemática] \ {a, b, c \} [/ matemática] para uno de los 2 DFA, definir lo que quiere su conjunto de Estados finales [matemática] F (MM ‘) [ / math] para que se parezca y construya el DFA resultante. Pero, hay una advertencia: ese idioma está sobre un alfabeto diferente. (Siguiente punto)
  • Si uno de los 2 DFA tiene un Alfabeto diferente, entonces esto no es trivial, y supongo que el Alfabeto del Producto construido [matemático] DFA (MM ‘[/ matemático]) sería [matemático] \ Sigma (MM’) = \ Sigma (M) \ copa \ Sigma (M ‘) [/ matemáticas]. El problema es que tendría que definir una heurística para las transiciones en [matemáticas] MM ‘[/ matemáticas] donde la transición sería para algunas [matemáticas] e \ in \ Sigma (MM’) [/ matemáticas] que se define en uno de [math] M [/ math] o [math] M ‘[/ math] y no en el otro. Esto es posible Por ejemplo, dependiendo de cómo desee construir su [matemática] F (MM ‘) [/ matemática] y de lo que quiera que signifique [matemática] DFA (MM’) [/ matemática], puede hacer que estas transiciones vayan a un estado basura, a menos que la transición significativa pase a un estado final en el DFA original. Sin embargo, la definición estándar de Construcción de productos no cubre esto.

    ¡Espero que esto esté en la línea de lo que estabas buscando!

More Interesting

¿Por qué se le dio al F-117 Nighthawk un prefijo F?

¿Cuál es el alcance de la probabilidad y las matemáticas discretas en ciencias de la computación?

Cómo imprimir dos variables enteras en la misma línea en Python

¿Cómo se pueden representar los números negativos en 0 y 1 binarios para que la computadora pueda leer con precisión?

Big data, seguridad informática y matemática financiera; ¿Cuál de estos campos es el mejor para emprender como carrera si eres de antecedentes matemáticos?

¿Cuánto CS se enseña en matemáticas y la rama de computación en ISM y BHU?

¿Es posible convertir una imagen a una fórmula matemática?

¿Qué problemas matemáticos se pueden hacer con las computadoras? ¿Cómo?

¿Cuánto de aprender un lenguaje de programación de computadoras (como C ++) tiene sus raíces en las matemáticas, es decir, ¿necesito tener un cerebro matemáticamente competente para escribir programas?

Para los usuarios, ¿se está volviendo Facebook más valioso, útil y digno de más tiempo invertido o menos? ¿Por qué? ¿Hay alguna evidencia de Facebook de que la Ley de Metcalfe es cierta (para n usuarios, el valor de la red aumenta en nxn)?

¿Cuál es la base matemática necesaria para la programación competitiva?

¿Cuál es la complejidad temporal de un programa que calcula el número n de Fibonacci mediante la memorización?

¿Cuál es la función más compleja que has visto que, lógicamente, no debería funcionar, pero sí lo hace?

¿Por qué diferenciamos entre máquinas Turing universales y máquinas Turing normales?

¿Por qué es importante la condición i + j <n en el siguiente código?