Щоб трохи детальніше зупинитися на твердженнях "неможливо", ось простий ескіз доказу.
Ми можемо моделювати алгоритми з виведенням машинами Тьюрінга, які зупиняються на виході на стрічку. Якщо ви хочете мати машини, які можуть зупинятися, приймаючи з виведенням на їх стрічку або відхиляючи (у такому випадку виходу немає), ви можете легко створити кодування, яке дозволяє моделювати ці машини з "зупиняти чи не зупиняти, немає машин для відхилення ".
Тепер припустимо, що у мене є алгоритм P для визначення того, чи мають дві такі ТМ однаковий вихід на кожен вхід. Тоді, даючи TM A і вхід X , я можу побудувати нову TM B, яка працює так:
- Перевірте, чи точно вхід X
- Якщо так, то введіть нескінченну петлю
- Якщо ні, то запустіть A на вході
Тепер я можу запустити P на A і B . B не зупиняється на X , але має такий самий вихід, як і A для всіх інших входів, тому якщо і тільки якщо A не зупиняється на X, то ці два алгоритми мають однаковий вихід для кожного вводу. Але передбачалося, що P зможе визначити, чи мають два алгоритми однаковий вихід на кожен вхід, тож якщо у нас був P, ми могли б сказати, чи зупиняється довільна машина на довільному вході, що є проблемою зупинки. Оскільки проблема зупинки, як відомо, не може бути вирішена, P не може існувати.
Це означає, що не існує загального (обчислюваного) підходу до визначення того, чи мають два алгоритми однаковий вихід, який завжди працює, тому вам потрібно застосувати конкретні міркування до пари алгоритмів, які ви аналізуєте. Однак на практиці можуть бути обчислювальні підходи, які працюють для великих класів алгоритмів, і, безумовно, є методи, які можна використовувати, щоб спробувати опрацювати доказ для будь-якого конкретного випадку. Відповідь Дейва Кларка дає вам кілька релевантних речей, які слід подивитися тут. Результат "неможливості" стосується лише розробки загального методу, який вирішить проблему раз і назавжди для всіх пар алгоритмів.