Чи існує алгоритм / систематична процедура перевірки того, чи є мова регулярною?
Іншими словами, задавши мову, вказану в алгебраїчній формі (придумайте щось на зразок ), перевірте, чи є мова регулярною чи ні. Уявіть, що ми пишемо веб-сервіс, щоб допомогти студентам в усіх домашніх роботах; користувач вказує мову, а веб-служба відповідає "регулярно", "не регулярно" або "я не знаю". (Ми хотіли б, щоб веб-сервіс відповів "я не знаю" якомога рідше.) Чи є хороший підхід до автоматизації цього? Це простежується? Чи це рішуче (тобто чи можна гарантувати, що нам ніколи не потрібно відповідати "я не знаю")? Чи є достатньо ефективні алгоритми вирішення цієї проблеми і чи зможете дати відповідь, окрім "не знаю"
Класичний метод доведення того, що мова не є регулярною, - це накачана лема. Однак, схоже, потрібне ручне розуміння в якийсь момент (наприклад, вибір слова для накачування), тому мені не ясно, чи можна це перетворити на щось алгоритмічне.
Класичним методом доведення того, що мова є регулярним, було б використання теореми Міхілла-Нерода для отримання автоматики з кінцевими станами. Це виглядає як перспективний підхід, але він вимагає здатності виконувати основні операції з мовами в алгебраїчній формі. Мені не ясно, чи існує систематичний спосіб символічно виконувати всі операції, які можуть знадобитися, на мовах в алгебраїчній формі.
Щоб правильно поставити це питання, нам потрібно вирішити, як користувач вкаже мову. Я відкритий для пропозицій, але я думаю про щось подібне:
де - слово-вираз, а - система лінійних нерівностей над змінними довжини із наступними визначеннями:S
Кожна з - це слово-вираз. (Вони представляють змінні, які можуть приймати будь-яке слово в .)Σ ∗
Кожна з - це слово-вираз. (Тут являє собою зворотну сторону рядка .)x r x
Кожна з є слово-виразом. (Безслідно, , тому являють собою окремий символ у нижньому алфавіті.)Σ = { a , b , c , … } a , b , c , …
Кожна з - це слово-вираз, якщо - змінна довжина.η
Сполучення слів-виразів - це слово-вираз.
Кожна з є змінною довжини. (Вони представляють змінні, які можуть приймати будь-яке натуральне число.)
Кожна з є змінною довжини. (Вони позначають довжину відповідного слова.)
Це здається досить широким, щоб вирішити багато випадків, які ми бачимо в навчальних посібниках. Звичайно, ви можете замінити будь-який інший текстовий метод вказівки мови в алгебраїчній формі, якщо у вас є краща пропозиція.