Langage local

De testwiki
Version datée du 12 septembre 2023 à 12:57 par 2a01:e0a:112:5950:e11c:6f26:8f73:2b96 (discussion) (Propriétés : correction du français)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

En informatique théorique, et notamment en théorie des langages rationnels, un langage local est un langage formel pour lequel l'appartenance d'un mot au langage peut être testée en considérant les blocs de deux lettres consécutives ou, de manière plus imagée, en faisant glisser sur le mot une « fenêtre » de largeur 2[1]. De manière équivalente, c'est un langage rationnel qui peut être reconnu par un automate fini déterministe d'un type particulier, appelé automate local[2]. Ces automates et langages interviennent notamment dans la construction de Glushkov. Un langage local est un langage sans étoile.

Premier exemple

Le langage des mots obtenus en concaténant le motif ab est un langage local. En effet, en faisant glisser une fenêtre de largeur 2 sur un mot, il suffit de vérifier :

  • que le mot commence par un a
  • que toute fenêtre de deux lettres n'est pas aa ou bb
  • que le mot termine par b.

Le mot abababab est dans ce langage. Le mot abababbab ne l'est pas car il y a une fenêtre de deux lettres qui est bb : abababbab.

Définition

Définition formelle

Un langage L sur un alphabet A est local s'il existe deux parties R et S de A et une partie F de A × A telles que w est un mot de L si et seulement si[3] :

  1. la première lettre de w est dans R ;
  2. la dernière lettre de w est dans S ;
  3. et aucun facteur de longueur 2 de w n'est dans F.

La dernière des conditions peut être remplacée par :

  1. Modèle:Numérotation tous les facteurs de longueur 2 de w sont dans l'ensemble (A × A) \ F,

mais celle-ci se prête moins bien à l'écriture formelleModèle:Pas clair.

Définition formelle avec expression rationnelle

Autrement dit, un langage L est local s'il est décrit par une expression rationnelle (étendue)[1]Modèle:,[4] de la forme :

L=(RA*A*S)A*FA*.

où R, S sont des ensembles de lettres, et F est un ensemble de mots de longueur 2.

On retrouve aussi une version plus générale de la définition qui autorise l'adjonction du mot vide. L'expression régulière étendue d'un langage local montre qu'il est sans étoile.

Exemples

Sur l'alphabet A={a,b}[4], les langages suivants sont locaux :

  • ab, car ab=aA*A*bA*{aa,bb,ba}A* ;
  • (ab)+=(aA*A*b)A*{aa,bb}A* ;
  • a+=(aA*A*a)A*{ab}A*.

Propriétés

Automate local

Exemple d'un automate local comme il intervient dans la construction de Glushkov.

Un automate local, aussi appelé automate de Glushkov[4], sur un alphabet A à s lettres est un automate déterministe complet à 1+s états Q={1}A; les états sont en bijection avec les lettres, avec un état supplémentaire noté 1 qui est aussi l'état initial. La propriété caractéristique de l’automate est que toutes les transitions aboutissant à un état a donné sont étiquetées par la lettre qui est l'état d'arrivée : si (p,a,q) est une transition de l'automate, alors a=q. Aucune transition entre dans l'état initial.

Un chemin d'étiquette w=a1a2an issu de l'état 1 passe donc successivement par les états a1,a2,,an. Le chemin est réussi et le mot est accepté si et seulement si

  1. a1 est l'étiquette d'une transition depuis l'état 1 ;
  2. an est un état final ;
  3. tous les facteurs aiai+1 sont les étiquettes de transitions consécutives dans l'automate.

Ceci montre qu'un automate local reconnait un langage local et que, réciproquement, un langage local est reconnu par un automate local.

Langage localement testable

On peut étendre la définition de langage local. Un langage formel est dit k-testable si l'appartenance d'un mot au langage peut être vérifiée en regardant seulement les préfixes, les suffixes et les facteurs de longueur k du mot. Un langage est dit localement testable s'il est k-testable pour un entier k[8]. Un langage local est 2-testable[1]. Il existe une distinction entre langages localement testables et langages strictement localement testables[9]. Les premiers sont fermés pour les opérations booléennes, les deuxièmes ne le sont pas. La famille des langages localement testables forme une variété de langages formels.

Notes et références

Modèle:Références Modèle:Traduction/Référence

Bibliographie

Articles connexes

Modèle:Palette Automates finis et langages réguliers Modèle:Portail

  1. 1,0 1,1 1,2 et 1,3 Modèle:Harvsp.
  2. Modèle:Harvsp.
  3. Modèle:Harvsp.
  4. 4,0 4,1 4,2 et 4,3 Modèle:Harvsp.
  5. ne contenant pas le mot vide, dans la version stricte de la définition
  6. Modèle:Harvsp.
  7. Modèle:Harvsp.
  8. Modèle:Harvsp.
  9. Modèle:Harvsp.