Чи підтверджує доказ нерозбірливості Проблема зупинки обернення результатів?


12

У мене виникають проблеми з розумінням проблеми зупинки Тьюрінга.

Його доказ припускає, що існує магічна машина яка могла б визначити, чи буде комп'ютер назавжди зупинений або циклічний для даного входу. Потім ми приєднуємо іншу машину, яка повертає результат, і ми маємо протиріччя, і тому не може існувати.HНН

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

Відповіді:


20

Коротка версія: Виводи машин невірні або неправильні, вони просто суперечливі, що доводить, що початкова машина, яка вирішує, зупиняється машина вводу на заданій рядку чи не може існувати.

Довга версія : Спочатку ми намалюємо доказ (або принаймні одну його версію - їх багато).

  1. Припустимо , що ми маємо машина Тьюринга , який вирішує , є чи машина Тьюринга M зупинок на вході х чи ні.НАLТ(М,х)Мх
  2. Використовуючи ми будуємо машину Р Л Я Р ( М , х ) , який використовує H A L T , щоб перевірити , є чи M зупиняється на х чи ні, то робить протилежне, тобто , якщо M зупиняється на х , F L I P петлі, якщо M не зупиняється на x , F L I P зупиняється.НАLТЖLЯП(М,х)НАLТМхМхЖLЯПМхЖLЯП
  3. Нарешті ми створюємо TM (я вибігла з хороших імен), який приймає опис ТМ і працює F L I P з входом ( M , M ) , виводячи все , що F L I P виходи.С(М)ЖLЯП(М,М)ЖLЯП

Важливо зауважити, що доки існує вирішальний , кожен з цих кроків є простим для здійснення; Р л я Р просто повинен використовувати H A L T , щоб перевірити , що робити, і С просто дублює свій внесок перейти до F L I P .НАLТЖLЯПНАLТСЖLЯП

Протиріччя виникає , коли ми дивимося на те , що відбувається , коли ми запускаємо . Або C зупиняється, подаючи себе як вхідний чи ні. H A L T вирішить так:С(С)СНАLТ

  • Якщо зупиняється на вході C , Н Л Т буде сказати , У е з , але тоді Р л я Р буде цикл, так що C буде цикл, що суперечить H A L T .ССНАLТYесЖLЯПСНАLТ
  • Якщо петлею на вході C , Н Л Т говоритиме N O , але тоді Р л я Р зупиниться, так що С буде також зупинка, що суперечить H A L T .ССНАLТNоFLIPCHALT

Оскільки кожен з етапів побудови чітко звучить, ми можемо лише зробити висновок, що не може існувати; ми побудували випадок, коли незалежно від того, що він говорить, H A L T не може вирішити, що вивести, тобто проблема не може бути вирішена. Просто для того, щоб трохи забитись по точці, H A L T не може існувати - тобто не може бути TM, який вирішує проблему зупинки - тому що існує принаймні один випадок, який ми явно побудували там, де логічно немає можлива відповідь. Пам'ятайте, що рішення не має права виводити неправильну відповідь і має щось виводити, але у випадку, коли ми побудували, обидві можливі відповіді помилкові.HALTHALTHALT


Ваше визначення машини не має сенсу, оскільки воно не приймає жодного з входів, які приймає M. То як воно може працювати? CM
ОлександрХ

7

Ви обговорюєте два різних значення "суперечливого".

У вашій аналогії машина А та її перевернута модифікація суперечать одна одній лише в тому сенсі, що їхні виходи завжди різні. (Наприклад, вони можуть реалізувати дві тестові функції на цілі числа: " x ≤ 5?" Та " x > 5?") Це, безумовно, одне, що "суперечити" може означати в повсякденному використанні, але це не те, що під ним розуміється під логікою докази.

У логічному доведенні це означає щось сильніше: щось, що просто неможливо. Наприклад, функція, яка повертає "true" на всіх входах більше 5, а "false" на всіх входах менше 10 - це суперечливо в цьому більш сильному сенсі, оскільки для, скажімо, 7, його вихід повинен бути одночасно "істинним" і "помилково", але це не те саме. Аргумент Тьюрінга показує, що програма зупинки суперечлива в більш сильному сенсі: припускаючи, що це призводить до чогось неможливого або вже відомо, що є помилковим.


2

Ось ще один доказ того, що проблема зупинки не вирішена. Ми говоримо, що програма виводить рядок якщо вона зупиняється і виводить x . (Якщо програма ніколи не зупиняється, вона не виводить жодної рядки.) Визначте f ( n ) довжину найдовшої рядка, яка виводиться програмою C довжиною не більше n .xxf(n)n

Припустимо, що проблема зупинки була вирішена. Тоді можна обчислити програмою C:f(m)

На вході запустіть всі програми зупинки C довжиною не більше m і визначте їх вихід; повернути довжину максимального виходу.mm

Це означає, що для кожного ми можемо написати програму P m, яка виводить f ( m ) + 1 нулі. Яка довжина Р м ? Існує фіксований шаблон програми C із заповнювачем, який реалізує P m ; заповнювач місця повинен бути заповнений постійною m . Визначення m займає | м | символів (тут | m | - довжина десяткового представлення m ), де | м | журнал 10мПмf(м)+1ПмПммм|м||м|м . Шаблон приймає деяку фіксовану кількість T символів, і тому довжина P m дорівнює T + log 10 м . Якщо ми виберемо m досить великий ( m = 2 T би це зробив), у нас буде T + log 10 m m , і тому f ( m ) є щонайменше розміром виведення рядка на P m , тобто f ( m ) f ( m ) + 1|м|журнал10мТПмТ+журнал10ммм=2ТТ+журнал10ммf(м)Пмf(м)f(м)+1. Ми дійшли до суперечності.

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