Me preguntaba cuándo los idiomas que contenían el mismo número de instancias de dos subcadenas serían regulares. Sé que el idioma que contiene el mismo número de 1s y 0s no es regular, pero es un lenguaje como , donde L = { w ∣ número de instancias de la subcadena "001" es igual al número de instancias de la subcadena "100" } regular? Tenga en cuenta que la cadena "00100" sería aceptada.
Mi intuición me dice que no, pero no puedo demostrarlo; No puedo transformarlo en una forma que pueda bombearse a través del lema de bombeo, entonces, ¿cómo puedo probar eso? Por otro lado, he intentado construir un DFA o un NFA o una expresión regular y también he fallado en esos frentes, entonces, ¿cómo debo proceder? Me gustaría entender esto en general, no solo por el lenguaje propuesto.
fuente
Respuestas:
Una respuesta extraída de la pregunta.
Como señaló Hendrik Jan, debería haber un 0 auto-loop adicional en q5.
fuente
Es una pregunta capciosa. Intente construir una cadena que contenga dos 001 y no contenga un 100, y vea por qué no puede hacerlo. Si X = "número de 001" e Y = "número de 100", entonces X = Y o X = Y ± 1.
Una vez que se da cuenta del truco, es muy poco probable que el lenguaje sea irregular, y luego construir un DFA es bastante simple. Solo hay 8 estados con sus transiciones si el siguiente símbolo es 0/1:
El estado inicial es S0, y S0, S1, C0, C1, C2 son estados de aceptación.
fuente