Metode lain, tidak tercakup oleh jawaban di atas, adalah transformasi otomat terbatas . Sebagai contoh sederhana, mari kita tunjukkan bahwa bahasa reguler ditutup di bawah operasi acak , didefinisikan sebagai berikut:
L1SL2={x1y1…xnyn∈Σ∗:x1…xn∈L1,y1…yn∈L2}
Anda dapat menunjukkan penutupan di bawah acak menggunakan properti penutupan, tetapi Anda juga dapat menunjukkannya secara langsung menggunakan DFA. Misalkan
adalah DFA yang menerima
L i (untuk
i = 1 , 2 ). Kami membangun baru DFA
⟨ Σ , Q , F , δ , q 0 ⟩ sebagai berikut:
Ai=⟨Σ,Qi,Fi,δi,q0i⟩Lii=1,2⟨Σ,Q,F,δ,q0⟩
- Himpunan status adalah , di mana komponen ketiga mengingat apakah simbol berikutnya adalah x i (ketika 1) atau y i (ketika 2).Q1×Q2×{1,2}xiyi
- Keadaan awal adalah .q0=⟨q01,q02,1⟩
- Status penerima adalah .F=F1×F2×{1}
- Fungsi transisi didefinisikan oleh dan δ ( ⟨ q 1 , q 2 , 2 ⟩ , σ ) = ⟨ q 1 , δ 2 ( q 2 , σδ(⟨q1,q2,1⟩,σ)=⟨δ1(q1,σ),q2,2⟩ .δ(⟨q1,q2,2⟩,σ)=⟨q1,δ2(q2,σ),1⟩
Versi yang lebih canggih dari metode ini melibatkan menebak . Sebagai contoh, mari kita tunjukkan bahwa bahasa reguler ditutup dengan pembalikan , yaitu,
(Di sini ( w 1 ... w n ) R = w n ... w 1
LR={wR:w∈Σ∗}.
(w1…wn)R=wn…w1.) Ini adalah salah satu operasi penutupan standar, dan penutupan dengan pembalikan dengan mudah mengikuti manipulasi ekspresi reguler (yang dapat dianggap sebagai mitra transformasi otomat terbatas hingga ekspresi reguler) - hanya membalikkan ekspresi reguler. Tapi Anda juga bisa membuktikan penutupan menggunakan NFA. Misalkan bahwa
diterima oleh DFA
⟨ Σ , Q , F , δ , q 0 ⟩ . Kami membangun sebuah NFA
⟨ Σ , Q ' , F ' , δ ' , q ' 0 ⟩ , di mana
L⟨Σ,Q,F,δ,q0⟩⟨Σ,Q′,F′,δ′,q′0⟩
- Himpunan negara adalah .Q′=Q∪{q′0}
- Keadaan awal adalah .q′0
- Keadaan penerima unik adalah .q0
- Fungsi transisi didefinisikan sebagai berikut: , dan untuk keadaan apa pun q ∈ Q dan σ ∈ Σ , δ ( q ′ , σ ) = { q : δ ( q , σ ) = q ′ } .δ′(q′0,ϵ)=Fq∈Qσ∈Σδ(q′,σ)={q:δ(q,σ)=q′}
(Kita dapat menghilangkan jika kita mengizinkan beberapa status awal.) Komponen menebak di sini adalah status akhir kata setelah pembalikan.q′0
Menebak seringkali melibatkan juga verifikasi. Salah satu contoh sederhana adalah penutupan di bawah rotasi :
Misalkan L diterima oleh DFA ⟨ Σ , Q , F , δ , q 0 ⟩ . Kami membangun sebuah NFA ⟨ Σ , Q ' , F ' , δ ' , q '
R(L)={yx∈Σ∗:xy∈L}.
L⟨Σ,Q,F,δ,q0⟩, yang beroperasi sebagai berikut. NFA menebak pertama kali
q=δ(q0,x). Kemudian memverifikasi bahwa
δ(q,y)∈Fdan bahwa
δ(q0,x)=q, bergerak dari
yke
x secaranon-deterministik. Ini dapat diformalkan sebagai berikut:
⟨Σ,Q′,F′,δ′,q′0⟩q=δ(q0,x)δ(q,y)∈Fδ(q0,x)=qyx
- Statusnya adalah . Terlepas dari keadaan awal q ' 0 , negara-negara yang ⟨ q , q c u r r , s ⟩ , di mana q adalah negara yang kami menduga, q c u r r adalah kondisi saat ini, dan s menspesifikasikan apakah kita berada di si yQ′={q′0}∪Q×Q×{1,2}q′0⟨q,qcurr,s⟩qqcurrsybagian dari input (ketika 1) atau pada bagian dari input (ketika 2).x
- Negara-negara akhir adalah : kita menerima ketika δ ( q 0 , x ) = q .F′={⟨q,q,2⟩:q∈Q}δ(q0,x)=q
- Transisi menerapkan menebak q .δ′(q′0,ϵ)={⟨q,q,1⟩:q∈Q}q
- Transisi (untuk setiap q , q c u r r ∈ Q dan s ∈ { 1 , 2 } ) mensimulasikan DFA asli.δ′(⟨q,qcurr,s⟩,σ)=⟨q,δ(qcurr,σ),s⟩q,qcurr∈Qs∈{1,2}
- Transisi , untuk setiap q ∈ Q dan q f ∈ F , menerapkan bergerak dari y bagian ke x bagian. Ini hanya diizinkan jika kita telah mencapai keadaan akhir pada bagian y .δ′(⟨q,qf,1⟩,ϵ)=⟨q,q0,2⟩q∈Qqf∈Fyxy
Varian lain dari teknik ini menggunakan penghitung terbatas. Sebagai contoh, mari kita pertimbangkan untuk mengubah penutupan jarak sunting :
Mengingat DFA ⟨ Σ , Q , F , δ , q 0 ⟩ untuk L , e membangun sebuah NFA ⟨ Σ , Q '
Ek(L)={x∈Σ∗: there exists y∈L whose edit distance from x is at most k}.
⟨Σ,Q,F,δ,q0⟩L untuk
E k ( L ) sebagai berikut:
⟨Σ,Q′,F′,δ′,q′0⟩Ek(L)
- Himpunan status adalah , di mana item kedua menghitung jumlah perubahan yang dilakukan sejauh ini.Q′=Q×{0,…,k}
- Keadaan awal adalah .q′0=⟨q0,0⟩
- Status penerima adalah .F′=F×{0,…,k}
- q,σ,i⟨δ(q,σ),i⟩∈δ′(⟨q,i⟩,σ)
- ⟨q,i+1⟩∈δ′(⟨q,i⟩,σ)q,σ,ii<k
- ⟨δ(q,σ),i+1⟩∈δ′(⟨q,i⟩,ϵ)q,σ,ii<k
- ⟨δ(q,σ),i+1⟩∈δ′(⟨q,i⟩,τ)q,σ,τ,ii<k