Desenvolva uma expressão regular sobre o alfabeto Σ = {x, y, z} que produza a linguagem L = {w | w possui xyz como prefixo e zyx como subpalavra}.
Para a classe de problemas abordado no enunciado do exercício, a elaboração da expressão regular que produza a linguagem L, segue o esquema composto por dois casos, como segue:
ER = (((prefixos)(alfabeto)(subpalavras)(alfabeto)) +
((sobreposições prefixos/subpalavras)(alfabeto))
O primeiro caso considera que não existem sobreposições entre os elementos que definem os prefixos e as subpalavras da linguagem L, como segue:
ER = ((prefixos)(alfabeto)(subpalavras)(alfabeto))
ER = (xyz (x + y + z)* zyx (x + y + z)*)
O segundo caso considera a existência de sobreposições entre os elementos que definem os prefixos e as subpalavras da linguagem L, como segue:
ER = ((sobreposições prefixos/subpalavras)(alfabeto))
1. A sobreposição do prefixo xyz com a subpalavra zyx resulta na palavra xyzyx:
ER = (xyzyx (x + y + z)*)
Desta forma, a expressão regular que produza a linguagem L é:
ER = ((xyz (x + y + z)* zyx (x + y + z)*) +
(xyzyx (x + y + z)*))
É possível apresentar uma expressão regular mais concisa que produza a linguagem L, agrupando o primeiro caso e o segundo caso numa única expressão, como segue:
ER = (xyz (ε + ((x + y + z)* z)) yx (x + y + z)*)