Tak, musi być skończony. Wyobraź sobie, że masz nieskończony zestaw możliwych dopasowań, a twój wkład to 011
. Czy kiedykolwiek byłbyś w stanie to odrzucić? Czy kiedykolwiek zabraknie ci meczów do sprawdzenia?
Czy jest jakiś język, który z tej definicji nie byłby regularny ? Co z zestawem wszystkich par programów i wejść, tak że dany program zatrzymuje się na danym wejściu?
Jeśli masz program, który wylicza ciągi znaków w języku w porządku leksykograficznym -
Aktualizacja
Aby wyjaśnić nieco w oparciu o informacje zwrotne w komentarzach, powodem, dla którego nie każdy język tego formularza jest regularny, jest z definicji. Jeśli, na przykład, przejrzysz dowód twierdzenia Kleene'a, zależy to od faktu, że wyrażenie regularne musi być skończone, aby udowodnić, że generuje skończoną maszynę stanu.
Dlaczego definiujemy w ten sposób „zwykły” język? Ponieważ każdy język formalny jest podzbiorem ciągów alfabetu, a każdy zestaw ciągów może być wyrażony jako połączenie singletonów, więc jeśli nazwalibyśmy dowolny zestaw ciągów „językiem zwykłym”, zwykły język byłby po prostu synonimem język . To nie jest bardzo przydatna definicja, zwłaszcza że nie możemy jej wdrożyć w sprzęcie lub oprogramowaniu. Nie możemy nigdzie przechowywać dowolnej listy nieskończonej ani budować maszyny o nieskończonym stanie.
Jak już wspomniałem, jeśli masz sposób na wyliczenie wszystkich ciągów w języku w porządku, możesz zbudować z niego decydujący element (zaakceptuj, gdy zobaczysz dokładnie ten ciąg, odrzuć, gdy napotkasz ciąg następujący po szukają) i na odwrót (dla każdego ciągu w kolejności, uruchom go przez decider i wyślij go, jeśli tylko zostanie zaakceptowany). Tak więc, jeśli weźmiemy pod uwagę każdy wyliczalny język za regularny , każdy rozstrzygalny język byłby „regularny” i potrzebowalibyśmy nowego terminu dla języków rozpoznawanych przez maszyny skończone i ich równoważne kodowanie jako wyrażenia skończone.