Saya ingin membuktikan (atau menyangkal) dugaan berikut:
Dugaan : two counter automata (2CA) tidak dapat memutuskan bahasa berikut:
representasi terner dan biner dari memiliki panjang genap atau ganjil
Sebuah 2CA dapat dengan mudah memeriksa apakah representasi biner memiliki panjang genap atau ganjil (hanya membaginya dengan dua dan memperbarui bendera "panjang genap" setelah setiap divisi); dengan cara yang sama dapat memeriksa apakah representasi ternary memiliki panjang genap atau ganjil (hanya tetap membaginya dengan tiga dan memperbarui bendera "panjang genap" setelah setiap divisi).
Tetapi untuk menghitung salah satu dari mereka harus menghancurkan inputnya, dan tidak dapat memulihkannya untuk menghitung yang lain; sehingga tampaknya tidak ada cara untuk memutuskan .
Apakah Anda tahu teknik yang dapat digunakan untuk membuktikan dugaan itu?
Atau dapatkah Anda menyangkal dugaan membangun 2CA yang memutuskan ?
Saya mencoba pendekatan yang sama diikuti oleh Ibarra untuk membuktikan bahwa 2CA tidak dapat memutuskan , tetapi tampaknya bukan cara yang benar.
Catatan : untuk kesederhanaan, 2CA setara dengan program dengan satu variabel yang awalnya berisi input dan set instruksi berikut:
- INC : tambahkan satu ke variabel;
- DEC : decrement (hanya jika lebih besar dari nol);
- JZ : jika adalah nol lompat ke label jika tidak melanjutkan;
- MUL : kalikan dengan costant ;
- DIV : bagi dengan konstanta dan simpan hasil bagi menjadi ( ); mungkin melompat ke label yang berbeda sesuai dengan yang tersisa ( );
- Lab GOTO : lompatan tanpa syarat;
- HALT Accept | Tolak : hentikan dan terima atau hentikan dan tolak.
Misalnya program untuk memeriksa apakah representasi biner dari memiliki panjang genap adalah:
loop: JZ even // test if n = 0
DIV 2
JZ odd // test if n = 0
DIV 2
GOTO loop
even: HALT Accept
odd: HALT Reject
(kita dapat membangun 2CA yang setara)
sumber
Jawaban:
Jadi orang-orang terus mengomel saya untuk memposting ini meskipun itu hanya memecahkan versi masalah yang disederhanakan. Baiklah kalau begitu :)
Pada akhir ini, saya akan menaruh beberapa dari apa yang saya pelajari dari kertas Ibarra dan Tran, dan mengapa yang metode istirahat turun pada masalah umum kami, tapi mungkin masih memberikan beberapa informasi yang berguna.
Tetapi pertama-tama, kita akan melihat masalah yang lebih sederhana dalam mencoba memutuskan set
terner dan representasi biner dari 2 n memiliki kedua panjang bahkan atau panjang aneh }L={2n∣ 2n }
Perhatikan bagaimana ini memiliki daripada n seperti pada masalah aslinya. Khususnya jika nomor input bukan kekuatan 2, kami ingin menolaknya daripada mencoba menghitung panjangnya di basis apa pun.2n n
Ini sangat menyederhanakan masalah: Jika nomor asli ditulis prima faktorized sebagai , maka untuk semua v i kecuali v 2 kita hanya perlu memeriksa bahwa semuanya 0 .2v23v35v57v7... vi v2 0
Hal ini memungkinkan kita untuk memecahkan masalah yang disederhanakan ini dengan menggunakan pembungkus di sekitar metode lama (oleh Minsky saya berasumsi) dari pengkodean keadaan -counter automaton dalam eksponen faktorisasi utama dari variabel tunggal otomat multiplikasi / divisi, yang seperti disebutkan dalam OP di atas hampir setara dengan robot 2-counter.k
Pertama, kita perlu otomat count untuk membungkus. Kami akan menggunakan 3 penghitung, bernama v 2 , v 3 dan v 5 .k v2 v3 v5
Otomat akan menerima IFF untuk nilai counter awal, terner dan representasi biner dari memiliki kedua panjang bahkan atau panjang aneh, dan baik v 3 dan v 5 adalah nol. Ketika menerima, pertama-tama akan nol semua konternya.2v2 v3 v5
Berikut adalah beberapa kode untuk itu, dalam format perakitan yang mirip dengan OP (Saya baru saja menambahkan variabel ke instruksi). Saya belum benar-benar mengujinya, karena saya tidak punya apa-apa untuk menjalankannya, tetapi saya menganggap ini sebagai formalitas: automata 3-counter dikenal sebagai Turing-complete, dan untuk dapat membangun fungsi yang dapat dihitung dari salah satu dari mereka nilai awal.
Langkah selanjutnya adalah mengkodekan ulang di atas dalam eksponen otomat variabel tunggal. Karena hasilnya cukup lama, saya hanya akan menjelaskan metode umum, tetapi versi lengkap (sedikit "dioptimalkan" di tempat) ada di situs web saya.
menjadi (pada dasarnya dibagi dengan p, dan kemudian lakukan pembersihan untuk membatalkan jika pembagian itu tidak merata):
INC vp
menjadiMUL p
. IndividualJZ
danDEC
pertama dapat diubah menjadi bentuk gabungan.GOTO label
danHALT Reject
tidak berubah.HALT Accept
akan berubah, kecuali bahwa dalam kasus kami, kami masih memiliki satu pemeriksaan terakhir yang harus dilakukan: kita perlu memastikan bahwa tidak ada faktor utama dalam jumlah lain selain 2,3 dan 5. Sejak tertentu 3-counter nol robot kami counter itu menggunakan ketika menerima, ini sederhana: hanya menguji bahwa variabel terakhir adalah 1, yang dapat dilakukan dengan melompat ke kodeKode di situs web saya juga memiliki pemeriksaan awal bahwa jumlahnya bukan nol, yang baru saja saya sadari berlebihan dengan v3, v5 nol cek, oh well.
Seperti yang saya sebutkan, metode di atas bekerja untuk masalah yang disederhanakan, tetapi itu benar-benar tidak memiliki kesempatan untuk bekerja pada masalah umum, karena: Dalam masalah umum nilai tepat dari jumlah eksponen setiap prime untuk menentukan ukuran umum dan dengan demikian panjangnya memiliki berbagai pangkalan. Ini berarti:
Jadi mari kita akhiri dengan penjelasan tentang intisari metode umum dari makalah yang tertaut di atas oleh Ibarra dan Trân ( versi yang dapat diunduh secara bebas ) untuk cara membuktikan bahwa masalah tertentu tidak dapat dipecahkan oleh 2CA, dan bagaimana hal itu secara menjengkelkan terpecah pada kita. kasus.
Kemudian, mereka menganalisis robot ini untuk menyimpulkan bahwa mereka dapat membangun urutan aritmatika tertentu dari angka yang perilakunya terkait. Tepatnya (Beberapa dari ini tidak dinyatakan sebagai teorema, tetapi tersirat dalam bukti dari dua contoh utama mereka):
(Pikiran:
sumber