Desenvolva uma expressão regular sobre o alfabeto Σ = {1, 2, 3, 4} que produza a linguagem L = {w | w possui 3243 ou 4413 como prefixo, 1314 ou 3243 como subpalavra e 4131 ou 4332 como sufixo}.
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 quatro casos, como segue:
ER = (((prefixos)(alfabeto)(subpalavras)(alfabeto)(sufixos)) +
((sobreposições prefixos/subpalavras)(alfabeto)(sufixos)) +
((prefixos)(alfabeto)(sobreposições subpalavras/sufixos)) +
(sobreposições prefixos/subpalavras/sufixos))
O primeiro caso considera que não existem sobreposições entre os elementos que definem os prefixos e as subpalavras e nem entre os elementos que definem as subpalavras e os sufixos da linguagem L, como segue:
ER = ((prefixos)(alfabeto)(subpalavras)(alfabeto)(sufixos))
ER = ((3243 + 4413) (1 + 2 + 3 + 4)* (1314 + 3243) (1 + 2 + 3 + 4)* (4131 + 4332))
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)(sufixos))
1. A sobreposição do prefixo 3243 com a subpalavra 3243 resulta na palavra 3243:
ER = (3243 (1 + 2 + 3 + 4)* (4131 + 4332))
2. A sobreposição do prefixo 4413 com a subpalavra 1314 resulta na palavra 441314:
ER = (441314 (1 + 2 + 3 + 4)* (4131 + 4332))
3. A sobreposição do prefixo 4413 com a subpalavra 3243 resulta na palavra 4413243:
ER = (4413243 (1 + 2 + 3 + 4)* (4131 + 4332))
O terceiro caso considera a existência de sobreposições entre os elementos que definem as subpalavras e os sufixos da linguagem L, como segue:
ER = ((prefixos)(alfabeto)(sobreposições subpalavras/sufixos))
1. A sobreposição da subpalavra 1314 com o sufixo 4131 resulta na palavra 1314131:
ER = ((3243 + 4413) (1 + 2 + 3 + 4)* 1314131)
2. A sobreposição da subpalavra 1314 com o sufixo 4332 resulta na palavra 1314332:
ER = ((3243 + 4413) (1 + 2 + 3 + 4)* 1314332)
3. A sobreposição da subpalavra 3243 com o sufixo 4332 resulta na palavra 324332:
ER = ((3243 + 4413) (1 + 2 + 3 + 4)* 324332)
O quarto e último caso considera a existência de sobreposições entre os elementos que definem os prefixos, as subpalavras e os sufixos da linguagem L, como segue:
ER = (sobreposições prefixos/subpalavras/sufixos)
1. A sobreposição do prefixo/subpalavra 3243 com a sobreposição da subpalavra/sufixo 324332 resulta na palavra 324332:
ER = (324332)
2. A sobreposição do prefixo/subpalavra 441314 com a sobreposição da subpalavra/sufixo 1314131 resulta na palavra 441314131:
ER = (441314131)
3. A sobreposição do prefixo/subpalavra 441314 com a sobreposição da subpalavra/sufixo 1314332 resulta na palavra 441314332:
ER = (441314332)
4. A sobreposição do prefixo/subpalavra 4413243 com a sobreposição da subpalavra/sufixo 324332 resulta na palavra 441324332:
ER = (441324332)
Desta forma, a expressão regular que produza a linguagem L é:
ER = (((3243 + 4413) (1 + 2 + 3 + 4)* (1314 + 3243) (1 + 2 + 3 + 4)* (4131 + 4332)) +
(3243 (1 + 2 + 3 + 4)* (4131 + 4332)) +
(441314 (1 + 2 + 3 + 4)* (4131 + 4332)) +
(4413243 (1 + 2 + 3 + 4)* (4131 + 4332)) +
((3243 + 4413) (1 + 2 + 3 + 4)* 1314131) +
((3243 + 4413) (1 + 2 + 3 + 4)* 1314332) +
((3243 + 4413) (1 + 2 + 3 + 4)* 324332) +
(324332) +
(441314131) +
(441314332) +
(441324332))
É possível apresentar uma expressão regular mais concisa que produza a linguagem L, agrupando as ocorrências dos casos idênticos numa única expressão, como segue:
ER = (((3243 + 4413) (1 + 2 + 3 + 4)* (1314 + 3243) (1 + 2 + 3 + 4)* (4131 + 4332)) +
((3243 + 441314 + 4413243) (1 + 2 + 3 + 4)* (4131 + 4332)) +
((3243 + 4413) (1 + 2 + 3 + 4)* (1314131 + 1314332 + 324332)) +
(324332 + 441314131 + 441314332 + 441324332))