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:
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 .
Odpowiedzi:
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:
źródło
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).
źródło