Trovare l'espressione regolare minima è un problema NP-completo?


43

Sto pensando al seguente problema: voglio trovare un'espressione regolare che corrisponda a un determinato insieme di stringhe (ad esempio indirizzi e-mail validi) e non corrisponda ad altri (indirizzi e-mail non validi).

Supponiamo che per espressione regolare intendiamo una macchina a stati finiti ben definita, non ho familiarità con la terminologia esatta, ma concordiamo su una classe di espressioni consentite.

Invece di creare manualmente l'espressione, voglio dargli una serie di esempi positivi e una serie di esempi negativi.

Dovrebbe quindi venire con un'espressione che corrisponda a +, respinga - ed è minima in un certo senso ben definito (numero di stati negli automi?).

Le mie domande sono:

  • È stato considerato questo problema, come può essere definito in modo più concreto e può essere risolto in modo efficiente? Possiamo risolverlo in tempo polinomiale? NP è completo, possiamo approssimarlo in qualche modo? Per quali classi di espressioni avrebbe funzionato? Gradirei qualsiasi puntatore a libri di testo, articoli o simili che trattano questo argomento.
  • Ciò è in qualche modo collegato alla complessità di Kolmogorov?
  • Questo è in qualche modo legato all'apprendimento? Se l'espressione regolare è coerente con i miei esempi, in quanto è minima, possiamo dire qualcosa sul suo potere di generalizzazione su esempi ancora invisibili? Quale criterio per la minimalità sarebbe più adatto a questo? Quale sarebbe più efficiente? Questo ha qualche connessione con l'apprendimento automatico? Ancora una volta, qualsiasi puntatore sarebbe utile ...

Ci scusiamo per la domanda disordinata ... Indicami la giusta direzione per capirlo. Grazie !


2
La pagina seguente sembra molto rilevante per l'aspetto di apprendimento della domanda: people.dsv.su.se/~henke/ML/MERLIN.html
Tsuyoshi Ito

1
… o forse no. Sembra che ci siano comunque molti lavori sull'apprendimento di DFA.
Tsuyoshi Ito,

2
Questa domanda è stata recentemente discussa sul blog della community .
Aaron Sterling,

Risposte:


39

Sì, è NP-Hard. Pitt e Warmuth dimostrato che trovare il più piccolo DFA coerente con un dato campione non può essere approssimata entro OPTk per qualsiasi costante k , salvo P=NP .

Per quanto riguarda la domanda di apprendimento: Kearns e Valiant hanno dimostrato che puoi codificare RSA in un DFA. Quindi, anche se gli esempi etichettati provengono dalla distribuzione uniforme, essere in grado di generalizzare a esempi futuri (anche provenienti anche dalla distribuzione uniforme) romperebbe RSA. Quindi, pensiamo che nel peggiore dei casi, avere esempi etichettati non aiuta con l'apprendimento di un DFA (nel modello PAC). Questo è uno dei classici risultati di durezza crittografica per l'apprendimento.

Entrambi questi problemi sono intrecciati a causa di quello che chiamiamo Teorema del rasoio di Occam . Sostanzialmente afferma che se abbiamo una procedura per trovare la più piccola ipotesi da una data classe che è coerente con un campione etichettato da un'ipotesi della stessa classe, allora possiamo PAC imparare quella classe. Quindi, dato il risultato di durezza RSA, ci aspetteremmo che trovare il DFA coerente più piccolo sia difficile in generale!

Per aggiungere un risultato di apprendimento positivo, Angluin ha dimostrato che puoi imparare un DFA se riesci a inventare i tuoi esempi, ma richiede che il potere aggiuntivo sia in grado di chiedere "è la mia attuale ipotesi corretta?" Questo era anche un documento fondamentale sull'apprendimento.

Per rispondere alla tua altra domanda, tutto ciò è in effetti legato alla complessità di Kolmogorov, poiché il problema di apprendimento diventa più facile quando la rappresentazione canonica del DFA target ha una bassa complessità.


3
Mi hai battuto con un risultato più recente e più forte! Dovresti pubblicare una risposta migliore in seguito !! 1 !!
Tsuyoshi Ito,

Oops scusa! Ho trascorso abbastanza tempo sull'apprendimento di DFA che ho dovuto saltare a questo :)
Lev Reyzin

1
Nel caso, stavo scherzando nel mio commento precedente. Ovviamente sono felice di vedere una risposta migliore!
Tsuyoshi Ito,

1
quindi, in altre parole, la differenza chiave tra questo problema e la minimizzazione regolare dei DFA è la presenza di esempi negativi, sì?
Suresh Venkat,

1
Non capisco. senza esempi negativi, il dfa coerente più piccolo ha solo 1 stato - lo stato di accettazione che punta a se stesso ...
Lev Reyzin

13

Rispondo agli aspetti relativi all'apprendimento della domanda.

Questo problema sembra essere chiamato "apprendimento DFA" in letteratura.

Gold [Gol78] ha mostrato che NP è completo per decidere, dati k ∈ℕ e due insiemi finiti P e N di stringhe, se esiste un automa deterministico a stati finiti (DFA) con al massimo k stati che accetta ogni stringa in P e nessuna delle stringhe in N . L'articolo [PH01] sembra discutere dei problemi relativi a questa motivazione (potrebbero essercene molti altri; questo è appena emerso quando ho cercato di trovare documenti pertinenti con Google).

Riferimenti

[Gol78] E Mark Gold. Complessità dell'identificazione dell'automa da dati dati. Informazione e controllo , 37 (3): 302–320, giugno 1978. http://dx.doi.org/10.1016/S0019-9958(78)90562-4

[PH01] Rajesh Parekh e Vasant Honavar. Imparare DFA da semplici esempi. Machine Learning , 44 (1–2): 9–35, luglio 2001. http://www.springerlink.com/content/kr2501h2442l8mk1/ http://www.cs.iastate.edu/~honavar/Papers/parekh- dfa.pdf


1
Grazie per la risposta, sto guardando i riferimenti. Posso votare più di una delle migliori risposte su questo sito? :) Ancora una volta, sono imbarazzato di aver perso l'intero sottocampo "DFA learning", anche se ho studiato l'apprendimento automatico per anni.
László Kozma,

@steve: puoi accettare una sola risposta, ma puoi votare tutte le risposte che vuoi.
Jukka Suomela,

2
Si noti che [Gold78] afferma anche che DFA può essere appreso in tempi polinomiali (all'interno del framework di apprendimento dell'identificazione nel limite). Vedi anche il recente libro sull'Inferenza grammaticale ( pagesperso.lina.univ-nantes.fr/~cdlh/book_webpage.html ) per una panoramica.
mgalle

@mgalle: grazie per le informazioni aggiuntive.
Tsuyoshi Ito,

8

Durante questa discussione, si è ipotizzato che trovare un'espressione regolare minima equivale a trovare un FSM minimo che riconosca la lingua, ma queste sono due cose diverse. Se ricordo bene, un DFA può essere minimizzato in tempi polinomiali, mentre trovare un'espressione regolare minima che rappresenti un determinato linguaggio regolare è difficile per PSPACE. Quest'ultimo è uno di quei risultati che appartengono al folklore della teoria degli automi, ma la cui prova non può essere trovata da nessuna parte. Penso che sia indicato come un esercizio nel libro di Papadimitrou.


1
È corretto che la lunghezza dell'espressione regolare e il numero di stati in DFA siano diverse funzioni oggettive. Ho risposto alla minimizzazione di DFA perché ha una proprietà più bella (ad esempio, esiste un DFA univoco con il numero minimo di stati) e dal modo in cui è stata formulata la domanda ho avuto l'impressione che l'esatta funzione obiettivo fosse flessibile.
Tsuyoshi Ito,

Commento casuale: dato che un'espressione regolare di dimensione f (n) può essere simulata da un NFA di dimensione O (f (n)), minimizzare le espressioni regolari è più come minimizzare gli NFA, che è ovviamente più difficile.
Hsien-Chih Chang 張顯 之 il

parte di questo è indirizzata nei commenti alla risposta di @ keith
Lev Reyzin

2

Vedi anche questo post di overflow dello stack. Il libro che stai cercando sembra essere Introduzione alla teoria del calcolo di Michael Sipser.

Stai ponendo un paio di domande diverse, quindi prendile una alla volta:

Is finding a minimal Finite State Machine for a language L NP-complete?

No non lo è. Il post Stack Overflow discute un ingenuo algoritmo n ^ 2 per ridurre un FSM alla sua dimensione minima. (Lavorando all'indietro dagli stati di arresto, combinare stati che sono "identici" in un senso preciso.)

Apparentemente (non ho seguito il link), c'è un algoritmo n log per farlo.

I have a training set of strings, how do I find the minimal FSM 
that separates the good examples from the bad?

Mentre lo hai definito, il tuo set di allenamento descrive un linguaggio finito . Linguaggi finiti banalmente associati a un FSM: crea un insieme lineare di stati che termina in uno stato di arresto per ogni stringa nella tua lingua, non è richiesto il looping. Quindi, eseguire l'algoritmo di minimizzazione di FSM sulla macchina risultante.

Is this a good way to build a classifier?

Non lo direi. Ridurre al minimo il FSM non cambia il suo potere discriminante - questo è una specie di punto. L'FSM minimo accetta esattamente l'insieme di stringhe come qualsiasi FSM equivalente non minimo.

In generale, le espressioni regolari non sono adatte per classificare nuovi dati. Per qualsiasi set di addestramento finito, otterrai un RE / FSM che corrisponde solo agli esempi positivi in ​​quel set, senza possibilità di generalizzare a nuovi dati. Non ho mai visto un approccio che tenti di trovare un linguaggio regolare infinito che corrisponda a un corpus di allenamento.

Per l'apprendimento automatico, dovresti cercare qualcosa come un ingenuo classificatore Bayes, un albero decisionale, una rete neurale o qualcosa di più esotico. L'intelligenza artificiale di Russell e Norvig : un approccio moderno è il posto giusto per trovare una panoramica delle tecniche di apprendimento automatico (e molto altro ancora).


2
Non sono d'accordo con questa risposta. Se prendi semplicemente tutti gli esempi positivi e costruisci un FSM che accetta solo quegli esempi e nient'altro, il tuo FSM potrebbe essere enorme. D'altra parte, il più piccolo FSM che accetta tutti gli esempi positivi e nessun esempio negativo potrebbe essere molto più piccolo.
Jukka Suomela,

3
Penso che la domanda originale lo abbia reso abbastanza chiaro: "un'espressione che corrisponde ai +, rifiuta quelli - ed è minima in un senso ben definito".
Jukka Suomela,

5
@keith la distinzione tra la tua risposta e la mia è abbastanza sottile. quando costruisci il tuo dfa, creando nuovi stati per ogni stringa nell'esempio, ti impegni in una lingua possibilmente diversa da quella rappresentata dal minimo dfa che separa gli esempi positivi e negativi. quindi l'algoritmo per generare un dfa e poi minimizzarlo purtroppo non lo fa!
Lev Reyzin

1
Non sono sicuro di aver capito questa distinzione. Se abbiamo una serie di esempi positivi e negativi, abbiamo una famiglia di lingue che soddisfano tutti questi vincoli. per ognuno c'è un (set di) df minimali. Finché restituisco un DFA di dimensioni minime, che importanza ha tra queste lingue che scelgo.
Suresh Venkat,

1
Per l'apprendimento, vuoi scegliere il DFA più piccolo perché ha la migliore capacità di generalizzazione. La procedura di @ kieth non selezionerà il minimo DFA in tutte queste lingue, solo la più piccola per la lingua che si impegna a utilizzare la sua procedura.
Lev Reyzin
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.