Наскільки практична теорія автоматів?


37

Завжди є спосіб застосування в темах, пов'язаних з теоретичною інформатикою. Але підручники та курси бакалавратів зазвичай не пояснюють причину того, що теорія автоматів є важливою темою та чи вона все ще має застосування на практиці. Тому студенти магістрів можуть мати проблеми в розумінні важливості теорії автоматів і можуть подумати, що вона вже не має жодної практичної користі.

Чи теорія автоматів все ще корисна на практиці?

Чи повинна вона бути частиною навчальної програми для бакалаврату?


4
Я думаю, це тут поза темою; будь ласка, дивіться FAQ .
Jukka Suomela

3
У мене неоднозначні почуття щодо «відсутності = теми» цього. Це, очевидно, не рівень досліджень, але саме це питання актуальності теорії автоматів виникає часто.
Суреш Венкат

18
Я думаю, що це ідеально на тему. Які застосування теорії кінцевих автоматів? Нічим не відрізняючись від Vertex Cover Applications в реальному світі , і ми не закрили це питання.
Пітер Шор

4
До речі, це питання тісно пов'язане, і його відповіді можуть дати певну практичну мотивацію для вивчення теорії кінцевих автоматів: "Для чого корисні регулярні вирази? ".
Jukka Suomela

2
Мушу сказати, що якість та різноманітність відповідей робить питання "сфери" нерелевантним. Я сподіваюсь, що вже з трьома близькими голосами це питання не переживає краю.
Суреш Венкат

Відповіді:


51
  1. Коли-небудь використовували такий інструмент, як grep / awk / sed? Регулярні вирази складають серце цих засобів.

  2. Ви здивуєтеся, скільки кодування ви можете уникнути, принципово використовуючи регулярні вирази - у "практичних проектах", як сервер електронної пошти.

  3. Якщо ви CS сервіс, ви обов'язково будете писати компілятор / інтерпретатор для (принаймні невеликої) мови. Якщо ви коли-небудь пробували це завдання раніше і застрягли, ви оціните, наскільки трохи теорії (ака-контекстних граматик) може вам допомогти. Ця теорія зробила колись неможливе завдання зробити щось, що може бути виконано за вихідні. (І це виграло винахіднику премію Тьюрінга - google BNF).

  4. Якщо ви CS сервіс, в якийсь момент вам потрібно посидіти і подумати про філософські основи обчислень, а не лише про те, наскільки класна наступна версія Android API. У відповідній записці - завдання університету не в тому, щоб підготувати вас до наступних 5 років вашого життя, а підготувати вас до наступних 50 років. Єдине, що вони можуть зробити в цьому плані - допомогти вам подумати - подумати теорії автоматів як одного з таких курсів.


32

Одним з найбільш практичних проявів CS є Compiler Construction. У 1965 році Кнут розпочав вивчення парсерів LR. Швидко (менш ніж за десятиліття) у нас були парсери LALR, які є підмножиною детермінованих автоматичних виштовхувань, що дозволяє нам реалізувати парсери зсуву / скорочення.

В основі доцільності та ефективності розбору LALR лежить доказ (за Кнутом), що «префікси» мови виявляються регулярними (ваш кінцевий автомат). Це генезис автоматизованих генераторів парсера, таких як yacc / bison тощо.

Можна з упевненістю сказати, що мови програмування, як ми їх знаємо, завдячують великій кількості ефективності компіляції цим розробкам.

Ось ще один приклад: основою протоколу TCP / IP є машина з кінцевим станом. Наскільки більше практичного це може отримати?

Кожен серйозний студент CS, особливо практичний, повинен звернути увагу на теорію автоматів. Це основа більшої частини багатства інформатики.


Розбір вихідних файлів насправді не є цікавою (і важливою) частиною компілятора, тому я не думаю, що можна з упевненістю сказати, що "мови програмування, як ми їх знаємо, зобов'язані значною мірою ефективністю компіляції цих розробок". Більше того, можна розбирати мови, використовуючи різні інструменти, наприклад, PEG або комбінатори розбору (тобто parsec).
Ян Шпачек

30

Ви чуєте той шум ? Це звук тисячі геніальних теорем, застосувань та інструментів, що сміються на небесах автомати-теоретики.

Мови та автомати - це елегантні та надійні концепції, які ви знайдете у кожній галузі інформатики. Мови не сухі, формалістичні передачі рук від обчислювальної доісторії. Перспектива теорії мови відокремлює, здавалося б, складні питання про складні, непрозорі предмети на прості висловлювання про слова та дерева. Формальні мови відіграють певну роль у інформатиці, подібній фундаментальній та ігровій точці зору, яку алгебра та топологія піднесли до класичної математики. Ось декілька практичних, досить складних, практичних проблем, до яких звертається через мовну теорію.

  1. Ви хочете помітити у документі повторювані випадки фрази та видалити друге виникнення. По суті, ви хочете замінити послідовність мовою.
  2. Чи містить програма порушення твердження? Чи поважає драйвер пристрою певні протоколи під час взаємодії з ядром? Поведінка програми - це сукупність виконань; Іншими словами, мова. Властивість правильності - інша мова. Проблема коректності програми становить перевірку мовної включеності.
  3. Чи може ваше програмне забезпечення застрягти в нескінченному циклі? Чи містить алгоритм розподіленого алфавіту? Нам потрібні мови над нескінченними словами, але погляд на включення мови все ще діє.
  4. Ви хочете створити дезінфікуючий засіб для виявлення шкідливого Javascript, що вводиться у веб-додаток. Набір шкідливих рядків - це мова. Набір рядків, введених у форми іншою мовою. Ви хочете визначити, чи перетин цих мов не порожній.
  5. Моніторинг робочого часу реактивних та критично важливих систем. Ви хочете розробити програмний монітор, який контролює роботу хімічного процесу або відстежує оновлення фінансової бази даних. Це проблеми, пов'язані з включенням мови та перетином мови.
  6. Розпізнавання візерунків за допомогою численних застосувань. Ви хочете виявити закономірності в геномних даних, у тексті, у ряді звітів про помилки. Це проблеми, коли нам дають слова з невідомої мови і доводиться відгадувати мову. Це проблеми з виведенням мови.
  7. Враховуючи набір документів XML, ви хочете повернути інженеру схему, яка застосовується до цих документів. XML-документи можна ідеалізувати деревами. Потім схема - це специфікація дерева дерева, а проблема висновку схеми - проблема виводу мови для дерев.
  8. Багато додатків вимагають автоматизованих арифметичних міркувань. Припустимо, ми зафіксували таку логічну теорію, як арифметика Пребургера, в якій ми маємо натуральні числа, додавання та менший ніж присудок. Формула з n змінними представляє набір n-мірних векторів. Вектор - це послідовність цифр і може бути закодована у вигляді слова. Присудок - це сукупність слів; мова. Логічні операції, такі як сполучення, диз'юнкція та заперечення, стають перетином, об'єднанням та доповненням мов (екзистенціальна кількісна оцінка - це свого роду проекція).

Зниження, натякане на вище, розглядає мови як абстрактні математичні об'єкти. Щоб застосувати ці ідеї на практиці, нам потрібна структура даних, яка представляє мови та алгоритми для управління цими структурами даних.

Введіть автомати. Автомати дозволяють зводити питання про абстрактні математичні об'єкти, такі як мови, до конкретних, алгоритмічні запитання щодо мічених графіків. Теорія мов та автоматів, окрім шаленої кількості практичних застосувань, надає дуже важливу інтелектуальну послугу. Ми можемо думати про проблеми, починаючи від форматування поштових індексів і закінчуючи процедурами прийняття рішень для монадичної логіки другого порядку в єдиному і неспокійному концептуальному просторі. Як це дивно!

Я нічого не говорив про логіку та процедури прийняття рішень. (Так, вони мають практичне застосування.) Дивіться відповідь Kaveh для авторитетного огляду.


ха-ха, іронія
Praveen Soni

16

Як було пояснено в інших відповідях, теорія автоматів важлива концептуально як проста обчислювальна модель, яку ми добре розуміємо, а регулярні вирази та автомати мають багато застосувань у реальному житті.

Ось невеликий приклад сучасних досліджень, що повертається до теорії автоматів для розуміння сучасної концепції. У цій роботі дослідники доводять, що всі регулярні мови мають тестери властивостей: "Регулярні мови перевіряються з постійною кількістю запитів"


15

Це не лише автомати ванілі. Ви дізнаєтесь про основи (прийняття станів, epsilon-переходи, ...) (обчислювальної) моделі, яка допомагає міркувати про те, що можна, і що ще важливіше, що неможливо виразити деякими мовами запитів. Кілька цікавих результатів включають:

(і звичайно я пропускаю багато інших занять)

В основному це дуже загальна модель. Ваші заняття, ймовірно, підкреслять зв’язок між автоматами, мовами та логікою.

Якби я дивився на те, що це стосується конкретних "мирських" інструментів, я б провів неквапливий ранок у бібліотеці, читаючи пару частин (AB?) З " Основ баз даних " Abiteboul та ін. І намагався підключити це назад до матеріалу класу . Звичайно, це лише один із (безлічі) способів пошуку додатків класу автоматів, і, мабуть, не найочевидніший - але саме тому це цікава вправа.


14

Як уже вказувалося в різних відповідях, теорія автоматів на курсах UG дає одну основну концептуальну основу для введення більш просунутих (і практичних) тем, а також для вказівки проігнорованих зв’язків; наприклад: двійкові діаграми прийняття рішень (вони мінімізовані DFA; після викладання DFA я часто навчаю розгадування головоломок на основі BDD); сценарії, включаючи в BioPerl та BioPython (і відмінна обстановка, в якій можна збільшити кількість непередбачуваних збігів, схованих у реальних виправленнях сценарію в реальному світі), формальне налагодження (властивості стану як заперечення FA, перетинання) і навіть програмування тривоги відеомагнітофона або домашнього зловмисника (щодня стрес-ситуація з погано визначеним автоматом, що вивчається через неповні приклади; можливо, формалізований з використанням синтезу інтерфейсів користувача на сценарії відтворення / відтворення Харела). Я також використовую налаштування, щоб навчити Python '


1
Ласкаво просимо, Ганеш!
Суреш Венкат

1
Гарний спосіб викладання автоматів. Чи бажаєте ви поділитися своїми конспектами лекцій?
Мартін Бергер

9

Я викину ще одну відповідь з абсолютно іншого практичного кута: машини з обмеженим станом (або принаймні кілька простих узагальнень / розширень з них) часто використовуються на стороні AI ігрового програмування. Вони виявляються відмінною моделлю для інкапсуляції характеру поведінки; наприклад, у ворога можуть бути держави, що представляють "патруль", "пошук", "підхід", "атака", "захист", "відступ", "загибель" тощо з чітко визначеними переходами між ними. Це не передбачає жодних формальних аспектів автоматів, як звичайні мови тощо, але концепція автомата є дуже стрижневою.


8

Ми бачили, що мова, яка протиставляє теорію та практику, встановлюючи одну над іншою, - це саме споживання незнання - це доводить людину, що не знайомиться з першими елементами думки, і іде чудовим шляхом до доведення своєї розум, щоб бути таким збоченим, щоб бути нездатним навчати їх.

- Джеймс Мілл (пише псевдонімічно як "PQ"), "Теорія і практика", Лондон і Вестмінстерський огляд , квітень 1836


8

Було проведено значні дослідження, пов'язані з теорією автоматів при перевірці моделей, що використовуються в галузі. Перевірте останні лекції Моше Варді в Інституті Філдса , зокрема 3-ю лекцію "Логіка, автомати, ігри та алгоритми", щоб дізнатись, чому теорія автоматів все ще важлива і корисна.

Анотація:

Автоматико-теоретичний підхід до процедур прийняття рішень, запроваджений Буечі, Елго, Рабіном та Трахтенбротом у 1950-х та 1960-х роках, є одним із найбільш фундаментальних підходів до процедур прийняття рішень. Останнім часом цей підхід знайшов промислове застосування в офіційній верифікації апаратних та програмних систем. Шлях від логіки до практичних алгоритмів проходить не лише через автомати, а й через ігри, алгоритмічними аспектами яких були дослідження Чандри, Козена та Стокмейєра наприкінці 1970-х. У цьому оглядовому огляді ми описуємо шлях від логіки до алгоритмів через автомати та ігри.

Слайди та аудіофайли лекцій доступні тут: 1 , 2 , 3 .


6

Слід враховувати семантику слів "практичний" та "додаток". Для деяких студентів практичним є все, що допоможе їм скласти іспити; для інших - все, що вийде в роботі. В обох випадках теорія автоматичних дійсно дуже практична.

Як зазначають інші, ви будете використовувати граматики, наприклад, вивчаючи компілятори. Але навіть більше того: розуміння всієї концепції наявності різних станів і правил переходів між ними може зробити вас кращим програмістом, коли ви зрозумієте, наприклад, що ваш код тут і там зайвий, і що, коли ви вдосконалюєте його, ви які застосування в вашому коді одні і ті ж концептуальні ідеї , що лежать в мінімізації DFA.

Аналогічно для "застосування". Що ви розумієте під цим словом? Навіть якщо ви "земний інженер", ви побачите та використаєте ідеї, подібні до теорії автоматів, у проектах реального світу: код програмування, діаграми потоку та навіть просту, але геніальну концепцію стека. Для таких теоретиків, як я, я вважаю застосування теорії автоматів в інших областях, таких як логіка, алгебра та теорія кінцевих моделей. Безумовно, мені, напевно, ніколи не доведеться використовувати насосну лему під час покупок у супермаркеті, але подібні теореми допомогли мені зрозуміти структуру певних класів мов, не кажучи вже про логіку та структури алгебраїки, з якими вони відповідають. І це те, що я ціную більше, ніж будь-який показник практичності.


5

Скинуті разом з логікою, автомати можуть запропонувати способи перевірки на зразок держав

Аφ

для автомата А і формула φ. ЯкщоА є моделлю системи та φ При формалізації бажаних властивостей ви отримаєте перевірку системи, що дуже практично стосується зростаючої кількості можливих застосувань.

Враховуючи, що сторона автоматів веде до приємних алгоритмів. Наприклад, якщоφє формулою LTL іА Автомат Бючі (тобто нескінченно працює кінцевий автомат), який ви можете перекласти φ до рівнозначного автомата Аφ і перевірити, чим сильніше L(А)L(Аφ)


3

Кінцеві автомати, які часто пишуться як машини з кінцевим станом у різних контекстах, або з їх імовірнісними варіантами Моделі прихованих Марків можуть застосовуватися для розпізнавання візерунків та кількісної оцінки структури візерунка. Наприклад, які найменші стохастичні кінцеві автомати, які будуть генерувати рядки відповідно до (більш-менш) заданого розподілу ймовірностей або відповідності статистичним властивостям вибірки рядків (або часових рядів) з деякого розподілу.

Дивіться, наприклад, CSSR , алгоритм сліпої реконструкції прихованих станів; це більш ефективно та гнучкіше, ніж приховані Маркові моделі.


1
Щоб додати практичну сторону, моделі прихованих марків використовуються в програмах розпізнавання мовлення, таких як Курцвейл.
tdyen

3

Ще одне практичне застосування теорії автоматів - це розвиток штучного інтелекту. Штучний інтелект розроблявся з концепції кінцевого автомата. Нейронна мережа роботів побудована на основі теорії автоматів. Адже роботи також є автоматами.


2

Деякі дали чудові відповіді, коли йдеться про те, як це стосується промисловості. Що має бути важливим, це його наукова цінність, і теорія автоматів часто є дверима для того, щоб спочатку зрозуміти вищий рівень теорії обчислень у студентських студіях. Теорія автоматів має великий набір теорем, які з'являються в Теоретичній інформатиці, і особливо, коли хочеться говорити про такі програми, як Компілятори. Його наукова цінність (її не застаріла, як це могло бути? Це основна теорія галузі) практична для будь-якого вченого, який цікавиться обчисленнями. Це практично, оскільки знання є корисними для тих, хто розуміє чи хоче зрозуміти природу обчислень. Якщо ви не можете знайти в ньому використання, я сумніваюся в одному дослідженні або навіть намірі вивчити CS, оскільки це не програмування (це "

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.