#finite-automata
#конечные автоматы
Вопрос:
Другими словами, почему я должен узнавать об этом? Когда я собираюсь сказать … о, для этого мне нужно знать о нажимных автоматах или машинах Тьюринга.
Я не могу видеть приложения материала. Спасибо
Ответ №1:
Вы должны изучить теорию автоматов, потому что это поможет вам понять, что вычислительно возможно в данной системе. Люди, которые понимают разницу между автоматами с принудительным запуском и универсальной машиной Тьюринга, понимают, почему пытаться анализировать HTML с помощью регулярных выражений — плохая идея. Люди, которые не думают, что просто нормально пытаться анализировать HTML с помощью REs.
Ответ №2:
Существуют проблемы, которые хорошо подходят для такого рода решений, некоторые из которых:
- синтаксические анализаторы
- моделирование систем с отслеживанием состояния
- проблемы, управляемые событиями
Вероятно, есть много других. Если вы начнете писать код, в котором есть какая-то специальная state
переменная, в зависимости от которой некоторые функции могут делать то или иное, вы, вероятно, сможете извлечь выгоду из правильного FSA.
Ответ №3:
Прежде всего, я считаю, что есть вещи, которые стоит изучать не потому, что они сразу полезны, а потому, что они по своей сути ценны. Большой недостаток современного образования в том, что оно не делает ничего, чтобы убедить в этом студентов, когда они все еще впечатлительны.
При этом теория автоматов по своей сути ценна и невероятно полезна. Разбор текста, компиляция программ и возможности вычислительных устройств могут быть действительно поняты только с использованием того, что дает нам теория автоматов… и получение максимальной отдачи от вычислительных систем требует глубокого понимания. Теория автоматов позволяет нам ответить на некоторые из самых фундаментальных вопросов, которые мы можем задать о вычислениях: какие ресурсы нам нужны для выполнения вычислений? что мы можем решить с учетом имеющихся ресурсов? есть ли проблемы, которые не могут быть решены независимо от того, сколько ресурсов у нас есть? Не говоря уже о том, что теория сложности, которая касается эффективности вычислений, требует, чтобы теория автоматов была осмысленно определена.
Ответ №4:
Изучение автоматов (которые являются ничем иным, как машинами) дает представление о пределах вычислений. Когда автоматы не принимают строку, это означает, что машина не может принять эту строку в качестве входных данных. Диаграммы состояний обычно дают возможные результаты для ввода, которые заставляют нас создавать анализаторы / машины.
Хорошим примером может быть проверка формата email-id. Программное обеспечение не принимает идентификаторы электронной почты при заполнении формы, если формат электронной почты не подходит. Здесь программное обеспечение принимает идентификаторы электронной почты только в определенном формате. Мы смогли создать такое программное обеспечение, в основном рассортировав это теоретически, используя автоматы и конечные автоматы.