Je me demandais quand les langues contenant le même nombre d'instances de deux sous-chaînes seraient régulières. Je sais que le langage contenant un nombre égal de 1 et de 0 n'est pas régulier, mais est un langage tel que , où = nombre moyen d'instances de la sous-chaîne "001" est égal au nombre d'instances de la sous-chaîne " 100 " régulier? Notez que la chaîne "00100" serait acceptée.
Mon intuition me dit que non, mais je ne peux pas le prouver; Je ne peux pas le transformer en une forme qui pourrait être pompée via le lemme de pompage, alors comment puis-je le prouver? D'un autre côté, j'ai essayé de créer un DFA ou un NFA ou une expression régulière et j'ai échoué sur ces fronts également, alors comment dois-je procéder? Je voudrais comprendre cela en général, pas seulement pour la langue proposée.
Réponses:
Une réponse extraite de la question.
Comme l'a souligné Hendrik Jan, il devrait y avoir une boucle automatique supplémentaire de 0 à q5.
la source
C'est une question piège. Essayez de construire une chaîne qui contient deux 001 et ne contient pas de 100, et voyez pourquoi vous ne pouvez pas le faire. Si X = "nombre de 001" et Y = "nombre de 100", alors X = Y ou X = Y ± 1.
Une fois que vous avez réalisé l'astuce, il devient hautement improbable que le langage soit irrégulier, puis la construction d'un DFA est assez simple. Il n'y a que 8 états avec leurs transitions si le symbole suivant est 0/1:
L'état initial est S0, et S0, S1, C0, C1, C2 sont des états accepteurs.
la source