Langage infini vs langage fini

16

Je ne suis pas certain de l'utilisation des expressions langage "infini" ou langage "fini" en théorie informatique.

Je pense que la racine du problème est qu'un langage comme est infini dans le sens où il peut générer un nombre infini (mais dénombrable) de chaînes. Pourtant, il peut encore être reconnu par un automate à états finis .L={ab}

Cela n'aide pas non plus que le livre Sipser ne fasse pas vraiment cette distinction (du moins pour autant que je sache). Une question sur les langues infinies / finies et leur relation avec les langues normales a été posée dans un exemple d'examen.

boisé
la source
1
Il est infini car ab*(l'étoile de Kleene) signifie que vous pouvez avoir zéro ou plusieurs combinaisons de la chaîne ab, cela inclut un nombre infini potentiel de chaînes: {"", ab ^ 1, ab ^ 2, ab ^ 3, ... ., ab ^ n}. Cependant, vous pouvez toujours construire un FSM qui reconnaît ce langage car il n'y a en réalité aucun moyen de générer une chaîne infinie, lorsqu'elles sont traitées par une machine, toutes les chaînes doivent être finies, mais cela ne rend pas le langage lui-même fini. L'infinité des langues est théorique.
Hunter McMillen
1
«Finiment descriptible» et «fini» ne sont pas les mêmes. Par exemple, votre expression régulière est une description finie d'un langage infini; un automate fini n'est qu'un autre (mais il est appelé automate fini non pas parce que c'est une description finie, mais parce qu'il ne peut stocker qu'une quantité constante de bits). {a,b}
Raphael
Pourquoi le nombre fini d'états devrait-il être plus significatif que la description finie d'une autre machine?
babou
L'automate peut avoir des boucles et vous pouvez utiliser certains états à l'infini.
doganulus

Réponses:

28

Oh mon. Cela semble être une confusion causée par la terminologie (ancienne école) du "langage à états finis" comme synonyme de ce que l'on appelle aujourd'hui le "langage régulier".

Quoi qu'il en soit, les définitions standard pour fini / infini acceptées de nos jours ne concernent que la taille de la langue:

  1. un langage fini est tout ensemble de chaînes, de cardinalité finie, | L | < .L|L|<
  2. un langage infini est tout ensemble de chaînes, de cardinalité infinie ( 0 ) | L | = .L0|L|=

Un fini est toujours régulier.L

Un infini peut être régulier (parfois appelé "état fini"), décidable (parfois appelé "récursif"), non régulier (état non fini), non décidable, etc.,L

A sonné.
la source
1
L={ab}
1
L={a,b}
1
@timberly Bien sûr, nous pouvons savoir et prouver de quelle langue il s'agit.
phant0m
4

Une langue est un ensemble de chaînes. Il est fini s'il contient un nombre fini de chaînes.

David Richerby
la source
4

Je ne suis pas certain de l'utilisation des expressions langage "infini" ou langage "fini" en théorie informatique.

L={uneb}

Un autre problème est que la théorie formelle du langage est plutôt particulière dans la façon dont elle utilise le terme «langage».

Pour tout le monde dans ce monde, sauf les personnes dans la théorie formelle du langage, un langage est un système d'énoncés utilisés pour communiquer, donc chaque énoncé a une forme (sa syntaxe ) et une sorte de sens (sa sémantique ). La théorie du langage formel, du moins la partie utilisée en informatique, est consacrée au problème de la meilleure définition formelle de la syntaxe des langages. Il s'agit de la relation entre la syntaxe des langues (à quoi ressemblent les énoncés) et les formalismes (langues!) Tels que les expressions régulières utilisées pour définir la syntaxe des langues.

Ainsi, dans la théorie formelle du langage, «un langage» est défini simplement comme «un ensemble de chaînes». Il n'attribue généralement pas de signification aux chaînes de la langue.

Dans le même temps, les formalismes utilisés pour décrire les langues, telles que les expressions régulières, forment également des langues dans ce sens: par exemple, chaque expression régulière est une chaîne et, par conséquent, l'ensemble d'expressions régulières est une langue. Cependant, pour ces formalismes, les chaînes dans la langue do ont un sens: par exemple, la signification de chaque expression régulière est la langue qu'elle désigne.

uneb{uneb} est une langue, à savoir la langue constituée de la chaîne uneb. cependant,unebn'est pas seulement une chaîne, mais aussi une expression régulière: un membre de l'ensemble d'expressions régulières valides (qui est une langue). Comme toute expression régulière, elle a un sens: elle désigne une langue, dans ce cas, la langue{uneb}.

Passons maintenant à votre exemple: {uneb}. L'opérateur dénote une fonction qui mappe les langues aux langues: il mappe chaque langue L à la langue composée de toutes les chaînes qui se composent d'une chaîne Lzéro ou plusieurs fois répété. SiL est la langue vide, le résultat est L; dans tous les autres cas, le résultat est un langage infini. Par exemple,{uneb} est la langue {ϵ,uneb,unebuneb,unebunebuneb,unebunebunebuneb,}. C'est infini, mais en utilisant l'opérateur, nous pouvons le décrire de manière finie, comme {uneb}.

De plus, nous pouvons utiliser une expression régulière pour décrire ce langage, à savoir (uneb). Comme toutes les expressions régulières, il s'agit d'une chaîne finie, mais comme la plupart des expressions régulières qui contiennent le opérateur, il décrit un langage infini.

Chaque fois qu'un texte sur les langues formelles utilise une expression telle que (uneb)qui dénote une langue, demandez-vous si elle discute de l'expression régulière elle-même (par exemple, comment elle est construite, quelle langue elle dénote, etc.) ou si elle utilise simplement l'expression régulière pour se référer à la langue dénotée.

reinierpost
la source