Estou pensando no seguinte problema: Quero encontrar uma expressão regular que corresponda a um conjunto específico de cadeias de caracteres (por exemplo, endereços de email válidos) e não a outros (endereços de email inválidos).
Suponha que por expressão regular queremos dizer alguma máquina de estado finito bem definida, que eu não conheço a terminologia exata, mas vamos concordar com alguma classe de expressões permitidas.
Em vez de criar manualmente a expressão, quero dar a ela um conjunto de exemplos positivos e um conjunto de exemplos negativos.
Em seguida, deve aparecer uma expressão que corresponda aos +, rejeite os - e é mínima em algum sentido bem definido (número de estados nos autômatos?).
Minhas perguntas são:
- Este problema foi considerado, como pode ser definido de alguma maneira mais concreta e pode ser resolvido com eficiência? Podemos resolvê-lo em tempo polinomial? É NP completo, podemos aproximar de alguma forma? Para quais classes de expressões isso funcionaria? Eu apreciaria qualquer indicação de livros, artigos ou outros que discutam esse tópico.
- Isso está relacionado de alguma forma à complexidade de Kolmogorov?
- Isso está relacionado de alguma forma ao aprendizado? Se a expressão regular é consistente com meus exemplos, em virtude de ser mínima, podemos dizer algo sobre seu poder de generalização em exemplos ainda não vistos? Que critério de minimalidade seria mais adequado para isso? Qual seria mais eficiente? Isso tem alguma conexão com o aprendizado de máquina? Novamente, qualquer ponteiro seria útil ...
Desculpe pela pergunta confusa ... Aponte-me na direção certa para descobrir isso. Obrigado !
fonte
Respostas:
Em relação à pergunta de aprendizado: Kearns e Valiant provaram que você pode codificar o RSA em um DFA. Portanto, mesmo que os exemplos rotulados venham da distribuição uniforme, ser capaz de generalizar para exemplos futuros (também provenientes da distribuição uniforme) quebraria o RSA. Portanto, pensamos que, na pior das hipóteses, ter exemplos rotulados não ajuda no aprendizado de um DFA (no modelo PAC). Este é um dos resultados clássicos de dureza criptográfica para aprendizado.
Ambas as questões estão entrelaçadas devido ao que chamamos de Teorema da Navalha de Occam . Basicamente, afirma que, se tivermos um procedimento para encontrar a menor hipótese de uma determinada classe que seja consistente com uma amostra rotulada por uma hipótese da mesma classe, então o PAC poderá aprender essa classe. Portanto, dado o resultado da dureza RSA, esperamos que encontrar o menor DFA consistente seja difícil em geral!
Para adicionar um resultado positivo de aprendizado, Angluin mostrou que você pode aprender um DFA se criar seus próprios exemplos, mas isso requer o poder adicional de poder perguntar "minha hipótese atual está correta?" Este também foi um artigo seminal na aprendizagem.
Para responder sua outra pergunta, tudo isso está realmente relacionado à complexidade de Kolmogorov, pois o problema de aprendizado se torna mais fácil quando a representação canônica do DFA de destino tem baixa complexidade.
fonte
Eu respondo os aspectos relacionados à aprendizagem da pergunta.
Esse problema parece ser chamado de "aprendizado do DFA" na literatura.
Gold [Gol78] mostrou que é NP-completo decidir, dados k ∈ℕ e dois conjuntos finitos P e N de cadeias, se existe um autômato determinístico de estado finito (DFA) com no máximo k estados que aceita cada cadeia em P e nenhuma das cordas em N . O artigo [PH01] parece discutir problemas relacionados a essa motivação (pode haver muito mais; isso surgiu quando tentei encontrar artigos relevantes com o Google).
Referências
[Gol78] E Mark Gold. Complexidade da identificação de autômatos a partir de dados fornecidos. Information and Control , 37 (3): 302–320, junho de 1978. http://dx.doi.org/10.1016/S0019-9958(78)90562-4
[PH01] Rajesh Parekh e Vasant Honavar. Aprendendo o DFA com exemplos simples. Machine Learning , 44 (1–2): 9–35, julho de 2001. http://www.springerlink.com/content/kr2501h2442l8mk1/ http://www.cs.iastate.edu/~honavar/Papers/parekh- dfa.pdf
fonte
Ao longo desta discussão, assumiu-se que encontrar uma expressão regular mínima equivale a encontrar um FSM mínimo que reconheça o idioma, mas essas são duas coisas diferentes. Se bem me lembro, um DFA pode ser minimizado em tempo polinomial, enquanto que encontrar uma expressão regular mínima que represente uma determinada linguagem regular é difícil para o PSPACE. Este último é um daqueles resultados que pertencem ao folclore da Teoria dos Autômatos, mas cuja prova não pode ser encontrada em lugar algum. Eu acho que é declarado como um exercício no livro de Papadimitrou.
fonte
Veja também este post de estouro de pilha. O livro que você procura parece ser Introdução à Teoria da Computação, de Michael Sipser.
Você está fazendo algumas perguntas diferentes, portanto, faça uma de cada vez:
Não, não é. O post Stack Overflow discute um algoritmo n ^ 2 ingênuo para reduzir um FSM ao tamanho mínimo. (Trabalhando para trás a partir de estados de parada, combine estados que são "idênticos" em um sentido preciso.)
Aparentemente (não segui o link), existe um algoritmo n log n para fazer isso.
Conforme você o formulou, seu conjunto de treinamento descreve um idioma finito . Os idiomas finitos são mapeados trivialmente para um FSM - crie um conjunto linear de estados que terminam em um estado de parada para cada sequência no seu idioma, sem a necessidade de loop. Em seguida, execute o algoritmo de minimização do FSM na máquina resultante.
Eu não diria isso. Minimizar o FSM não muda seu poder discriminativo - esse é o ponto. O FSM mínimo aceita exatamente o conjunto de seqüências de caracteres como qualquer FSM não mínimo equivalente.
Em geral, expressões regulares não são adequadas para classificar novos dados. Para qualquer conjunto de treinamento finito, você receberá um RE / FSM que corresponde apenas aos exemplos positivos nesse conjunto, sem capacidade de generalizar para novos dados. Nunca vi uma abordagem que tente encontrar uma linguagem regular infinita que corresponda a algum corpus de treinamento.
Para aprendizado de máquina, você procuraria algo como um classificador Bayes ingênuo, árvore de decisão, rede neural ou algo mais exótico. A Inteligência Artificial de Russell e Norvig : Uma Abordagem Moderna é um lugar tão bom quanto qualquer outro para encontrar uma visão geral das técnicas de aprendizado de máquina (e muito, muito mais).
fonte