Je sais que les langages qui peuvent être définis à l'aide d'expressions régulières et ceux reconnaissables par DFA / NFA (automates finis) sont équivalents. De plus, aucun DFA n'existe pour la langue . Mais il peut encore être écrit en utilisant des expressions régulières (pour cette question toute langue non régulière peut être) comme . Mais nous savons que chaque langue qui a une expression régulière a un DFA qui le reconnaît (contradiction avec ma déclaration précédente). Je sais que c'est une chose banale, mais la définition de l'expression régulière inclut-elle la condition qu'elle soit finie?{ ϵ } ∪ { 01 } ∪ { 0011 } . . . . . .
10
Réponses:
Si les expressions régulières pouvaient être infinies, alors n'importe quelle langue aurait été régulière.
Compte tenu de la langue , on peut toujours définir l'expression régulière , qui définit exactement . (Exemple: l'expression régulière définit .)L={w1,w2,…} R=w1+w2+⋯ L
R1=ϵ+0+1+00+01+10+11+⋯ L1={0,1}∗
Nous savons que certaines langues ne sont pas régulières, ce qui montre que les expressions régulières infinies décrivent une classe de langues plus large que les expressions régulières finies.
la source
Oui, ça doit être fini. Imaginez que vous ayez cet ensemble infini de correspondances possibles, et votre entrée est
011
. Pourriez-vous jamais le rejeter? Souhaitez-vous jamais manquer de matchs pour vérifier?Y a-t-il un langage qui, selon cette définition, ne serait pas régulier ? Qu'en est-il de l'ensemble de toutes les paires de programmes et d'entrées de sorte que le programme donné s'arrête sur l'entrée donnée?
Maintenant, si vous aviez un programme qui énumère les chaînes dans une langue dans un ordre lexicographique ...
Mise à jour
Pour clarifier un peu en fonction des commentaires dans les commentaires, la raison pour laquelle toutes les langues de ce formulaire ne sont pas régulières est par définition. Si, par exemple, vous recherchez la preuve du théorème de Kleene, cela dépend du fait qu'une expression régulière doit être finie pour prouver qu'elle génère une machine à états finis.
Pourquoi définissons-nous le langage «normal» de cette façon? Parce que chaque langue formelle est un sous-ensemble des chaînes d'un alphabet, et chaque ensemble de chaînes peut être exprimé comme une union de singletons, donc si nous appelions n'importe quel ensemble de chaînes une langue «régulière», la langue régulière ne serait qu'un synonyme de la langue . Ce n'est pas une définition très utile, d'autant plus que nous ne pouvons pas réellement l'implémenter dans le matériel ou le logiciel. Nous ne pouvons pas stocker une liste infinie arbitraire n'importe où ni construire une machine à états infinis.
Comme je l'ai laissé entendre, cependant, si vous avez un moyen d'énumérer toutes les chaînes dans une langue dans l'ordre, vous pouvez construire un décideur à partir de cela (acceptez lorsque vous voyez cette chaîne exacte, rejetez lorsque vous rencontrez une chaîne qui vient après celle que vous recherche) et vice versa (pour chaque chaîne dans l'ordre, exécutez-la dans le décideur et affichez-la si et seulement si elle est acceptée). Donc, si nous considérions chaque langue énumérable comme régulière , chaque langue décidable serait «régulière» et nous aurions besoin d'un nouveau terme pour les langues reconnues par les machines à états finis et leurs encodages équivalents comme expressions finies.
la source
Supposons que les expressions régulières soient infinies.
Ainsi le langage défini par {ϵ} ∪ {01} ∪ {0011} ... sera régulier. Pour chaque langue régulière, il existe un NFA. Une façon d'obtenir ce NFA serait d'avoir des NFA individuels pour chacun des {ϵ}, {01}, {0011} ... et de les combiner en utilisant ϵ transitions. Puisqu'il existe des expressions régulières distinctes infinies, nous aurons besoin de sous-NFA infinis pour être combinés. Cependant, NFA ne peut avoir qu'un nombre fini d'états (définition de NFA).
Il n'existe donc pas de NFA qui puisse définir un langage défini par l'union d'expressions régulières infinies, ce qui implique que le langage n'est pas régulier.
Ainsi, aucune expression régulière ne peut définir le même langage que le langage défini par l'union d'expressions régulières infinies.
Ainsi, les expressions régulières ne peuvent avoir que des expressions finies.
la source