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∈ Ss1≠ s2r 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:zzSeEe( S, E,T)Se
∃ s , s′∈S, a ∈ Σstr o w ( s ) = r o w ( s′Sebuah )dano ( δ( q0, s e ) ) ≠ o ( δ( q0, s′a 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 .Haiq0δess′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 mezrsayaz= psayarsaya0 ≤ | halsaya| =i< |z|ssayahalsayalogmberasal 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 .ko ( δ( q0, skrk) ) ≠ o ( δ( q0, sk + 1rk + 1)rk + 1eE