Первый тран Сланец на английский описание языка:
(a U b)*(a U e)b* U (a U b)*(b U e)a*
Переводит к:
Любая последовательность a
с или b
с последующим дополнительным a
, за которым следует любое количество b
сек ,
ИЛИ
Любое количество a
с и b
с последующим дополнительным b
, follwed любым количеством a
s
Существует много совпадений здесь - по крайней мере (a U b)*(a U e)
является точно так же, как (a U b)*
, потому что «Любая последовательность a
s и b
s« обязательно либо заканчивается a
, либо epsilon (as любая строка может заканчиваться эпсилон), так что эти группы могут быть устранены, в результате чего
(a U b)*b* U (a U b)*a*
Переводит на:
Любая последовательность a
с или b
с последующим любым количеством b
сек ,
ИЛИ
Любое количество a
с и b
с, follwed любым количеством a
с
Теперь первая часть тех крайних групп одно и то же, так что позволяет свернуть те в один
(a U b)*(a* U b*)
Переводит на:
Любая последовательность a
с или b
с последующим любым количеством a
с или любым числом b
с.
теперь держат на минуту, «Любая последовательность As и Bs» обязательно заканчивается «Любая последовательность a
с или любой последовательности b
с», что означает, что все, что соответствует первой части может соответствовать все регулярное выражение (потому что вторая часть может иметь нулевую длину), так почему бы нам не сделать это
(a U b)*
Ta Da. Просто.
Я бы очень хотел объяснять любые ответы или даже подсказки, а не ответы, я делаю упражнения перед экзаменом, ответы без объяснений мне не помогут! Благодаря! – CompilersBeginner
Я верю, что мой принятый ответ неверен, как указано в комментариях. Я действительно думаю, что результат действительно (U b) *, но мое объяснение неверно. – Piva