Una lingua unaria è regolare se il suo esponente è una funzione lineare?


13

Mentre svolgo l'attuale incarico per le mie lingue formali e il mio corso sugli automi, mi sono in qualche modo bloccato su esercizi che coinvolgono le lingue unarie (spero che sia il termine giusto), cioè le lingue che si basano su una sola lettera. Non voglio fare domande sugli esercizi specifici, ma piuttosto su una congettura molto più generale che mi è venuta in mente:

Sia e L = { a f ( n )Σ : n N 0 } . La mia congettura è: L  è regolare x , y N 0 : f ( n ) = x n + yΣ={a}L={af(n)Σ:nN0}

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

Questa domanda ha già visto qualche trattamento scientifico? È "ovviamente" vero / falso?

Per me, ovviamente, la direzione " " è vera perché si può semplicemente costruire un DFA con stati che cicla attraverso gli stati x dopo aver letto gli stati y e accetta iff è allo stato numero y .x+yxyy


Ottimo lavoro, fare questa osservazione non è nulla che mi aspetterei dagli studenti medi!
Raffaello

Concordato. Questa è un'osservazione molto bella.
Rick Decker,

Non è ovvio dal titolo, ma abbiamo già posto questa domanda, fino a un piccolo lemma di equivalenza: quali sono le possibili serie di lunghezze di parole in un linguaggio normale?
Gilles 'SO- smetti di essere malvagio' il

Risposte:


9

Linear è vicino, ma il termine tecnico che stai cercando è semilineare , ovvero un'unione finita di insiemi lineari.

La metà della dimostrazione di ciò è un corollario del teorema di Parikh , che afferma che qualsiasi linguaggio privo di contesto ha una mappa semi-lineare Parikh (cioè l'insieme di vettori che contiene le occorrenze di ogni lettera dell'alfabeto).

Per una lingua unaria, la mappa parikh della lingua è la lingua stessa (cioè ogni parola è identificata in modo univoco da quante lettere ha), quindi ogni lingua normale unaria è semi-lineare.

L'altra metà della dimostrazione sta dimostrando che è possibile costruire un linguaggio regolare contenente ogni insieme semi-lineare unario. Questo richiede un po 'di lavoro, ma non è troppo difficile se usi le espressioni regolari:

  • riconosce la lingua { k }ak{k}
  • riconosce { x k x N 0 }(ak){xkxN0}
  • riconosce S 1 + S 2 se R 1 riconosce S 1 e R 2 riconosce S 2 , dove + qui è l'aggiunta saggia dell'elementoR1R2S1+S2R1S1R2S2+
  • riconosce S 1S 2 se R 1 riconosce S 1 e R 2 riconosce S 2 , dove | ecco l'unione di espressione regolare.R1|R2S1S2R1S1R2S2|

6

L={akk=3n+1 or k=7n+4}
L={akk=4n+2 or k=13}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.