Чи можливо, що проблема зупинки вирішена для всіх входів, крім коду машини?


9

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

Чи можливо, що проблема зупинки вирішується для будь-якого ТМ на будь-якому вході, якщо вхід не є самою TM? В основному:

Halts(TM, I)
    IF TM == I:
        Undecidable, return a random result/throw an exception, whatever
    ELSE:
        Solve the problem

Halts'(X)
    IF Halts(X, X):
        Loop infinitely
    ELSE:
        Print 'done'

Це, здавалося б, вирішує протиріччя. Коли ми називаємо парадоксальними Halts '(Halts'), ми не можемо очікувати послідовної поведінки, але всі інші виклики Halts (і Halts ') є законними та вирішуваними.

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

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

Дякуємо за будь-яку допомогу.


7
Кінцеві зміни не впливають на рішучість.

існує нескінченна кількість еквівалентних ТМ, і немає (вирішуваного) способу виявлення еквівалентних ТМ (тобто, це по суті те саме, що і сама проблема зупинки). проте є деякі складні "лазівки"; спробуйте Computer Science Chat для подальшого аналізу проблеми зупинки, пов’язаної з автоматизованим доведенням thm тощо. Можливо, спробуйте підготувати це до відповіді ...
vzn

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

Відповідь ні, як у цій відповіді cstheory.stackexchange.com/questions/2853/…
Мохаммед Алагон

Відповіді:


4

Але ми можемо легко обійти ваше обмеження. Припустимо, програма яка обертає біти вхідного сигналу і викликає ваш за результатом, а потім визначає з усіма бітами, оберненими назад (тобто 0 для 1s, 1s для 0s). Тоді ми можемо назвати ваш допомогою і повернемося до початкової проблеми.GH!HHG(!H)


Дякую. Прочитавши відповідь @David Richerby, я почав думати, що це відповідь. Якщо ми зможемо побудувати функціонально еквівалентний Q 'для всіх програм Q, то ми можемо ще раз вирішити переривчастість для всіх проблем, а не лише тих, що виходять з діагоналі. Я бачу, що це ви говорите.
CS101

12

Нагадаємо стандартний доказ нерозбірливості проблеми зупинки. Припустимо, що деяка машина  вирішує проблему зупинки, і нехай - машина, яка при вході  використовує  щоб визначити, чи зупиняється і, якщо так,  петлі ; в іншому випадку  зупиняється. Тепер зупиняється, якщо і лише якщо він не зупиняється.HQMHM(M)QQQ(Q)

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

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

По-друге, якщо ви модифікували  для виявлення цього входу, ми могли б отримати те саме протиріччя, використовуючи будь-яку іншу машину  яка еквівалентна  у тому сенсі, що для будь-якого вводу  ,  зупиняється, якщо і тільки якщо ,  зупинки. Їх існує нескінченно багато, і  не може їх виявити, тому що не можна визначити, чи є дві машини Тьюрінга рівнозначними.HQQwQ(w)Q(w)H


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

Дякую за відповідь. Чи не визначуваність того, чи є програми функціонально еквівалентними сама по собі, походить від нерозбірливості проблеми зупинки? Чому це не було б круговим міркуванням?
CS101

1
@ CS101: нерозбірливість - це теорема раз і назавжди, ми не «обманюємо», коли використовуємо її, щоб показати, що неможливо вирішити іншу проблему яку намагається отримати навколо обмеження. Як бічна примітка, ми прагматично знаємо, як довести припинення чи припинення багатьох практичних програм (тільки не всіх програм). Однак довести еквівалентність програм виявляється значно важче на практиці (хоча вони обидві не можна визначити). HALTHALT
коді

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