Основна властивість DFA / NFA - це відсутність необмеженої пам'яті. Якщо ви подивитеся на мову та єдиний алгоритм (який згодом слід перекласти у Кінцевий Автомат), який можна подумати, вимагає цього властивості, тобто ви відчуваєте, що будь-який алгоритм, який його визнає, повинен запам'ятати довільну велику кількість речей (наприклад, у вашому прикладі), то ця мова, ймовірно, не є регулярною.н
Звичайно, завжди слід пам’ятати, що математична інтуїція може помилятися, і єдиний спосіб бути впевненим у своїй інтуїції - це довести її.
EDIT: Я відповім на останнє запитання в коментарях тут, через брак місця.
Ви, хлопці, говорите про необмежену пам’ять, яку ви маєте на увазі, це причина, чому вона не є регулярною. але ^ nb ^ m також може мати необмежену пам'ять, якщо я хочу, чи не так? це все ще не дає мені спокою.
Питання полягає не в тому, наскільки великі слова можуть набути (зазвичай ви стикаєтесь з нескінченними звичайними мовами, оскільки кожна обмежена мова є регулярною, і це досить нудно), а в тому, скільки потрібно пам'ятати DFA.
У прикладі немає потреби згадувати . Алгоріхм просто повинен переконатися, що вони позитивні і що слово впорядковане правильно. Це обмежений список, і кожен із елементів у списку потребує постійної кількості пам'яті.
Порівняйте це з , для якого потрібен простий алоритм, щоб пам’ятати, що число 's дорівнює кількостіамбнм , н
анбнаб's. Для цього знадобиться необмежена пам'ять. Коли я дивлюся на мову і бачу, що будь-який алгоритм, про який я думаю, потребує необмеженої пам'яті, моя інтуїція про те, що мова не є регулярною, посилюється. Якщо я не можу знайти розумний алгоритм (який потребує постійної кількості пам'яті) за розумну кількість часу (скільки розумного часу залежить від вас), я спробую довести, що мова не є регулярною.
Сподіваюсь, це робить це трохи зрозуміліше.