Une langue unaire est-elle régulière si son exposant est une fonction linéaire?

13

En faisant le travail actuel pour mon cours de langues formelles et d'automates, je suis resté coincé sur des exercices impliquant des langues unaires (j'espère que c'est le bon terme), c'est-à-dire des langues qui s'appuient sur une seule lettre. Je ne veux pas poser de questions sur les exercices spécifiques, mais plutôt sur une conjecture beaucoup plus générale que j'ai formulée:

Soit et . Ma conjecture est:Σ={a}L={af(n)Σ:nN0}

L is regularx,yN0:f(n)=xn+y

Cette question a-t-elle déjà fait l'objet d'un traitement scientifique? Est-ce "évidemment" vrai / faux?

Pour moi, la direction " " est évidemment vraie car on peut simplement construire un DFA avec des états qui parcourt les états après avoir lu les états et accepte ssi il est à l'état numéro .x+yxyy

SEJPM
la source
Bon travail, faire cette observation n'est rien de ce que j'attendrais d'un étudiant moyen!
Raphael
D'accord. C'est une très belle observation.
Rick Decker
Ce n'est pas évident d'après le titre, mais nous avons déjà posé cette question, jusqu'à un petit lemme d'équivalence: quels sont les ensembles possibles de longueurs de mots dans une langue régulière?
Gilles 'SO- arrête d'être méchant'

Réponses:

9

Linéaire est proche, mais le terme technique que vous recherchez est semi - linéaire: c'est-à-dire une union finie d'ensembles linéaires.

La moitié de la preuve en est un corollaire du théorème de Parikh , qui dit que toute langue sans contexte a une carte de Parikh semi-linéaire (c'est-à-dire l'ensemble des vecteurs contenant les occurrences de chaque lettre de l'alphabet).

Pour une langue unaire, la carte parikh de la langue est la langue elle-même (c'est-à-dire que chaque mot est identifié de manière unique par le nombre de lettres qu'il a), donc chaque langue régulière unaire est semi-linéaire.

L'autre moitié de la preuve montre que vous pouvez construire un langage régulier contenant chaque ensemble semi-linéaire unaire. Cela prend un peu de travail, mais ce n'est pas trop difficile si vous utilisez des expressions régulières:

  • reconnaît la langue { k }unek{k}
  • reconnaît { x k x N 0 }(unek){XkXN0}
  • reconnaît S 1 + S 2 si R 1 reconnaît S 1 et R 2 reconnaît S 2 , où + ici est l'addition par élémentR1R2S1+S2R1S1R2S2+
  • reconnaît S 1S 2 si R 1 reconnaît S 1 et R 2 reconnaît S 2 , où | voici l'union d'expression régulière.R1|R2S1S2R1S1R2S2|
jmite
la source
6

Vous avez presque raison. Vous devez considérer le fait que vous pourriez avoir plusieurs fonctions linéaires, comme ou vous pourriez avoir des langages finis, comme L = { a kk = 4 n + 2  ou  k = 13 } (dans les deux cas, nous prenons simplement l'union des langues normales, donc les choses fonctionnent comme elles le devraient.)

L={unekk=3n+1 ou k=septn+4}
L={unekk=4n+2 ou k=13}
Rick Decker
la source