Kapan gabungan dua bahasa reguler tidak ambigu?


16

Diberikan bahasa dan , katakanlah bahwa gabungan tidak ambigu jika untuk semua kata , ada tepat satu dekomposisi dengan dan , dan ambigu sebaliknya. (Saya tidak tahu apakah ada istilah yang mapan untuk properti ini — hal yang sulit untuk dicari!) Sebagai contoh sepele, gabungan dari dengan dirinya sendiri adalah ambigu ( ), tetapi gabungan dengan dirinya sendiri tidak ambigu.ABABwABw=abaAbB{ε,a}w=a=εa=aε{a}

Apakah ada algoritma untuk memutuskan apakah gabungan dari dua bahasa reguler tidak ambigu?


1
Gah, ini benar-benar masalah CS mahasiswa baru, bukan? Jujur, saya belum mencoba banyak; Saya berharap bahwa ada algoritma yang mapan untuk ini di suatu tempat dalam literatur dan saya tidak harus pergi menciptakan kembali roda. Saya menulis perangkat lunak di sini; Saya hanya mengikuti beberapa kursus CS (beberapa tahun yang lalu) jadi pada dasarnya saya mulai dari Wikipedia. Saya tahu tidak ada yang menyukai seseorang yang tidak ingin bekerja untuk jawaban mereka, jadi jika ada buku teks atau kertas atau sesuatu yang bisa Anda tunjukkan kepada saya alih-alih hanya memberikan saya algoritma, itu akan sangat membantu! Terima kasih!
pertama

Saya menambahkan ini sebagai komentar karena, topiknya relatif tidak umum, tetapi mungkin dapat membantu Anda. Konsorsium Unicode memiliki beberapa proses untuk menentukan kesamaan antar bahasa. Saya telah membaca tautan yang sangat informatif di situs mereka, tetapi seumur hidup saya tidak dapat menemukannya hari ini untuk menjawabnya. Jika Anda memiliki waktu untuk penelitian ini di sini adalah FAQ halaman mereka unicode.org/faq
htm11h

Jawaban:


10

Petunjuk: Mengingat DFA untuk dan B , buatlah NFA yang menerima kata-kata dalam A B yang memiliki setidaknya dua dekomposisi yang berbeda. NFA melacak dua salinan NFA standar untuk A B (dibentuk dengan menggabungkan DFA untuk A dan B dengan transisi ϵ ), memastikan bahwa peralihan dari A ke B terjadi pada dua titik yang berbeda.ABABABABϵAB


Terima kasih atas petunjuknya! Jadi jika saya mengerti, saya bisa membuat NFA untuk kata-kata yang ambigu dalam dan kemudian menguji robot itu untuk kekosongan. Bagian yang sulit tampaknya adalah "memastikan bahwa peralihan dari A ke B terjadi pada dua titik yang berbeda". Saya tidak yakin bagaimana melakukan itu selain mengambil produk silang (?) Dari dua A B DFA dan menghapus semua status produk ( A- terminal, A- terminal) - saya menunggu, saya khawatir bahwa transisi dari A B NFA ke A B DFA akan kacau dengan gagasan AABABABAAABABA-terminal. Kedengarannya, um, tidak efisien; Adakah algoritma yang diketahui cocok untuk perangkat lunak?
pertama

Ya, itu tidak terdengar terlalu efisien, meskipun selalu ada opsi untuk melakukannya dengan cara yang cerdas. Saya tidak mengetahui adanya algoritma khusus untuk masalah ini, tetapi mungkin ada.
Yuval Filmus

7

Diperbarui (terima kasih kepada Yuval Filmus).

Diberi dua bahasa dan Y dari A , misalkan X - 1 YXYA Saya mengklaim bahwaXYtidak ambigu jika dan hanya jika bahasaX-1XYY-1A+kosong.

X1Y={uAthere exists xX such that xuY}YX1={uAthere exists xX such that uxY}
XYX1XYY1A+

Bukti . Misalkan adalah ambigu. Kemudian ada sebuah kata u yang memiliki dua dekomposisi lebih X Y , mengatakan u = x 1 y 2 = x 2 y 1 , di mana x 1 , x 2X dan y 1 , y 2Y . Tanpa kehilangan keumuman, kita dapat berasumsi bahwa x 1 adalah awalan x 2 , yaitu, x 2 = xXYuXYu=x1y2=x2y1x1,x2Xy1,y2Yx1x2 untuk beberapa z A + . Oleh karena itu u = x 1 y 2 = x 1 z y 1 , di mana y 2 = z y 1 . Jadi z X - 1 X Y Y - 1 .x2=x1zzA+u=x1y2=x1zy1y2=zy1zX1XYY1

Misalkan sekarang mengandung beberapa kata kosong z . Kemudian ada x 1 , x 2X dan y 1 , y 2Y sedemikian sehingga x 2 = x 1 z dan y 2 = z y 1 . Maka x 2 y 1 = x 1 z y 1 =X1XYY1zx1,x2Xy1,y2Yx2=x1zy2=zy1 dan karenanya produk X Y adalah ambigu.x2y1=x1zy1=x1y2XY

Jika dan Y adalah teratur, maka keduanya X - 1 X dan Y Y - 1 teratur dan dengan demikian X - 1 X Y Y - 1 juga teratur (lihat jawaban Yuval untuk otomat yang menerima bahasa ini).XYX1XYY1X1XYY1


Bagaimana jika adalah kata kosong? z
Yuval Filmus

Ups. Saya memperbarui.
J.-E.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.