Ci sono miglioramenti nell'algoritmo di Dana Angluin per l'apprendimento di serie regolari


33

Nel suo seminario del 1987 Dana Angluin presenta un algoritmo temporale polinomiale per l'apprendimento di un DFA da domande di appartenenza e domande di teoria (controesempi a un DFA proposto).

Mostra che se stai cercando di imparare un DFA minimo con stati, e il tuo più grande esempio di countex è di lunghezza m , allora devi fare O ( m n 2 ) domande di appartenenza e al massimo n - 1 domande di teoria.nmO(mn2)n1

Sono stati apportati miglioramenti significativi al numero di query necessarie per apprendere una serie regolare?


Riferimenti e domande correlate


Speriamo che @DominikFreydenberger passi ad un certo punto in futuro. Lo saprà.
Raffaello

2
Sospetto che anche @LevReyzin conoscesse la risposta ... ed era per questo che inizialmente avevo pensato di chiedere su cstheory, ma credo che dovrei aiutare a far crescere questo nuovo sito.
Artem Kaznatcheev,

Non è una risposta alla domanda, ma può ancora essere utile: [ citeulike.org/user/erelsegal-halevi/article/9275508 Un kernel universale per l'apprendimento delle lingue regolari]
Erel Segal-Halevi

grazie per il link @Erel, ma non capisco come si collega. Il kernel universale di Kontorovich non è calcolabile in modo efficiente e il modello di apprendimento non ha controesempi.
Artem Kaznatcheev,

Risposte:


15

O(n2+nlogm)


Schizzo del miglioramento

(S,E,T)(S,E,T)s1,s2Ss1s2row(s1)row(s2)|S|n

zzSeEe(S,E,T)Se

s,sS,aΣs.trow(s)=row(sa)ando(δ(q0,se))o(δ(q0,sae))

oq0δessa

ezriz=piri0|pi|=i<|z|sipilogmko(δ(q0,skrk))o(δ(q0,sk+1rk+1)rk+1eE


5

Non so se la mia risposta è ancora pertinente. Recentemente è stata descritta l'implementazione di un nuovo algoritmo chiamato Observation Pack o in alcune circostanze Discrimination Tree di Falk Howar. Questo algoritmo è come L * ma usa Rivest-Shapire o un altro metodo (vedi Steffen e Isberner) per gestire la decomposizione del controesempio; e utilizza una struttura di dati, un albero di discriminazione (un albero binario) per rendere efficacemente un "setaccio", vale a dire l'inserimento di una transizione A (dove A è ogni simbolo dell'alfabeto) di un nuovo stato trovato fino a quando non c'è chiusura . Questo algoritmo esiste in due versioni: OneGlobally e OneLocally a seconda che il suffisso fondato nella decomposizione venga aggiunto o meno a ciascun componente (il rapporto dietro l'algoritmo è che tutti i prefissi in un componente sono equivalenti a un prefisso breve e rappresentano lo stesso stato nella destinazione in base ai suffissi trovati in questo momento. Più tardi con un nuovo controesempio viene trovato un nuovo suffisso che discrimina almeno 2 prefissi di uno stesso componente, causando una divisione di quel componente in due componenti). Con OneLocally ci sono molte meno richieste di appartenenza, ma il numero di query di equivalenza può aumentare drasticamente con DFA target di grandi dimensioni. Piuttosto OneGlobally ha un numero di query di appartenenza sempre inferiore a L * (ma maggiore di OneLocally) e un numero simile di query di equivalenza rispetto a L * Successivamente con un nuovo controesempio viene trovato un nuovo suffisso che discrimina almeno 2 prefissi di uno stesso componente. Ciò causa una divisione di quel componente in due componenti). Con OneLocally ci sono molte meno richieste di appartenenza, ma il numero di query di equivalenza può aumentare drasticamente con DFA target di grandi dimensioni. Piuttosto OneGlobally ha un numero di query di appartenenza sempre inferiore a L * (ma maggiore di OneLocally) e un numero simile di query di equivalenza rispetto a L * Successivamente con un nuovo controesempio viene trovato un nuovo suffisso che discrimina almeno 2 prefissi di uno stesso componente. Ciò causa una divisione di quel componente in due componenti). Con OneLocally ci sono molte meno richieste di appartenenza, ma il numero di query di equivalenza può aumentare drasticamente con DFA target di grandi dimensioni. Piuttosto OneGlobally ha un numero di query di appartenenza sempre inferiore a L * (ma maggiore di OneLocally) e un numero simile di query di equivalenza rispetto a L *

So che esiste anche un altro algoritmo: l'algoritmo TTT che è migliore anche di Observation Pack ma non ne ho una buona conoscenza. L'algoritmo TT dovrebbe essere lo stato dell'arte


Grazie per questa risposta! Hai un riferimento cartaceo per l'algoritmo Howar e per TTT?
Artem Kaznatcheev,

Questo per il link del pacchetto di osservazione Howar e questo per il link dell'algoritmo di TTT TTT Puoi trovare l'implementazione in LearLib (il pacchetto di osservazione è chiamato lì Discrimination Tree)
Umbert
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.