Perché le espressioni regolari sono definite con unione, concatenazione e operazioni a stella?


11

Un'espressione regolare non è definito ricorsivamente come

  1. a Σa per alcuni è un'espressione regolare,aΣ
  2. ε è un'espressione regolare,
  3. è un'espressione regolare,
  4. R 1 R 2(R1R2) dove e sono espressioni regolari è un'espressione regolare,R1R2
  5. R 1 R 2(R1R2) dove e sono espressioni regolari è un'espressione regolare,R1R2
  6. R 1(R1) dove è un'espressione regolare è un'espressione regolare.R1

Questa definizione è presa da pagina 64 di

Sipser, Michael. Introduzione alla teoria della computazione, 3a edizione. Cengage Learning, 2012.

Ora ho le seguenti domande.

  • Perché la definizione non contengono i intersection, complemento reverseoperazioni?
  • Se cambiamo il quarto elemento in , otteniamo una definizione equivalente, ovvero per ogni lingua normale, esiste un'espressione regolare modificata e viceversa?R1R2
  • So che questa definizione è completa e ben definita, ma perché è preferita ad altre definizioni equivalenti, ben definite e complete?

2
Per favore, limitati a una domanda per post.
Raffaello

Risposte:


16

1) Se permettiamo anche l'intersezione e il complemento, le espressioni risultanti vengono talvolta chiamate espressioni regolari estese; poiché le lingue normali sono chiuse in operazioni booleane, non si ottiene nulla da loro. È solo zucchero sintattico. Una conclusione simile vale per l'operazione inversa. Parte del motivo per cui in prima istanza non vengono menzionate tutte le altre operazioni è l'obiettivo di mantenere la definizione il più semplice possibile, in modo che le prove (induttive) non debbano occuparsi di molti casi. Un'altra causa potrebbe essere che se consentiamo determinate operazioni, ma altre no, in alcuni casi risultano classi di lingue molto distinte (subregolari), ad esempio se consideriamo un'espressione regolare estesa senza l'operatore stella, otteniamo una sottoclasse corretta di quelle regolari , le cosiddette lingue senza stelle o aperiodiche, vedi Wikipedia: linguaggio senza stelle .

2) Se manteniamo gli articoli 1. - 6. ma modifichiamo semplicemente l'articolo 4. usando l'intersezione anziché l'unione, otteniamo una sottoclasse corretta delle lingue normali. Ad esempio, non potremmo più descrivere la lingua in quanto comporterebbe l'unione di e (vedere la prova di seguito). Se permettiamo la complementazione, le cose cambiano man mano che ci ricongiungiamo con le leggi di DeMorgan.{ a } { b }L={a,b}{a}{b}

3) Questo mi ha parzialmente risposto in 1), ma cosa intendi quando dici che questa definizione è preferita? Conosco definizioni in cui 2. è omesso (come abbiamo per 6. che ), oppure 3. è omesso (come abbiamo = L ( ¯ X )) o entrambi sono stati omessi; quindi questa non è la minima definizione possibile (ci dà anche un po 'di zucchero sintattico poiché abbiamo simboli extra per descrivere { ε } e ).L()={ε}=L(X¯{ε}

EDIT : il mio primo commento citato in 2) era sbagliato, le lingue nella chiusura induttiva sotto , e non necessariamente sono sottoinsiemi di x per alcuni x X , ad esempio si consideri L ( a b ) = { a b } . Tuttavia abbiamo che L = { a , b } non può essere descritto da una tale espressione. Darò una prova, vale a dire la prova che se L = L ( R )xxXL(ab)={ab}L={a,b}L=L(R)per qualche espressione con il 4 voci modificate, quindi se (e quindi un b ) { un , b } L un b L . La prova va per induzione sull'espressione R . Per il caso di base tiene vuoto, supponiamo ora che valga per L ( R 1 ) , L ( R 2 ) . Se L = L ( R 1X={a,b}ab

{a,b}LabL.
RL(R1),L(R2) e { a , b } L , quindi { a , b } L ( R i ) , i = 1 , 2 quindi per ipotesi di induzione abbiamo a b L ( R 1 ) L ( R 2 ) . SeL=L(R1R2)=L(R1)L(R2){un',B}L{un',B}L(Rio),io=1,2un'BL(R1)L(R2) quindi come a = a ε = ε a dobbiamo avere un L ( R 1 ) e ε L ( R 2 ) o viceversa. Supponiamo che il primo caso. Se b L ({un',B}L(R1R2)=L(R1)L(R2)un'=un'ε=εun'un'L(R1)εL(R2) , quindi a b L ( R 1 ) per ipotesi di induzione, quindi a b = a b ε L ( R 1 ) L ( R 2 ) . Supponiamo ora b L ( R 2 ) , quindi abbiamo a b L ( R 2 ) L ( R 2 ) per definizione diBL(R1)un'BL(R1)un'B=un'BεL(R1)L(R2)BL(R2)un'BL(R2)L(R2) . Infine se a , b L ( R 1 ) , quindi a L ( R 1 ) n e b L ( R 2 ) m per alcuni n , m > 0 . Se n = m = 1 troviamo a b L ( RL(R1)L(R2)un',BL(R1*)un'L(R1)nBL(R2)mn,m>0n=m=1 per ipotesi di induzione, quindi supponiamo n > 1 , ma questo dà a L ( R 1 ) , simile o m = 1 o m > 1 b L ( R 1 ) e l'ipotesi di induzione dà a b L ( R 1 ) L ( R 1 ) . un'BL(R1)n>1un'L(R1)m=1m>1BL(R1)un'BL(R1)L(R1*)

Nota: una conclusione comunemente usata: se , allora u = a o w = a . Questo segue come 1 = | a | = | u w | = | u | + | w | , quindi | u | = 0 e | w | = 1 o | u | = 1 e | w | =un'=uwu=un'w=un'1=|un'|=|uw|=|u|+|w||u|=0|w|=1|u|=1 . Nel primo caso abbiamo u = ε e quindi a = w .|w|=0u=εun'=w


2
Infatti non è nell'insieme delle lingue "subregolari", ma { a , b } è perché { a , b } = ( a b ) . {un',B}{un',B}*{un',B}*=(un'*B*)*
rici,

Sì, a volte è un po 'complicato vedere cosa potrebbe essere espresso e cosa no, come con una combinazione intelligente di stelle e altri che puoi ottenere abbastanza lontano.
StefanH,

10

Il rapporto tecnico che introduceva lingue regolari, espressioni regolari e automi finiti pone la tua domanda a pagina 70:

La domanda può sorgere al lettore: perché abbiamo selezionato le tre operazioni particolari EF , EF e E*F ?

(Poco dopo, è stato notato che E* è un operatore più conveniente di E*F ed equivalente in potenza. Quindi oggigiorno, invece, utilizziamo E* .)

La risposta occupa diverse pagine. In primo luogo, si osserva che la risposta deve essere cercata se le lingue risultanti formano una classe interessante e come si confrontano con le lingue descritte con altri mezzi. A pagina 72, si osserva che negazione e congiunzione sono ridondanti: non aggiungono alcun potere espressivo. A pagina 80 e oltre, è dimostrato che le lingue normali sono esattamente le lingue riconosciute dalle macchine a stati finiti.

In altre parole: la risposta di Stefan può tranquillamente essere considerata conclusiva, come già indicato nel rapporto che ha introdotto per la prima volta questi concetti.


Grazie per il link Spiego sempre ai miei studenti che le operazioni sono astrazioni naturali dalla sequenza scelta (come if-then-else) (istruzioni che si susseguono) e iterazione (come while-do). Ma a quanto pare questo non è menzionato da Kleene?
Hendrik Jan

Sono solo un ragazzo che ha cercato l'articolo di Kleene ed è stato sorpreso che tutto nella mia risposta fosse già lì. Non so nient'altro. Quindi suppongo che la risposta sia leggere l'articolo e forse cercare tutto ciò che Kleene ha scritto prima.
reinierpost,

4

Da questa selezione di operatori (unione, concatenazione e stella) si può costruire un NFA con una dimensione lineare alla dimensione dell'espressione. D'altra parte, se si aggiungono intersezione e complementazione, la dimensione dell'automa equivalente può esplodere in modo non elementare, il che di solito non è desiderabile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.