Digamos que um tenha um idioma , mas não se sabe quais strings são realmente parte do idioma. Tudo o que se tem é uma vista finita da língua: um conjunto finito de cordas Um ⊆ L que são conhecidos por estar na língua, e um conjunto finito de cadeias B ⊆ ( Σ * ∖ G ) que são conhecidos por não ser no língua.
Por exemplo, digamos que eu tenho a e B = { b , a um b , um a um b um } . Eu posso ter o idioma L = { a 2 i + 1 b j | i , j ∈ N } , já que Ae são consistentes com L , ou eu posso ter um idioma completamente diferente.
Minha pergunta é: existe uma maneira conhecida de criar um DFA (autômato finito determinístico) que aceite as seqüências de caracteres em e rejeite as seqüências de caracteres em B , com um número mínimo ou quase mínimo de estados? Qual é a complexidade desse problema? Quão bom é aproximar-se de L (supondo que L tenha uma complexidade descritiva bastante baixa e A e B sejam grandes)?
Pergunta original em math.stackexchange.com. Decidi republicar aqui depois de não obter respostas para a pergunta original e sem ter idéia de onde procurá-las. Se alguém pudesse me indicar uma pesquisa nessa área, seria muito apreciada.