Czy język jednoargumentowy jest regularny, jeśli wykładnikiem jest funkcja liniowa?

13

Wykonując bieżące zadanie dla moich kursów języków formalnych i automatów, w pewnym sensie utknąłem na ćwiczeniach obejmujących języki jednoargumentowe (mam nadzieję, że to właściwy termin), tj. Języki oparte na jednej literze. Nie chcę jednak pytać o konkretne ćwiczenia, ale raczej o bardziej ogólną hipotezę, którą wymyśliłem:

Niech i . Moja hipoteza to:Σ={a}L={af(n)Σ:nN0}

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

Czy to pytanie było wcześniej traktowane naukowo? Czy to „oczywiście” prawda / fałsz?

Dla mnie oczywiście kierunek „ ” jest prawdziwy, ponieważ można po prostu zbudować DFA ze stanami , który przechodzi przez stany po przeczytaniu stanów i przyjmuje, że jest pod numerem stanu .x+yxyy

SEJPM
źródło
Dobra robota, dzięki czemu ta obserwacja nie jest niczym, czego oczekuję od przeciętnych studentów!
Raphael
Zgoda. To bardzo miła obserwacja.
Rick Decker
Nie jest to oczywiste z tytułu, ale mieliśmy już to pytanie, aż do małego lematu równoważności: Jakie są możliwe zestawy długości słów w zwykłym języku?
Gilles „SO- przestań być zły”

Odpowiedzi:

9

Liniowy jest bliski, ale szukany termin techniczny jest półliniowy: to znaczy skończony związek zbiorów liniowych.

Połowa tego dowodu jest następstwem twierdzenia Parikha , które mówi, że każdy bezkontekstowy język ma półliniową mapę Parikha (to znaczy zbiór wektorów zawierających wystąpienia każdej litery w alfabecie).

W przypadku języka jednoargumentowego parikhową mapą języka jest sam język (tzn. Każde słowo jest jednoznacznie identyfikowane przez liczbę liter), więc każdy zwykły język jest półliniowy.

Druga połowa dowodu pokazuje, że możesz zbudować zwykły język zawierający każdy jednoargumentalny zestaw półliniowy. To wymaga trochę pracy, ale nie jest zbyt trudne, jeśli używasz wyrażeń regularnych:

  • ak rozpoznaje język{k}
  • (ak) rozpoznaje{xkxN0}
  • R1R2 rozpoznaje jeśli rozpoznaje i rozpoznaje , gdzie Oto dodanie elementu mądryS1+S2R1S1R2S2+
  • R1|R2 rozpoznaje jeśli rozpoznaje i rozpoznaje , gdzietutaj jest związek wyrażeń regularnych.S1S2R1S1R2S2|
jmite
źródło
6

Masz prawie rację. Musisz wziąć pod uwagę fakt, że możesz mieć kilka funkcji liniowych, takich jak lub możesz mieć skończone języki, takie jak (W obu przypadkach łączymy zwykłe języki, więc wszystko działa tak, jak powinno).

L={akk=3n+1 or k=7n+4}
L={akk=4n+2 or k=13}
Rick Decker
źródło