Une expression régulière est définie récursivement comme
- pour certains, est une expression régulière,
- est une expression régulière,
- est une expression régulière,
- où et sont des expressions régulières est une expression régulière,
- où et sont des expressions régulières est une expression régulière,
- où est une expression régulière est une expression régulière.
Cette définition est tirée de la page 64 de
Sipser, Michael. Introduction à la théorie du calcul, 3e édition. Cengage Learning, 2012.
Maintenant, j'ai les questions suivantes.
- Pourquoi ne pas la définition contient les
intersection
,complement
ou lesreverse
opérations? - Si nous changeons le 4ème élément en , -nous une définition équivalente, c'est-à-dire que pour chaque langue régulière, il y a une expression régulière modifiée et vice versa?
- Je sais que cette définition est complète et bien définie, mais pourquoi est-elle préférée à d'autres définitions équivalentes, bien définies et complètes?
Réponses:
1) Si nous autorisons également l'intersection et le complément, les expressions résultantes sont parfois appelées expressions régulières étendues; comme les langues régulières sont fermées sous des opérations booléennes, rien n'y est gagné. C'est juste du sucre syntaxique. Une conclusion similaire vaut pour l'opération inverse. Une partie de la raison pour laquelle en première instance toutes les autres opérations ne sont pas mentionnées est le but de garder la définition aussi simple que possible, de sorte que les preuves (inductives) n'aient pas à prendre en charge de nombreux cas. Une autre cause pourrait être que si nous autorisons certaines opérations, mais pas d'autres, dans certains cas, des classes de langage très distinctes (sous-régulières), par exemple si nous considérons l'expression régulière étendue sans l'opérateur étoile, alors nous obtenons une sous-classe appropriée des classes régulières , les langues dites sans étoiles ou apériodiques, voir wikipedia: langage sans étoiles .
2) Si nous conservons les éléments 1. - 6. mais modifions simplement l'élément 4. en utilisant l'intersection au lieu de l'union, nous obtenons une sous-classe appropriée des langues régulières. Par exemple, nous ne pourrions plus décrire le langage car il impliquerait l'union de { a } et { b } (voir la preuve ci-dessous). Si nous permettons la complémentation, les choses changent car nous avons l'union de retour par les lois de DeMorgan.L = { a , b } { a } { b }
3) J'ai répondu en partie en 1), mais que voulez-vous dire lorsque vous dites que cette définition est préférée? Je connais les définitions où 2. est omis (comme nous l'avons par 6. que ), ou 3. est omis (comme nous avons ∅ = L ( ¯ X ∗ )), ou les deux sont omis ; donc celle-ci n'est pas la définition minimale possible (elle nous donne aussi du sucre syntaxique car nous avons des symboles supplémentaires pour décrire { ε } et ∅ ).L ( ∅∗) = { ε } ∅ = L ( X∗¯¯¯¯¯¯¯ { ε } ∅
EDIT : Mon premier commentaire mentionné en 2) était faux, les langues dans la fermeture inductive sous , ∗ et ∩ ne sont pas nécessairement des sous-ensembles de x ∗ pour certains x ∈ X , par exemple, considérons L ( a ∘ b ) = { a b } . Néanmoins nous avons que L = { a , b } ne pourrait pas être décrit par une telle expression. Je vais donner une preuve, à savoir je prouve que si L = L ( R )∘ ∗ ∩ X∗ x ∈ X L ( a ∘ b ) = { a b } L = { a , b } L = L ( R ) pour une expression avec l'élément 4 modifié, alors si (et donc un ≠ b )
{ a , b } ⊆ L ⇒ un b ∈ L .
La preuve passe par induction sur l'expression R . Pour le cas de base, il est vide, supposons maintenant qu'il vaut pour L ( R 1 ) , L ( R 2 ) . Si L = L ( R 1 ∩X= { a , b } a ≠ b
Remarque: Une conclusion couramment utilisée: si , alors u = a ou w = a . Cela suit comme 1 = | a | = | u w | = | u | + | w | , donc | u | = 0 et | w | = 1 ou | u | = 1 et | w | =a=uw u=a w=a 1=|a|=|uw|=|u|+|w| |u|=0 |w|=1 |u|=1 . Dans le premier cas, nous avons u = ε et donc a = w .|w|=0 u=ε a=w
la source
Le rapport technique qui a introduit les langages réguliers, les expressions régulières et les automates finis pose votre question à la page 70:
(Peu de temps après, il a été noté queE∗ est un opérateur plus pratique que E∗F et équivalent en puissance. Donc, de nos jours, nous utilisons plutôt E∗ .)
La réponse occupe plusieurs pages. Tout d'abord, il est à noter que la réponse doit être recherchée pour savoir si les langues résultantes forment une classe intéressante et comment elles se comparent aux langues décrites par d'autres moyens. À la page 72, on remarque que la négation et la conjonction sont redondantes: elles n'ajoutent aucun pouvoir expressif. À la page 80 et plus loin, il est prouvé que les langages réguliers sont exactement les langages reconnus par les machines à états finis.
En d'autres termes: la réponse de Stefan peut sans risque être considérée comme concluante, car elle a déjà été donnée dans le rapport qui a introduit pour la première fois ces concepts.
la source
A partir de cette sélection d'opérateurs (union, concaténation et étoile), on peut construire un NFA avec une taille linéaire à la taille de l'expression. D'un autre côté, si vous ajoutez l'intersection et la complémentation, la taille de l'automate équivalent peut exploser de manière non élémentaire, ce qui n'est généralement pas souhaitable.
la source