✖

Penukaran automaton kepada ungkapan nalar

Kita akan melihat cara menukarkan sebarang automaton terhingga kepada ungkapan nalar.

Penerangan algoritma

Input ialah suatu NFA A. Pertama sekali, kita menukarkannya kepada GNFA. Dalam fasa kedua, pada setiap langkah kita menghapuskan satu keadaan, membetulkan fungsi peralihan dengan sewajarnya, dan mengulanginya sehingga hanya tinggal dua keadaan — keadaan awal dan keadaan akhir. Di antara kedua-duanya terdapat satu anak panah yang berlabel ungkapan nalar, dan ungkapan inilah hasil keseluruhan algoritma. Jadi, keseluruhan kaedah ini terutamanya terdiri daripada penghapusan keadaan dan pembetulan automaton selepas itu supaya kita memperoleh automaton yang setara.

Penghapusan satu keadaan

Cara menghapuskan satu keadaan boleh digambarkan dengan contoh mudah. Andaikan sebahagian daripada automaton kita kelihatan seperti berikut:

dengan Ri ialah suatu ungkapan nalar. Bagaimanakah rupa automaton itu jika kita menghapuskan keadaan qr? Bayangkan kita berada pada keadaan qi dan bertanya: apakah semua rentetan yang boleh kita jana pada bahagian ini? Jika kita pergi dari keadaan qi terus ke keadaan qj, rentetan itu ialah semua rentetan yang sepadan dengan ungkapan nalar R4.

Namun, jika kita pergi ke keadaan qr, kita boleh menjana rentetan berbentuk R1. Pada keadaan qr kita boleh berulang bagi ungkapan nalar R2, jadi sebenarnya kita boleh menjana rentetan berbentuk R1∘(R2∗). Oleh sebab kita masih boleh pergi dari keadaan qr ke keadaan qj, kita menambahkan ungkapan nalar R3. Secara keseluruhan, melalui laluan ini kita boleh memperoleh rentetan berbentuk R1∘(R2∗)∘R3.

Sekarang kita tahu bahawa bahagian automaton ini boleh menghasilkan rentetan berbentuk R4 atau berbentuk R1∘(R2∗)∘R3. Hal ini sudah tentu boleh ditulis sebagai ungkapan nalar (R4)|(R1∘(R2∗)∘R3).

Kini kita boleh menghapuskan keadaan qr dengan mudah, meninggalkan dua keadaan qi dan qj sahaja, dan menulis ungkapan nalar yang baru dikira menggantikan R4:

Kaedah ini dilakukan bagi setiap anak panah dari setiap keadaan qi ke suatu keadaan qj, termasuk gelung, iaitu termasuk kes qi = qj.

Selepas menghapuskan satu keadaan, kita memperoleh automaton yang setara — automaton yang mengenal pasti bahasa yang sama.

Algoritma lengkap

Input ialah NFA A = ⟨Q, Σ, δ, q0, F⟩.

  1. Tukarkan NFA A kepada GNFA Z = ⟨Q′, Σ, δ′, q0′, qf′⟩. Seterusnya huruf k menandakan bilangan keadaan dalam Z.
  2. Jika k = 2, algoritma berakhir, dan ungkapan nalar yang terhasil berada pada anak panah antara keadaan awal dengan keadaan akhir.
  3. Jika k>2, pilih sebarang keadaan qr yang berbeza daripada keadaan awal dan keadaan akhir, iaitu qr ≠ q0′ dan qr ≠ qf′. Kemudian bina GNFA baharu Z′ = ⟨Q′′, Σ, δ′′,q0′,qf′⟩ dengan Q′′=Q′∖{qr} dan bagi semua qi ∈ Q′′ ∖ {qf′} dan semua qj ∈ Q′′ ∖ {q0′}, katakan δ′′(qi,qj)=(R4)|(R1(R2∗)R3), dengan R1 = δ′(qi,qr), R2 = δ′(qr,qr), R3 = δ′(qr, qj), R4 = δ′(qi, qj). Kemudian teruskan dengan langkah 2.

Contoh

Katakan input ialah automaton terhingga berikut:

Pertama sekali, kita menukarkannya kepada GNFA (peralihan ∅ yang tidak perlu tidak dilukis):

Sekarang kita menggunakan bahagian kedua algoritma dan menghapuskan satu nod. Kita mulakan dengan nod q2. Kita menghapuskan nod q2 dan menambahkan peralihan dari keadaan q1 ke keadaan qf. Peralihan ini dilabelkan b(a|b)∗ kerana dari nod q1 kita sampai ke keadaan q2 bagi rentetan berbentuk b, kemudian kita boleh berulang bagi a|b, yang memberikan (a|b)∗, dan akhirnya kita beralih ke qf melalui peraturan epsilon. Di sini b(a|b)∗ϵ = b(a|b)∗. Kita memperoleh automaton:

Yang tinggal ialah menghapuskan keadaan terakhir, q1. Kita menambahkan anak panah dari keadaan qs ke keadaan qf. Apakah labelnya? Kita sampai ke keadaan q1 melalui peraturan epsilon, jadi bahagian ini boleh terus ditinggalkan. Kemudian kita boleh berulang bagi a, jadi kita memperoleh ungkapan nalar a∗. Akhirnya kita sampai ke qf melalui anak panah, jadi ungkapan itu dirangkaikan pula dengan b(a|b)∗. Oleh itu, anak panah dilabelkan dengan ungkapan nalar a∗ b(a|b)∗.

Automaton kini hanya mempunyai dua keadaan, jadi algoritma berakhir. Ungkapan nalar yang terhasil berada pada anak panah itu.

Sumber

Kandungan: Ungkapan nalar, Penukaran ungkapan nalar kepada automaton, Automaton terhingga tak berketentuan umum, Penukaran automaton kepada ungkapan nalar