Prima tran ardesia di una descrizione in inglese del linguaggio:
(a U b)*(a U e)b* U (a U b)*(b U e)a*
si traduce in:
Qualsiasi sequenza di a
s o b
s, seguita eventualmente da un a
, seguita da un numero qualsiasi di b
s .
O
Qualsiasi numero di a
s e b
s, seguita eventualmente da un b
, follwed da qualsiasi numero di a
s
Ci sono un sacco di sovrapposizione qui - almeno (a U b)*(a U e)
è esattamente come (a U b)*
, perché "Qualsiasi sequenza di a
s e b
s" necessariamente sia termina con a
o epsilon (come qualsiasi stringa può terminare con epsilon) così quei gruppi possono essere eliminati, lasciando
(a U b)*b* U (a U b)*a*
traduce:
Qualsiasi sequenza di a
s o b
s, seguita da un numero qualsiasi di b
s .
O
Qualsiasi numero di a
s e b
s, follwed da qualsiasi numero di a
s
Ora la prima sezione di coloro ai gruppi più esterni è lo stesso, così lascia crollare quelle in uno
(a U b)*(a* U b*)
si traduce in:
Qualsiasi sequenza di a
s o b
s, seguita da un numero qualsiasi di a
s o con qualsiasi numero b
s.
ora aspetta un minuto, "Qualsiasi sequenza di As e Bs" necessariamente termina con "Qualsiasi sequenza di a
s OR qualsiasi sequenza di b
s", che significa qualche cosa che corrisponde alla prima parte può corrispondere tutto regolare (perché la seconda parte può avere una lunghezza pari a zero) così perché non ci rendono solo
(a U b)*
Ta Da. Semplice.
Preferisco molto le spiegazioni a qualsiasi risposta, o anche suggerimenti piuttosto che risposte, sto facendo esercizi di pre-esame, le risposte senza spiegazioni non mi aiuteranno molto! Grazie! – CompilersBeginner
Credo che la mia risposta accettata sia errata, come sottolineato nei commenti. Penso che il risultato sia davvero (a U b) * ma la mia spiegazione non è corretta. – Piva