Berapa banyak DFA menerima dua string yang diberikan?

28

Perbaiki bilangan bulat n dan alfabet Σ={0,1} . Tentukan DFA(n) sebagai kumpulan semua automata kondisi terbatas pada n status dengan kondisi awal 1. Kami sedang mempertimbangkan semua DFA (tidak hanya yang terhubung, minimal, atau non-degenerasi); demikian, |DFA(n)|=n2n2n .

Sekarang perhatikan dua string dan menentukan K ( x , y ) menjadi jumlah unsur D F A ( n ) yang menerima kedua x dan y .x,yΣK(x,y)DFA(n) xy

Pertanyaan: Apa kompleksitas komputasi ?K(x,y)

Pertanyaan ini memiliki implikasi untuk pembelajaran mesin .

Sunting: Sekarang ada karunia pada pertanyaan ini, saya kira sedikit lebih tepat dalam perumusan dalam urutan. Untuk , misalkan D F A ( n ) menjadi koleksi n 2 n 2 n automata, sebagaimana didefinisikan di atas. Untuk x , y { 0 , 1 } * , mendefinisikan K n ( x , y ) menjadi jumlah automata di D F A ( n ) yang menerima keduan1DFA(n)n2n2nx,y{0,1}Kn(x,y)DFA(n) dan y . Pertanyaan: dapatkah K n ( x , y ) dihitung dalam waktu p o l y ( n , | x | , | y | ) ?xyKn(x,y)poly(n,|x|,|y|)

Aryeh
sumber
2
Jika Anda memperbaiki DFA tanpa memperbaiki keadaan akhir, maka ia memetakan x dan y ke keadaan yang sama, dalam hal ini satu-satunya kendala adalah bahwa negara harus final, atau memetakannya ke dua negara yang berbeda, dalam hal ini satu-satunya kendala adalah bahwa keduanya harus final. Dengan demikian, saya akan menulis ulang masalah Anda sebagai "berapa banyak DFA memetakan x dan y ke berbagai negara?".
a3nm
3
Aryeh, bisakah kamu menjelaskan hitungan ? Saya tidak bisa mendapatkan faktor 2 n . Ditambahkan: Ups, saya lupa menentukan status akhir. Ngomong-ngomong, demi orang lain, begini caranya. Untuk setiap negara bagian, tentukan ke mana harus memasukkan input 0 dan 1 ; yang menyumbang n 2 n . Tentukan set kondisi akhir; itu 2 n . n2n2n2n01n2n2n
Srivatsan Narayanan
2
Memang, saya tidak peduli apa yang terjadi pada string selain dan y . Saya kira orang perlu sejumlah poin untuk memulai hadiah? xy
Aryeh
4
Otomat terkecil yang menerima dan y memiliki status tunggal, jadi saya tidak berpikir itu sangat informatif ...xy
Aryeh
3
Berikut ini sebuah ide: kita hanya perlu mengetahui jumlah DFA negara yang berakhir pada keadaan yang sama pada x dan y . Biarkan angka ini menjadi m dan M menjadi jumlah total DFA, yaitu M = n 2 n 2 n . Maka jawabannya adalah 1nxymMM=n2n2n, ini memberi batas. Untuk menghitungm,ide lain adalah kita dapat melupakan segmen awal bersamaxdanydan juga berasumsi bahwa wlogx=0adanb=1b. Kami hanya menghitung jumlah DAG biner denganstatusldan tinggi paling banyakmaksimal{a,b}yang0adan1bberakhir di tempat yang sama dan dari situ mudah untuk menghitungm.12m+14(Mm)mxyx=0ab=1blmax{a,b}0a1bm
Kaveh

Jawaban:

1

Jadi pertanyaannya cukup singkat tetapi sangat menarik. Saya mengira bahwa inputnya adalah dalam unary, dan x dan y dalam biner (atau kita memiliki masalah, seperti yang ditunjukkan oleh jawaban Kai).nxy

Pertama-tama, jika Anda tertarik untuk mengetahui sekitar, maka Anda hanya dapat menghasilkan beberapa DFA acak dan ini akan memberi Anda (whp) perkiraan yang baik. (Aku ingin tahu apakah kelas kompleksitas ini memiliki nama.)K(x,y)

Maka mengetahui justru tampak seperti masalah yang sulit. Seperti yang ditunjukkan dalam komentar oleh a3_nm dan Kaveh, pertanyaannya setara dengan menentukan jumlah automata yang x dan y pergi ke keadaan yang sama. Saya akan menunjukkan probabilitas bahwa mereka pergi ke keadaan yang sama dengan p .K(x,y)xyp

Pembaruan: Beberapa hal yang saya tulis di sini tidak benar, sekarang saya memperbaikinya.

Sangat mudah untuk melihat bahwa . Kita memiliki persamaan, jika x adalah semua 0 dan y semua nol kecuali bit terakhirnya, yaitu 1. Apakah ada kasus lain? Saya tidak tahu Jika misalnya x adalah string kosong dan y = 00 , maka p = n + 1p1/nxyxy=00 .p=n+1(n1)n

Untuk menyederhanakan masalah, saya bahkan mulai berpikir tentang apa yang terjadi jika dan y adalah unary. Jika keduanya setidaknya n dan perbedaannya dapat dibagi oleh n ! , lalu p = 1 . Apakah ada formula sederhana untuk versi unary?xynn!p=1

domotorp
sumber
Saya telah mengklarifikasi masalahnya - sebuah algoritma diinginkan (atau pengurangan dari beberapa masalah sulit yang diketahui). Perkiraan pengambilan sampel digunakan dalam makalah di mana kernel ini diperkenalkan: portal.acm.org/citation.cfm?id=1577108poly(n,|x|,|y|)
Aryeh
2
Sedangkan untuk versi unary: hanya ada banyak automata state un- polinomially , jadi saya berani bertaruh bahwa ada algoritma poly-time untuk menghitung K n ( x , y ) untuk kasus ini. nKn(x,y)
Aryeh
Memang, Anda benar bahwa versi unary dapat dihitung. Saya masih bertanya-tanya betapa sederhananya rumus untuk x dan y yang diberikan.
domotorp
Pengurangan yang Anda gunakan adalah buggy: x dan y dapat diterima oleh automata yang sama dan berakhir di keadaan yang sama sekali berbeda, pada kenyataannya, mereka hanya dapat berbagi keadaan awal di jalur mereka, yang berlaku untuk semua string.
amnn
@ amnn: Sudah tiga tahun sejak saya menulis ini, tetapi bukankah para ketiga jawaban saya menjelaskan mengapa saya hanya berurusan dengan berakhir di negara yang sama?
domotorp
0

Saya mungkin sangat kehilangan intinya tetapi Anda menyatakan bahwa sudah diperbaiki, sehingga semua DFA dengan ukuran itu dapat dianggap sudah dikomputasi dan disimpan dalam format yang mudah disimulasikan. Hitung K sebagai berikut:nK

Pada input , y di mana x , y Σ xyx,yΣ

  1. simpan dan yxy
  2. inisialisasi penghitung ke 0c0
  3. untuk masing-masing Anda DFAsn2n2n
  4. Sebuah. simulasikan pada kedua kata (langkah ini adalah )O(|xy|)

    b. kenaikan jika kedua simulasi berjalan menerimac

  5. output c

Secara keseluruhan, perhitungan memiliki kompleksitas linier. Jawabannya sangat berbeda untuk .K(n,x,y)

Kai
sumber
3
Jelas mencoba semua mesin akan berhasil. Aryeh ingin tahu apakah ada, mungkin, algoritma waktu polinomial atau hasil kekerasan.
Lev Reyzin
Sebenarnya ini adalah waktu polinomial dalam input, jika n bukan bagian dari input, itulah yang dikatakan Kai. Tetapi pertanyaannya jelas berbeda.
domotorp
4
n
1
Benar, terima kasih sudah menunjukkan celahnya, Kai. Sudah diperbaiki :)
Aryeh