Na foto abaixo, estou tentando descobrir o que exatamente esse NFA está aceitando.
O que me confunde é o salto em .
Se um for inserido, o sistema passa para e (o estado de aceitação)?
Se um for inserido, o sistema passa para e ?
O sistema passa para (estado de aceitação), se nenhuma entrada for fornecida (sequência vazia)?
automata
finite-automata
nondeterminism
user3472798
fonte
fonte
Respostas:
Toda vez que você está em um estado que tem um transição, isso significa que você está automaticamente em ambos os Estados, para simplificar isso para você:ϵ
Se a string for , seus autômatos terminam em q 0 e q 1ϵ q0 q1
Se sua string for '0', será novamente em e q 1q0 q1
Se sua string for '1', será apenas em , porque se você olhar do ponto de q 0 , você terá uma transição de '1' para q 2 , mas também precisará observar se está em q 1 (se você estivesse em q 0, você também sempre esteve em q 1 ), então não há transição '1'; portanto, esse caminho alternativo simplesmente "morre".q2 q0 q2 q1 q0 q1
Apenas observando esses casos, é fácil ver que seus autômatos aceitam , 0 ∗ e passando de q 0 a q 1 , a única maneira de atingir q 2 é 0 ∗ 11 ∗ 1 , portanto, isso retoma seus autômatos a ϵ , 0 ∗ , 0 ∗ 11 ∗ 1ϵ 0∗ q0 q1 q2 0∗11∗1 ϵ 0∗ 0∗11∗1
Espero que isso tenha ajudado, se você tiver mais alguma dúvida, basta perguntar!
fonte
No estado sem ler nenhuma entrada, o NFA permanece em q 0 e (em um universo alternativo, se desejar) também se move para o estado q 1 . Isso é semelhante ao que aconteceria em uma NFA que tivesse duas transições para estados diferentes na entrada de um caractere. Em particular, seu NFA aceita a string vazia, pois em nenhuma entrada ele pode fazer uma transição para o estado de aceitação q 1 .q0 q0 q1 q1
Continuando o seu exemplo, do estado vendo a entrada 0 , ele consumiria esse símbolo, permaneceria no estado q 0 (o loop) e também passaria ao estado q 1 , aceitando assim a entrada 0 . No estado q 0, lendo a entrada 1 , o NFA passaria para o estado q 2 . Também pode não consumir o 1 , mudar para o estado q 1 em outro universo e ficar preso lá (e não aceitar, pois não havia lido toda a entrada), pois não há transição de q 1 para 1 .q0 0 q0 q1 0 q0 1 q2 1 q1 q1 1
Veja se você pode se convencer de que a língua aceite por esta máquina é denotado pela expressão regular , ou seja, qualquer string que consiste de zero ou mais 0 s seguido por nada ou dois ou mais 1 s.0∗+0∗11∗1 0 1
By the way, há um algoritmo que leva um NFA com -Move e produz um NFA equivalente sem £ -Move, que eu espero que você vai aprender em breve.ϵ ϵ
fonte
Eu tentei construir o DFA para este NFA
- conjunto de alfabeto∑
-states setQ
funcσ(Q×(∑∪ϵ))→P(Q)
Como todo NFA possui DFA igual, vamos construir o DFA para esse dado NFA.M′
alfabeto - o mesmo
- estadosQ′=P(Q)
O estado atual éR∈P(Q)
- fechamento epsilon retorna um conjunto de estados alcançáveis em zero ou mais ϵ - conexões para cada r ∈ RE(R) ϵ r∈R
-transitionsσ′(R,a)=⋃r∈RE(σ(r,a))
Alguns cálculos neste FSM
ϵ na entrada: q ′ 0 = E ( { q 0 } ) = { q 0 , q 1 } estado inicial inclui q 1 para que o FSM aceite ϵ1. ϵ q′0=E({q0})={q0,q1} q1 ϵ
at least{ϵ,0∗}⊂L(M′)
Thanks to David Richerby
fonte