Palabras que tienen el mismo producto asociativo derecho e izquierdo

9

He comenzado a estudiar autómatas no deterministas utilizando el libro de Hopcroft y Ullman . Estoy atrapado en un problema que me pareció muy interesante:

Dé un autómata finito no determinista que acepte todas las cadenas que tienen el mismo valor cuando se evalúan de izquierda a derecha como de derecha a izquierda al multiplicar de acuerdo con la siguiente tabla:

×abcaaacbcabcbca

Entonces, si tenemos la cadena , el producto de izquierda a derecha es ( a × b ) × c = a × c = c y el producto de derecha a izquierda es a × ( b × c ) = a × b = unaabc
(a×b)×c=a×c=c
a×(b×c)=a×b=a

Entonces no debería ser aceptable para los autómatas. Para mí es obvio que cualquier cadena a a o b b o c c es una cadena aceptable (su evaluación derecha e izquierda funciona en las mismas cadenas parciales). Es fácil dar un NFA que describa la evaluación de izquierda a derecha, pero el problema es que si la máquina intenta calcular la evaluación de derecha a izquierda , creo que necesita saber la longitud de la cadena (por lo que es necesaria una memoria infinita).abcaabbcc

Entonces, ¿cómo puede un autómata no determinista evaluar de derecha a izquierda para comparar con la evaluación de izquierda a derecha?

Señor ariel
fuente

Respuestas:

6

El primer truco aquí es pensar en la tabla de multiplicar como la tabla de transición de un autómata con cada estado representando una letra en su tabla de multiplicar, pero sin preocuparse aún por la aceptación. Entonces, las letras a la izquierda y en el cuerpo de la tabla son en realidad estados: sería más exacto escribirlas como q a , q b , q c , pero no lo haré. Las letras en la parte superior son entradas.Aqa,qb,qc

Luego construya el autómata (" T " para transposición) para la multiplicación inversa transponiendo A :ATTA

ATabcaacbbaacccba

Entonces te lleva al estado c , y de la misma manera A T ( c b a ) se mueve al estado a de A T , como notas.A(abc)cAT(cba)aAT

Sin embargo, asume que vas de derecha a izquierda, y aún queremos ir de izquierda a derecha. Entonces, el segundo truco es revertir el autómata (no la multiplicación, que simplemente nos recuperaría si empezáramos), invirtiendo todas las flechas, lo que conduce a un autómata no determinista A T R dado por la tabla de transición a continuación, con subconjuntos indicados por letras concatenadas para mantener al pollo rascando, por lo que a c es realmente { a , c } . (Espero haberlo hecho bien, parece funcionar).ATATRac{a,c}

ATRabcaabbcbcaccabababbcacbccacabcacabcabbcabcabcabcabc

Puede interpretar esto como un autómata no determinista con solo las tres filas por encima de la línea o una versión determinada con las 8 filas.

Finalmente, la máquina para resolver el problema es el autómata multiproducto de y A T R originales , es decir A × A T R para realizar el comportamiento de intersección de los dos autómatas (ya no necesitamos A T ) . A × A T R tiene estados que son pares como una , una c . La función de transición ejecuta A y A T R independientemente. Un solo estado de inicio 1 , 1 AATRA×ATRATA×ATRa,acAATR1,1entra en bajo entrada de una , en b , b bajo de entrada b , etc. a,aab,bb

La aceptación de los estados en la versión no determinista se etc. En la versión determinista, aceptando estados son parejas en las que el primer componente es del segundo conjunto de componentes, tales como una , una o b , b c .a,aa,ab,bc

aumentada y determinada como se muestra tiene 25 = 3 8 + 1 estados, así que perdóname si no lo escribo en detalle. Pero la versión no determinista tiene solo 10 = 3 3 + 1 estados.A×ATR25=38+110=33+1

David Lewis
fuente
Gracias, realmente me ayudó su respuesta para comprender la idea detrás del no determinismo y el "reverso" de un autómata. Estaba teniendo problemas para entender estos conceptos usando el libro de Hopcroft, ahora mismo estoy usando el libro de Sipser "Introducción a la teoría de la computación", es realmente bueno.
Sr. Ariel
Considere la entrada . 1 , 1 se mueve a b , b después de la entrada b , y luego a c , bajo entrada de una , por lo b un no es aceptada, sino que debe ser? ba1,1b,bbc,aba
cemulate
8

Si L es un lenguaje regular, entonces L R , el lenguaje que consiste en elreversode todas las palabras en L , también es regular. Toma esto como un ejercicio.()LLRL

La,Lb,Lca,b,c

(LaLaR)(LbLbR)(LcLcR).
()

()LaRa

bbbx=ax=bcaab

Esta pista debería darle suficiente para pensar y, con suerte, resolver el problema.

Yuval Filmus
fuente
Buena manera de demostrarlo con la fórmula: vota a favor por eso. En cuanto a la idea alternativa de "adivinar y verificar no determinista", generalmente está bien para una prueba, pero es bastante difícil de llevar a cabo, como lo requiere el problema. Creo que aquí faltan muchos detalles, como cómo hacer un seguimiento de la cadena desde el back-end.
David Lewis el
@David, faltan detalles a propósito.
Yuval Filmus
@Yuval - no dijo que era tarea - confiamos en la gente aquí, ¿correcto? También creo que esta prueba de existencia dará como resultado una máquina bastante grande, probablemente mucho más grande de lo necesario.
David Lewis
@DavidLewis: Gilles dio una respuesta más completa que muestra que la NFA no es demasiado grande; el no determinismo hace eso por ti. Sin embargo, el DFA correspondiente podría ser enorme.
Raphael
@MohamedAbbas Quizás, no estoy planeando verificarlo.
Yuval Filmus
6

Lindo.

xyzxy=z{a,b,c}11xxxxx

Ahora construyamos un autómata que calcule el producto de derecha a izquierda. Este será no determinista. ¿Como hacemos eso? Simple ... Para ir en la otra dirección, simplemente invierta todo : las flechas y la dirección del producto.

xyxyxyxyxyyx.

1

(x1,x2)y(z1,z2)x1yz1x2yz2(1,x)(x,x)x

Gilles 'SO- deja de ser malvado'
fuente
xyyxconduce a un conjunto de estados finitos? IAC, no es tan simple como "revertir todo", ya que todavía tiene que consumir de izquierda a derecha, sino multiplicar de derecha a izquierda, y no estoy seguro de que haya hecho eso.
David Lewis el
{overleftarrowa,b,b,1}
5

Parece que su principal problema es utilizar el no determinismo, así que déjenme explicarlo.

La idea básica que utilizan los demás es que una máquina no determinista puede adivinar el resultado final.

abc

  • aabcab
    • abb
      • bc
    • bbc
      • cc
  • ba
  • cabcc
    • cba
      • ac

Como puede ver, el NFA es capaz de adivinar y verificar cada cálculo posible de abajo hacia arriba . Debido a que el lenguaje aceptado se define como el conjunto de cadenas que es aceptado por al menos una ejecución , se ignoran todas las ejecuciones que no aceptan en la entrada; la NFA "siempre acierta".

Ahora es fácil para esta NFA recordar su primera opción hasta el final. Si acepta, puede comparar el símbolo recordado con el producto lr (determinísticamente) obtenido en paralelo (la forma en que la intersección del lenguaje se relaciona con NFA seguramente está cubierta en Ullman / Hopcroft y cualquier otro libro de texto básico).

Rafael
fuente
La idea de adivinar una cuerda era extraña para mí, pero he estado leyendo el libro de Sipser y creo que es un mejor enfoque para los novatos como yo en la teoría de la computación.
Sr. Ariel
Piense en adivinar como bifurcación con entrada supuesta. Pero debe tener cuidado con las estrategias de adivinanzas: asegúrese de que cualquier almacenamiento necesario para adivinar esté limitado de manera uniforme para todos los hilos bifurcados, de lo contrario ya no tendrá un autómata de estado finito . Además, necesita un límite uniforme en la cantidad de hilos bifurcados activos. Creo que la descripción de Raphael aquí funciona, pero al menos debe mencionarse.
David Lewis