Відповіді:
Важливість машин Тьюрінга є двоякою. По- перше, машини Тьюринга були одними з перших (якщо не в перший) теоретичні моделі для комп'ютерів, починаючи з 1936 р По друге, багато теоретичної інформатики була розроблена з машинами Тьюринга на увазі, і так багато основні результати роботи мовою машин Тьюрінга. Однією з причин цього є те, що машини Тьюрінга прості та такі, що піддаються аналізу.
При цьому машини Тьюрінга не є практичною моделлю для обчислень. Як інженер і користувач Mathematica вони взагалі не повинні вас турбувати. Навіть у теоретичному співтоваристві з інформатики більш реалістичні машини ОЗУ використовуються в областях алгоритмів та структур даних.
Насправді, з точки зору теорії складності, машини Тьюрінга є поліноміально еквівалентними багатьом іншим моделям машин, і тому класи складності, такі як P і NP, можна рівнозначно визначити в цих моделях. (Інші класи складності більш делікатні.)
Машини Тьюрінга були однією з ранніх моделей обчислень, тобто вони були розроблені, коли самі обчислення не дуже добре розумілися (близько 1940 року). Я хочу зосередитись на двох аспектах, які (імовірно) призвели до того, що вони тоді були вподобаною моделлю, що призвело до того, що вона стала найбільш усталеною і, зрештою, стандартною моделлю.
Простота доказів
Як теоретична модель, машини Тьюрінга мають привабливість бути "простими" в тому сенсі, що поточний стан машини має лише постійні розміри. Вся інформація, яка вам потрібна для визначення наступного стану машини, - це один символ і один (контрольний) номер стану. Зміна стану машини однаково невелика, додаючи лише рух головки машини. Це значно спрощує (формальні) докази, зокрема кількість випадків, які слід розрізнити.
Порівняйте цей аспект із моделлю оперативної пам’яті (якщо вона не використовується в її мінімалістичній формі): наступною операцією може бути будь-яка з декількох операцій, які можуть отримати доступ до будь-яких (двох) регістрів. Існує також кілька структур управління.
Тривалість і використання простору
Було (тільки) дві основні моделі обчислень , які з'явилися майже одночасно з машинами Тьюринга, а саме церкви -ісчісленія і Кліні -recursive функціями . Вони відповіли на те саме питання, що робив Тьюрінг - Ентшейдунгспроблема Гільберта, - але вони піддаються набагато менш легко (якщо взагалі є) для визначення часу виконання та використання простору. У певному сенсі вони занадто абстрактні, щоб таким чином бути пов'язаними з більш реалістичними моделями машин.
Для машин Тьюрінга, однак, обидва поняття легко визначити (і, якщо я правильно пам'ятаю, це був перший документ Тюрінга про його модель). Оскільки міркування працездатності незабаром були дуже важливими для того, щоб насправді робити речі, це було певною перевагою машин Тьюрінга.
Таким чином, машини Тьюринга були створені , як в моделі обчислень, яка може розглядатися як поєднання історичного «нещасного випадку» , і деякі з його основних властивостей. Тим не менш, багато моделей були визначені з тих пір і їх охоче використовують, зокрема для того, щоб подолати недоліки машин Тьюрінга; наприклад, вони нудно "програмувати" (тобто визначати).
Я не знаю жодного прямого застосування на практиці. Зокрема, практика обчислень розвивалася паралельно (і, на початку, переважно незалежно від) теорії обчислень. Мови програмування були розроблені без формальних моделей машин. Однак зрозуміло (заднім числом), що багато успіхів у обчислювальній практиці були забезпечені теорією.
Крім того, майте на увазі, що значення, яке теоретична концепція мала для практики, слід вимірювати, враховуючи всіх нащадків, тобто подальша робота, результати та нові ідеї, що можливі завдяки цій концепції. І в цьому плані я думаю, що справедливо сказати, що концепція машин Тьюрінга (серед інших) здійснила революцію у світі.
Єдине досить практичне застосування, про яке я можу придумати (в тому сенсі, що ви насправді можете реалізувати машину Тюрінга) - це довести, що мова якоїсь мови має достатню потужність.
Якщо ви розробляєте якусь мову програмування (або будь-що інше, що призначене для обчислення речей), то, можливо, ви хочете переконатися, що вона є повною Тьюрінгом (тобто здатною обчислювати все, що можна обчислити), застосовуючи машину Тьюрінга в цьому.
Звичайно, ви можете також реалізувати все, що є Тьюрінгом (наприклад, C або комбінаційна логіка), але іноді машина Тюрінга є найпростішим варіантом.
Машина Тьюрінга - це математична модель обчислення. Його переваги:
1. Перевірити рішучість Якщо TM не може вирішити проблему за лічильний час, тоді не може бути жодного алгоритму, який міг би вирішити цю проблему (тобто проблема не визначна).
Для вирішення проблеми, якщо його ТМ зупиняється на рахунковий час для всіх входів кінцевої довжини, тоді можна сказати, що проблему можна було вирішити алгоритмом за лічильний час.
2. Класифікувати задачу ТМ допомагає класифікувати вирішальні задачі на класи ієрархії поліномів.
Припустимо, ми виявили, що проблема вирішується. Тоді ціль стає тим, наскільки ефективно ми можемо її вирішити. Ефективність обчислюється в кількості кроків, додатковому використаному просторі, довжині коду / розміру FSM.
3. Алгоритм розробки та впровадження практичних машин ТМ допомагає поширювати уявлення про алгоритм в інших практичних машинах. Після успішної перевірки 1,2 критерії ми можемо використовувати наші практичні пристрої / комп’ютери для розробки та впровадження алгоритму.
Машини Тьюрінга - це хороші розумові вправи з невеликим практичним використанням. Немає шкоди в тому, щоб не мати такого. Усі програми машини Тьюрінга є інтуїтивно зрозумілими або є предметом релігії, тому що їх неможливо довести чи спростувати.