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.UNAquna, qsi, qC
Luego construya el autómata (" T " para transposición) para la multiplicación inversa transponiendo A :UNATTUNA
UNATunasiCunaunaunaCsiCunasiCsiCuna
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}
ATRabcabbcacabc∅aab∅cabcabcabc∅bbcabcacababc∅ccabacabcbcabc∅
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×ATR⟨a,ac⟩AATR⟨1,1⟩entra en bajo entrada de una , en ⟨ b , b ⟩ bajo de entrada b , etc. ⟨a,a⟩a⟨b,b⟩b
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,a⟩∈⟨a,a⟩⟨b,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=3⋅8+110=3⋅3+1
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.(∗) L LR L
Esta pista debería darle suficiente para pensar y, con suerte, resolver el problema.
fuente
Lindo.
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.
fuente
Parece que su principal problema es utilizar el no determinismo, así que déjenme explicarlo.
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).
fuente