Вопрос

Что такое регулярное выражение для языка 0м1н где m+n четно?

Это было полезно?

Решение

Если вы имеете в виду строку 000...111... где длина строки четная, вы можете использовать ^(00)*(01)?(11)*$

Другие советы

Хорошо, значит, нужно считать за ноль случаи, когда они нечетные, а когда четные.Для этого требуется два состояния: одно для четных нулей, другое для нечетных нулей.Тогда для случая нечетного нуля вам нужно иметь 1 единицу, а затем четное количество единиц.Для четного случая вам просто нужно четное количество единиц.

Написать DFA легко, но я не знаю, как его построить, поэтому рискну предположить регулярное выражение:

(0 (00)* 1 (11)*) \/ (00)*(11)*
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top