Apa algoritma yang baik untuk menghasilkan DFA acak?

9

Saya membuat DFA acak untuk menguji algoritma reduksi DFA.

Algoritma yang saya gunakan saat ini adalah sebagai berikut: untuk setiap status , untuk setiap simbol dalam alfabet , tambahkan \ delta (q, c) ke beberapa keadaan acak. Setiap negara bagian memiliki probabilitas yang sama untuk menjadi negara bagian terakhir.qcδ(q,c)

Apakah ini metode yang baik untuk menghasilkan DFA yang tidak bias? Juga, algoritma ini tidak menghasilkan trim DFA (DFA tanpa status usang) jadi saya bertanya-tanya apakah ada cara yang lebih baik untuk menghasilkan DFA acak yang entah bagaimana dapat memastikan bahwa itu trim?

Duncan
sumber
2
Tidak ada distribusi alami DFA acak, jadi terserah Anda. Apa yang ingin kamu capai?
Yuval Filmus
Saya membuat DFA acak untuk menguji algoritma reduksi DFA.
Duncan
Mungkin Anda ingin memulai dari satu set DFA minimal dan meledakkannya? Dengan begitu Anda tahu bahwa minimalisasi benar-benar sampai pada hasil yang tepat.
adrianN
bertanya-tanya, apakah Anda menguji algoritma reduksi yang tidak optimal atau apakah ia menemukan DFA optimal minimal yang unik?
vzn
2
Jika Anda membuat struktur data untuk pengujian, tidak memihak tidak penting. Yang penting adalah memiliki peluang bagus untuk memicu perilaku menarik. Untuk mengambil analogi, ketika Anda menguji algoritma geometris, Anda perlu memastikan bahwa beberapa tes Anda akan memiliki tiga poin yang selaras dan hal-hal lain yang tidak akan pernah terjadi dalam distribusi acak.
Gilles 'SO- berhenti bersikap jahat'

Jawaban:

6

Lihat [1] dan diskusi di Bagian 4, Generasi Automata Acak. Makalah ini menandai berbagai algoritma minimalisasi DFA. Generator acak yang seragam digunakan yang menghasilkan representasi string kanonik dari DFA lengkap dengan state dan simbol . Mereka juga membahas metode lain.nk


[1] Almeida, M., Moreira, N., & Reis, R. (2007). Pada kinerja algoritma minimisasi automata. Logika dan Teori Algoritma, 3.

Juho
sumber
Apa yang dimaksud dengan "representasi string kanonik"?
Duncan
@drowse Urutan kanonik didefinisikan atas set negara dengan melintasi otomat dengan cara pertama-lebar memilih pada setiap node keluar menggunakan urutan (total) dari . Lihat referensi di koran. Σ
Juho
4

Anda harus melihat beranda Cyril Nicaud . Secara khusus, referensi berikut ini relevan dengan pertanyaan Anda:

F. Bassino, J. David dan C. Nicaud, Enumerasi dan generasi acak dari automata deterministik yang mungkin tidak lengkap, Matematika Murni dan Aplikasi 19 (2-3) (2009) 1-16.

F. Bassino dan C. Nicaud. Pencacahan dan Pembuatan Acak Automata yang Dapat diakses. Teor Comp. Sc. . 381 (2007) 86-104.

J.-E. Pin
sumber
3

Ada algoritma untuk secara acak menghasilkan DFA hingga permutasi http://paranthoen.thomas.free.fr/PAPERS/RandDFAToAppearInTCS.ps.gz .

Tetapi, juga disebutkan dalam makalah di atas bahwa hampir semua DFA sudah minimal. DFA non-minimal seperti bilangan prima ... hanya ada beberapa. Dan jika Anda menggunakan algoritma ini untuk menguji algoritma minimisasi, akan seperti jika Anda menguji suatu algoritma pada bilangan prima dengan generator angka acak sederhana. Untuk memiliki lebih banyak DFA yang tidak minimal, Anda dapat mengubah algoritme dengan menambahkan keadaan wastafel, dan mengarahkan kembali persentase penting dari transisi ke keadaan tenggelam ini.

Tetapi dari sudut pandang saya, jika Anda ingin menguji kecepatan implementasi Anda, periksa apakah Anda ingin menggunakannya: dengan set kata acak atau REGEX acak, buat NFA atau DFA, dan kemudian meminimalkan DFA yang dihasilkan .

Thomas
sumber
2

hal=1/nnadalah jumlah node dalam grafik. namun strategi Anda, atau Erdos-Renyi, tidak menjamin bahwa semua status di DFA terhubung [kendala alami untuk ditambahkan].

vzn
sumber
1
FYI: cs.stackexchange.com/review/suggested-edits/6609
Gilles 'SO- berhenti menjadi jahat'
(v1,b,v2)v1v2b