Étant donné deux ensembles de chaînes sur l'alphabet , pouvons-nous calculer le plus petit automate déterministe à états finis (DFA) tel que et ?
En d'autres termes, représente un ensemble d'exemples positifs. Chaque chaîne de doit être acceptée par le DFA. représente un ensemble d'exemples négatifs. Aucune chaîne en ne doit être acceptée par le DFA.
Existe-t-il un moyen de résoudre ce problème, peut-être en utilisant des techniques de minimisation DFA ? Je pourrais imaginer créer un automate de type DFA qui a trois types d'états: accepter les états, rejeter les états et les états "indifférents" (toute entrée se terminant par un état "insouciante" peut être acceptée ou rejeté). Mais pouvons-nous alors trouver un moyen de réduire cela à un DFA ordinaire?
Vous pourriez considérer cela comme le problème de l'apprentissage d'un DFA, compte tenu des exemples positifs et négatifs.
Ceci est inspiré par Regex Golf NP-Complete? , qui pose une question similaire pour les expressions rationnelles au lieu des DFA.
Réponses:
Un DFA comme vous le décrivez est appelé un DFA de séparation . Il existe de la littérature sur ce problème lorsque et sont des langages réguliers, tels que Learning Minimal Separating DFA's for Compositional Verification, par Yu-Fang Chen, Azadeh Farzan, Edmund M. Clarke, Yih-Kuen Tsay, Bow-Yaw WangUNE B
Notez que comme l'indique @reinierpost, sans aucune restriction sur A et B, le problème peut devenir indécidable.
la source
La recherche du DFA minimum compatible avec un ensemble de chaînes donné est NP-complete. Ce résultat apparaît comme Théorème 1 dans l'article d'Angluin Sur la complexité de l'inférence minimale des ensembles réguliers . Il est donc clair que votre problème est également NP-complet.
Pour de nombreux bons liens et discussions sur l'apprentissage des langues régulières, consultez le blog de CSTheory sur l'apprentissage des langues régulières .
la source