Чтобы немного уточнить утверждения «невозможно», вот простой набросок доказательства.
Мы можем смоделировать алгоритмы с выводом на машины Тьюринга, которые останавливаются с выводом на ленту. Если вы хотите иметь машины, которые могут останавливаться, принимая либо вывод на их ленту, либо отклоняя (в этом случае нет вывода), вы можете легко придумать кодировку, которая позволяет вам моделировать эти машины с «остановкой или остановкой, нет брака "машины".
Теперь предположим, что у меня есть алгоритм P для определения, имеют ли два таких ТМ одинаковый выход для каждого входа. Затем, учитывая TM A и вход X , я могу построить новую TM B, которая работает следующим образом:
- Проверьте, является ли вход точно X
- Если да, то введите бесконечный цикл
- Если нет, тогда запустите A на входе
Теперь я могу запустить P на A и B . B не останавливается на X , но имеет тот же вывод, что и A для всех других входных данных, поэтому, если и только если A не останавливается на X, тогда эти два алгоритма имеют одинаковый выход для каждого входа. Но предполагалось, что P сможет определить, имеют ли два алгоритма одинаковые выходные данные для каждого входа, поэтому, если бы у нас был P, мы могли бы сказать, останавливается ли произвольная машина на произвольном входе, что является проблемой остановки. Поскольку известно, что проблема остановки является неразрешимой, P не может существовать.
Это означает, что не существует общего (вычислимого) подхода к определению того, имеют ли два алгоритма один и тот же вывод, который всегда работает, поэтому вы должны применить рассуждения, специфичные для пары алгоритмов, которые вы анализируете. Однако на практике могут быть вычислимые подходы, которые работают для больших классов алгоритмов, и, безусловно, есть методы, которые вы можете использовать, чтобы попытаться выработать доказательство для любого конкретного случая. Ответ Дейва Кларка дает вам некоторые важные вещи, которые стоит посмотреть здесь. Результат «невозможности» относится только к разработке общего метода, который решит проблему раз и навсегда для всех пар алгоритмов.