Dado dois conjuntos de cadeias sobre o alfabeto Σ , podemos calcular o menor autômato de estado finito determinístico (DFA) M de modo que A ⊆ L ( M ) e L ( M ) ⊆ Σ ∗ ∖ B ?
Em outras palavras, representa um conjunto de exemplos positivos. Cada sequência em A precisa ser aceita pelo DFA. B representa um conjunto de exemplos negativos. Nenhuma sequência em B deve ser aceita pelo DFA.
Existe uma maneira de resolver isso, talvez usando técnicas de minimização do DFA ? Eu poderia imaginar a criação de um autômato semelhante ao DFA que possui três tipos de estados: aceitar estados, rejeitar estados e "não se importa" (qualquer entrada que termine em um "não se importa" pode ser aceita ou rejeitado). Mas podemos encontrar uma maneira de minimizar isso para um DFA comum?
Você pode pensar nisso como o problema de aprender um DFA, dados exemplos positivos e negativos.
Isso é inspirado no regex golf NP-Complete? , que faz perguntas semelhantes para regexps em vez de DFAs.