У мене виникло питання про проблему зупинки, і я не зміг знайти хорошої відповіді в Інтернеті, цікавившись, чи хтось може допомогти.
Чи можливо, що проблема зупинки вирішується для будь-якого ТМ на будь-якому вході, якщо вхід не є самою 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 збігаються? Але чи можемо ми математично усунути це як можливість?
І ця проблема зменшення зупинки взагалі не була б нецікавою. Навіть якби була якась змістовна програма, яка взяла власний код як вхід, вона могла б тривіально переписати для роботи на дещо іншому введенні. Звичайно, ця пропозиція робить ще менш зрозумілим, чому рішення щодо зупинки може існувати з цим застереженням, але знову ж таки, чи можемо ми реально математично виключити цю можливість?
Дякуємо за будь-яку допомогу.