Dalam makalah seminalinya tahun 1987, Dana Angluin menyajikan algoritma waktu polinomial untuk mempelajari DFA dari pertanyaan keanggotaan dan pertanyaan teori (contoh tandingan terhadap proposal DFA).
Dia menunjukkan bahwa jika Anda mencoba mempelajari DFA minimal dengan status, dan contoh balasan terbesar Anda adalah panjang , maka Anda perlu membuat kueri keanggotaan dan paling banyak teori-kueri.m O ( m n 2 ) n - 1
Apakah ada peningkatan signifikan pada jumlah pertanyaan yang diperlukan untuk mempelajari satu set reguler?
Referensi dan Pertanyaan Terkait
Dana Angluin (1987) "Mempelajari Kumpulan Reguler dari Kueri dan Tandingan", Infortmation and Computation 75: 87-106
Batas bawah untuk belajar dalam kueri keanggotaan dan model kontra-contoh
algorithms
learning-theory
machine-learning
Artem Kaznatcheev
sumber
sumber
Jawaban:
Dalam jawabannya di cstheory.SE, Lev Reyzin mengarahkan saya ke tesis Robert Schapire yang meningkatkan keterikatan dengan pertanyaan keanggotaan di bagian 5.4.5. Jumlah kueri counterexample tetap tidak berubah. Algoritma yang digunakan Schapire berbeda dalam apa yang dikerjakannya setelah kueri berulang kali.O ( n2+ n logm )
Sketsa perbaikan
Pada level tertinggi, Schapire memaksa dari algoritma Angluin untuk memiliki kondisi ekstra yaitu untuk yang tertutup ( S , E , T ) dan masing-masing s 1 , s 2 ∈ S jika s 1 ≠ s 2 lalu r o w ( s 1 ) ≠ r o w ( s 2 ) . Ini menjamin bahwa | S |( S, E, T) ( S, E, T) s1, s2∈ S s1≠ s2 r o w ( s1) ≠ r o w ( s2) dan juga membuatpropertikonsistensidari algoritma Angluin sepele untuk dipenuhi. Untuk memastikan hal ini, ia harus menangani hasil dari sebuah sampel tandingan secara berbeda.| S| ≤n
Mengingat counterexample , Angluin hanya menambahkan z dan semua prefiks untuk S . Schapire melakukan sesuatu yang lebih halus oleh bukannya menambahkan satu elemen e untuk E . E baru ini akan membuat ( S , E , T ) menjadi tidak tertutup dalam pengertian Angluin dan pembaruan untuk mendapatkan penutupan dengan memperkenalkan setidaknya satu string baru ke S sambil menjaga semua baris berbeda. Kondisi pada e adalah:z z S e E e ( S, E,T) S e
Di mana adalah fungsi output, q 0 adalah status awal, dan δ aturan pembaruan dari DFA 'tidak dikenal' yang sebenarnya. Dengan kata lain, e harus berfungsi sebagai saksi untuk membedakan masa depan s dari s ′ a .Hai q0 δ e s s′Sebuah
Untuk mengetahui ini dari z, kami melakukan pencarian biner untuk mencari substring r i sedemikian rupa sehingga z = p i r i dan 0 ≤ | p i | = i < | z | sedemikian rupa sehingga perilaku mesin dugaan kami berbeda berdasarkan pada satu karakter input. Secara lebih rinci, kita membiarkan s i menjadi string yang sesuai dengan keadaan yang dicapai dalam mesin dugaan kita dengan mengikuti p i . Kami menggunakan pencarian biner (ini adalah tempat log me z rsaya z= psayarsaya 0 ≤ | halsaya| =i< |z| ssaya halsaya logm berasal dari) untuk menemukan sedemikian sehingga o ( δ ( q 0 , s k r k ) ) ≠ o ( δ ( q 0 , s k + 1 r k + 1 ) . Dengan kata lain, r k + 1 membedakan dua menyatakan bahwa mesin menduga kami menemukan setara dan dengan demikian memenuhi kondisi pada e , jadi kami menambahkannya ke E .k o ( δ( q0, skrk) ) ≠ o ( δ( q0, sk + 1rk + 1) rk + 1 e E
sumber
Saya tidak tahu apakah jawaban saya masih relevan. Baru-baru ini telah dijelaskan implementasi algoritma baru yang disebut Paket Pengamatan atau dalam beberapa keadaan Pohon Diskriminasi oleh Falk Howar. Algoritma ini seperti L * tetapi menggunakan Rivest-Shapire atau metode lain (lihat Steffen dan Isberner) untuk menangani dekomposisi counterexample; dan menggunakan struktur data, pohon diskriminasi (pohon biner) untuk membuat efisien "sift" yaitu penyisipan transisi-A (di mana A adalah setiap simbol alfabet) dari keadaan baru yang ditemukan hingga tidak ada penutupan. . Algoritma ini ada dalam dua versi: OneGlobally dan OneLocally sesuai dengan apakah sufiks yang ditemukan dalam dekomposisi ditambahkan ke masing-masing komponen atau tidak (rasio di balik algoritma adalah bahwa semua awalan dalam komponen setara dengan awalan pendek dan mewakili keadaan yang sama dalam target sesuai dengan akhiran yang ditemukan saat ini. Kemudian dengan counterexample baru akhiran baru ditemukan yang membedakan setidaknya 2 awalan dari komponen yang sama. Hal ini menyebabkan perpecahan komponen itu dalam dua komponen). Dengan OneLocally ada kueri keanggotaan yang jauh lebih sedikit tetapi jumlah kueri kesetaraan dapat meningkat secara drastis dengan DFA target besar. Sebaliknya OneGlobally memiliki jumlah kueri keanggotaan yang selalu lebih rendah dari L * (tetapi lebih besar dari OneLocally) dan jumlah kueri setara yang serupa dengan L * Kemudian dengan counterexample baru ditemukan suffix baru yang membedakan setidaknya 2 prefix dari komponen yang sama. Ini menyebabkan pemisahan komponen itu menjadi dua komponen). Dengan OneLocally ada kueri keanggotaan yang jauh lebih sedikit tetapi jumlah kueri kesetaraan dapat meningkat secara drastis dengan DFA target besar. Sebaliknya OneGlobally memiliki jumlah kueri keanggotaan yang selalu lebih rendah dari L * (tetapi lebih besar dari OneLocally) dan jumlah kueri setara yang serupa dengan L * Kemudian dengan counterexample baru ditemukan suffix baru yang membedakan setidaknya 2 prefix dari komponen yang sama. Ini menyebabkan pemisahan komponen itu menjadi dua komponen). Dengan OneLocally ada kueri keanggotaan yang jauh lebih sedikit tetapi jumlah kueri kesetaraan dapat meningkat secara drastis dengan DFA target besar. Sebaliknya OneGlobally memiliki jumlah kueri keanggotaan yang selalu lebih rendah dari L * (tetapi lebih besar dari OneLocally) dan jumlah kueri setara yang serupa dengan L *
Saya tahu ada juga algoritma lain: Algoritma TTT yang lebih baik dari Paket Observasi juga, tetapi saya tidak memiliki pengetahuan yang baik tentang itu. AlgoritmaTTT haruslah canggih
sumber