Що означає бути Тьюрінгом повним?


34

Я бачу, що більшість визначень того, що означає бути Тюрінгом, є тавтологічними до певної міри. Наприклад, якщо ви Google "що означає" Тюрінг повний ", ви отримуєте:

Комп'ютер є Тьюрінгом повним, якщо він може вирішити будь-яку проблему, яку машина Тьюрінга може ...

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

Що може зробити машина Тьюрінга там, де не існує машини, яка не є Тьюрінгом, яка також може виконувати те саме завдання? Наприклад, комп'ютер може виконувати прості обчислення на кшталт (1+5)/3=?, але звичайний калькулятор також може робити їх, що не є Тюрінгом повним, якщо я прав.

Чи є спосіб визначити можливості машини Тьюрінга, не кажучи лише про те, що "зможемо імітувати іншу машину Тьюрінга"?


31
Знайдіть визначення "машина тюрінга". Немає кругового визначення, оскільки машина Тьюрінга не визначається як "здатна імітувати іншу машину Тьюрінга" - це повністю розроблений теоретичний комп'ютер (в основному, машина нескінченної стрічки). Ви просто змішуєте "тюрінг-завершення" та "машину тюрінга". Наскільки я знаю, ми досі не знаємо жодного алгоритму, який не може працювати на машині Тьюрінга, але це може бути лише моє власне незнання.
Луаан

2
@Luaan Теза Церкви Тюрінга погодилася б з вами.
Брайан МакКучон

"Чи є спосіб визначити можливості машини Тьюрінга". Звичайно. Теорія визначає, скільки простору та часу потрібно для вирішення алгоритмів за допомогою машин Тьюрінга (L, NL, P, NP, PSPACE тощо), а також є проблеми, які неможливо вирішити (які зазвичай можна вирішити скороченням до інші нерозв'язні проблеми). Одним із прикладів проблеми, яку неможливо вирішити машинами Тьюрінга, є проблема зупинки.
Міллі Сміт

Що стосується CS (або будь-якої іншої) теорії, то завжди краще прочитати книгу на тему, ніж гугнути її та прочитати кілька публікацій блогу на тему, які в багатьох випадках написані людьми, які не повністю розуміють тему себе. Одна гарна книга заощадить ваш час, дасть вам ширшу картину та краще розуміння.
Божидар Сіканіч

Функція Акермана є яскравим прикладом того, що машина Тьюрінга може обчислити, але більш обмежена модель обчислення ( примітивна рекурсія ) не може.
zwol

Відповіді:


13

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

Але що це означає?

Що означає бути Тьюрінгом повним?

Чи є спосіб визначити можливості машини Тьюрінга, не кажучи лише про те, що "зможемо імітувати іншу машину Тьюрінга"?

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

(Примітка. Щоб дізнатися, чому це "неформально", ознайомтеся з цим тезою Церкви Тюрінга, яка йде лінії, з більш детальною формулюванням; хоча це теза, вона могла б чи не могла бути правильною. Хоча завдяки @DavidRicherby для вказуючи цей невеликий недолік у коментарі.)

"Алгоритм" означає те, що ми сьогодні зазвичай розуміємо як комп'ютерний алгоритм; серія дискретних кроків, що маніпулюють зберіганням, з змішаною логікою управління. Однак вона не схожа на машину Oracle, тобто вона не може «здогадуватися».

Приклад практичної мови, що не стосується tc

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

Це один приклад конструкції, якої немає Turing завершеною. Ви можете легко знайти вправи, де просто неможливо створити регулярний вираз, який відповідає певним фразам.

Наприклад (і це, безумовно, заплутало багатьох програмістів у фактичних реальних програмах), теоретично і практично неможливо створити регулярний вираз, який відповідає мові програмування або документу XML: неможливо знайти регулярний вираз блокової структури ( do ... endабо { ... }мовами; відкривання та закриття тегів у XML-документах), якщо вони можуть бути довільно глибокими. Якщо там є обмеження, наприклад, ви можете мати лише 3 рівні "рекурсії", то ви можете знайти регулярний вираз; але якщо вона не обмежена, то це не піде.

Оскільки, очевидно, можна створити програму на мові, що повністю завершує Тьюрінга (наприклад, C) для розбору вихідного коду (будь-який компілятор робить це), регулярні вирази ніколи не зможуть імітувати згадану програму, отже, вони за визначенням не є повним Тьюрінга

Мотивація

Ідея машини тюрінга сама по собі - нічого практичного; Тюрінг, звичайно, не вигадав цього, щоб створити справжній комп'ютер або щось подібне, на відміну, наприклад, від Чарльза Беббіджа чи фон Ноймана. Концепція машини Тюрінга полягає в тому, що надзвичайно просто. Він складається майже з нічого. Це зводить можливі (і фактичні) комп’ютери до найменшого уявного мінімуму.

Сенс цього спрощення, у свою чергу, полягає в тому, що це дозволяє легко (іш) замислюватися про теоретичні питання (як зупинка проблем, класи складності і все, що турбує теоретична інформатика). Однією з особливостей зокрема є те, що це зазвичай дуже легко перевірити, чи може дана мова чи комп’ютер змоделювати машину Тьюрінга, просто програмувавши цю машину Тьюрінга (що так просто!) На цій мові.

До нескінченності

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

... і за його межами

Один вражаючий останній пункт, то, що така проста, проста річ може зробити все , що будь-який можливий реальний комп'ютер міг коли - або , у всьому всесвіті, виконуй (тільки дуже повільно) - по крайней мере , наскільки ми знаємо сьогодні.


"Неофіційно кажучи, бути Тюрінгом повним означає, що ваш механізм може запускати будь-який алгоритм, про який ви могли б придумати" Ну, це залежить від прийняття тези Церкви-Тьюрінга, яка говорить про те, що машини Тьюрінга можуть реалізувати будь-який алгоритм, про який ви можете придумати. Або, як варіант визначення алгоритму, ви можете прийняти машини Тьюрінга, і в цьому випадку неофіційна заява є лише неофіційною версією "може імітувати будь-яку машину Тьюрінга" (що не погано; просто спостереження).
Девід Річербі

Моє враження було, що ОП запитує про інтуїтивне розуміння того, що означає бути завершеним. Звідси, такий вид легковажної, не теоретико-інформатичної відповіді. Дякую, що вказав на це, я інтегрую його у відповідь. @DavidRicherby
AnoE

Спасибі! Ось така відповідь я шукав. Я замислювався над проблемою зупинки, а також про те, як мови з простими обмеженими циклами передбачувані (вони завжди зупиняються) - і, таким чином, не є Тюрінгом завершеним. Я думав, можливо, бути Тьюрінгом - це означає бути якось потенційно непередбачуваним (хаотичний правильний термін для цих функцій?)
sashoalm

@sashoalm, радий, що тобі подобається відповідь. Ні, непередбачуваність насправді не впливає на проблему. Примітний для-циклів (як non-tc) також є приємним прикладом. Насправді, ще одним хорошим прикладом для простої (і більш реальної) мови tc може бути та, яка просто має змінні та (без обмежень) while- цього вже достатньо, щоб бути tc. (Не) обмеженість структури управління є одним з ключових елементів.
AnoE

38

Це зовсім не тавтологічно.

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

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

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

Чи є спосіб визначити можливості машини Тьюрінга, не кажучи лише про те, що "зможемо імітувати іншу машину Тьюрінга"?

Я не впевнений, що ви маєте на увазі під «визначення можливостей машин Тьюрінга». Можливості визначаються з точки зору автомата з кінцевим станом, що працює на нескінченній стрічці. (Я не повторюю повне визначення, але ви можете знайти його, наприклад, у Вікіпедії .)


19
Я думаю, що ОП змішує машину Тьюрінга і Тьюрінга завершено. Що він насправді шукає, це визначення машини Тюрінга; ваше останнє речення - це відповідь. en.wikipedia.org/wiki/Turing_machine допоможе.
JollyJoker

То що може зробити машина Тьюрінга? Як, наприклад, якщо я хотів довести, що щось може наслідувати машину Тюрінга, то який мінімальний набір поведінки я повинен бути в змозі продемонструвати, що моя машина теж може зробити?
Акшат Махаджан

2
Неважливо, я розробив, що достатньо продемонструвати, що мова може імітувати спосіб роботи машини Тьюрінга, щоб довести, що вона є повною Тьюрінгом.
Акшат Махаджан

17

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

Комп'ютер є Тьюрінгом, якщо він може вирішити будь-яку проблему, яку може Excel.

Це працює, оскільки Excel також завершений Тьюрінгом. Рекомендую переглянути сторінку Вікіпедії щодо дисертації Церкви Тьюрінга та оглядовий документ про Бласа та Гуревича « Алгоритми: пошуки абсолютних визначень». .


Що стосується вашого запитання, що може зробити машина Тьюрінга, що машина, яка не є Тьюрінгом, не може, загалом відповідь, на жаль, залежить від машини, яка не є Тьюрінгом.

Однак можна визначити нетривіальні поняття задач, повних Тьюрінга, наприклад:

LАfаАf(а)L

Згідно з цим визначенням, придатні кодування проблеми зупинки є повним Тьюрінгом, і тому для розумного класу машин (залежно від визначення "ефективно обчислювані") машина є Тьюрінг-повним iff, вона може реалізувати деякі (рівнозначно, всі ) Мова Тюрінга - повна.

Існує багато інших проблем, повних Тьюрінга, сприйнятих цим формалізмом, залежно від визначення "ефективно обчислюваних", таких як проблема листування Тюрінга та проблем, що стосуються плиток Ванга та Гра життя. Будь-яка з цих проблем може функціонувати як орієнтир замість проблеми зупинки.


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

5
Excel is also Turing-complete.- тільки якщо ви можете дати Excel нескінченну пам'ять. Excel обмежений 1048 576 рядками та 16 384 стовпцями, що дуже не вистачає нескінченності.
MattClarke

5
@MattClarke: Це правда, але нічим не побудована система, яка ніколи не будується, є Тьюрінгом.
Еміль

3
@Emil: саме, і важливо, щоб учні CS розрізняли можливості обчислювальних моделей та можливостей реальних машин. Зрозуміло, що з нас, хто неодноразово потрапляв у фізичні межі наших реальних машин, цю відмінність легко зробити. Тож ми начебто знаємо, як би ми визначили необмежену версію обчислювальної моделі Excel, і що це буде цілком Тюрінг. Навіть незважаючи на те, що насправді таке визначення виходить нахабно
Стів Джессоп

4
@SteveJessop Фізичні межі машин? Як хто-небудь міг бити таке? 640k вистачить кожному!
Девід Річербі

4

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

мк

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

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


0

Машина Тьюрінга може обчислювати той самий набір функцій, що і універсальний квантовий комп'ютер, який може імітувати будь-яку фізичну систему:

https://www.cs.princeton.edu/courses/archive/fall04/cos576/papers/deutsch85.pdf

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

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