[Introduzione alla teoria della computazione] Esercizio 1.9 #60
FeddyLix17
started this conversation in
Esercizi
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Usare la costruzione nella prova del Teorema 1.47 per dare i diagrammi di stato degli NFA che riconoscono la concatenazione dei linguaggi descritti negli
Teorema 1.47
La classe dei linguaggi regolari è chiusa rispetto all'operazione di concatenazione.
IDEA. Abbiamo i linguaggi regolari A1 e A2, e vogliamo provare che A1 ∘ A2 è regolare.
L'idea è prendere due NFA, N1 ed N2 per A1 e A2, e combinarli in un nuovo NFA N come abbiamo fatto nel caso dell'unione, ma questa volta in un modo diverso, come mostrato nella figura seguente.
Poniamo come stato iniziale di N lo stato iniziale di N1.
Gli stati accettanti di N1 hanno degli ulteriori ε-archi che non deterministicamente permettono di diramarsi in N2 ogni volta che N1 è in uno stato accettante, indicando che ha trovato un pezzo iniziale dell'input che costituisce una stringa in A1.
Gli stati accettanti di N sono solo gli stati accettanti di N2.
Quindi, esso accetta quando l'input può essere diviso in due parti, la prima accettata da N1 e la seconda da N2.
Possiamo pensare che N non deterministicamente ipotizza dove effettuare la divisione.
DIMOSTRAZIONE
Sia N1 = (Q1, Σ, δ1, q1, F1) che riconosce A1 ed N2 = (Q2, Σ, δ2, q2, F2) che riconosce A2.
Costruiamo N = (Q, Σ, δ, q1, F2) per riconoscere A1 ∘ A2.
Q = Q1 ∪ Q2. Gli stati di N sono tutti gli stati di N1 ed N2.
Lo stato q1 è lo stato iniziale di N1.
Gli stati accettanti F2 sono uguali agli stati accettanti di N2.
Definiamo δ in modo che per ogni q ∈ Q e ogni a ∈ Σε,
Beta Was this translation helpful? Give feedback.
All reactions