Мне нужно найти регулярное выражение, которое описывает язык {w in {a,b,c}* | neither bc nor cb is part of w}
.Регулярное выражение для языка
Я думал об этом так: потому что ни bc, ни cb не могут быть частью регулярного выражения, любая последовательность b, за которой следует последовательность c или наоборот, должна иметь по крайней мере одну «a» перед последовательностью c. Это способ, которым я пришел со следующим раствором:
(a+b)* | (a+c)* | (a+b)*a(a+c)* | ((a+b)*a(a+c)*a)* | (a+c)*a(a+b)* | ((a+c)*a(a+b)*a)*
Я не уверен в правильности моего решения, и поэтому я думал о выяснении здесь, если он работает. И кроме этого существует математический способ нахождения соответствующего регулярного выражения? Потому что мое решение основано только на интуиции.
Заранее спасибо.
Ваше выражение похоже на 'a' в любой строке соответствия, но оно должно соответствовать' b + 'и' c + ', не так ли? – tripleee
(a + b) * не соответствует строкам a, b, aa, ab, ba, bb и т. Д.? – pixie
Он требует по крайней мере одного 'a' перед любым' b'; так что нет, это не так. – tripleee