Мені незрозуміло щодо використання словосполучень "нескінченна" мова або "кінцева" мова в комп'ютерній теорії.
Я думаю, що корінь проблеми полягає в тому, що мова на зразок нескінченна в тому сенсі, що може генерувати нескінченну (але підрахункову) кількість рядків. Тим не менш, його все ще можна розпізнати за допомогою автомата з кінцевим станом.L={ab}∗
Інше питання полягає в тому, що формальна теорія мови досить своєрідна в тому, як вона використовує термін "мова".
Для всіх у цьому світі, крім людей у формальній теорії мови, мова - це система висловлювань, що використовуються для спілкування, тому кожне висловлювання має форму (свій синтаксис ) та якесь значення (свою семантику ). Формальна теорія мови, принаймні тієї частини, яка використовується в інформатиці, присвячена проблемі, як найкраще формально визначити синтаксис мов. Вся справа у взаємозв'язку між синтаксисом мов (як виглядають висловлювання) та формалізмами (мовами!), Наприклад, регулярними виразами, які використовуються для визначення синтаксису мов.
Отже, в теорії формальної мови "мова" визначається просто як "набір рядків". Зазвичай він не присвоює значення мовам рядків.
У той же час формалізми, що використовуються для опису мов, таких як регулярні вирази, також утворюють мови в цьому сенсі: наприклад, кожен регулярний вираз є рядком, а значить, набір регулярних виразів - це мова. Однак для цих формализмов, рядки на мові робити має сенс: наприклад, сенс кожного регулярного виразу мови воно означає.
ab{ab}abab{ab}
{ab}∗∗LLLL{ab}∗{ϵ,ab,abab,ababab,abababab,…}∗{ab}∗
(ab)∗∗
(ab)∗
ab*
(зірка Клейна) означає, що ви можете мати нульову або більше комбінацій рядкаab
, це включає потенційну нескінченну кількість рядків: {"", ab ^ 1, ab ^ 2, ab ^ 3, ... ., ab ^ n}. Однак ви все ще можете створити FSM, який розпізнає цю мову, оскільки в реальності немає можливості створити нескінченний рядок, коли обробляється машиною, всі рядки повинні бути кінцевими, але це не робить мову самою кінцевою. Мови нескінченності є теоретичними.