Pour élaborer un peu sur les affirmations «c'est impossible», voici un simple croquis de preuve.
Nous pouvons modéliser des algorithmes avec sortie par Turing Machines qui s'arrêtent avec leur sortie sur leur bande. Si vous voulez avoir des machines qui peuvent s'arrêter en acceptant avec une sortie sur leur bande ou en rejetant (dans ce cas, il n'y a pas de sortie), vous pouvez facilement trouver un encodage qui vous permet de modéliser ces machines avec le "stop ou stop non", il n'y a pas de machines à rejeter.
Supposons maintenant que j'ai un algorithme P pour déterminer si deux de ces MT ont la même sortie pour chaque entrée. Puis, étant donné un TM A et une entrée X , je peux construire un nouveau TM B qui fonctionne comme suit:
- Vérifiez si l'entrée est exactement X
- Si oui, entrez une boucle infinie
- Si non, exécutez A sur l'entrée
Maintenant , je peux courir P sur A et B . B ne s'arrête pas sur X , mais a la même sortie que A pour toutes les autres entrées, donc si et seulement si A ne s'arrête pas sur X, ces deux algorithmes ont la même sortie pour chaque entrée. Mais P était supposé pouvoir dire si deux algorithmes ont la même sortie pour chaque entrée, donc si nous avions P, nous pourrions dire si une machine arbitraire s'arrête sur une entrée arbitraire, ce qui est le problème de l'arrêt. Puisque le problème de l'arrêt est connu pour être indécidable, P ne peut pas exister.
Cela signifie qu'il n'y a pas d'approche générale (calculable) pour déterminer si deux algorithmes ont la même sortie qui fonctionne toujours, vous devez donc appliquer un raisonnement particulier à la paire d'algorithmes que vous analysez. Cependant, dans la pratique, il peut y avoir des approches calculables qui fonctionnent pour de grandes classes d'algorithmes, et il existe certainement des techniques que vous pouvez utiliser pour essayer de trouver une preuve pour un cas particulier. La réponse de Dave Clarke vous donne quelques éléments pertinents à regarder ici. Le résultat de "l'impossibilité" ne s'applique qu'à la conception d'une méthode générique qui résoudra le problème une fois pour toutes, pour toutes les paires d'algorithmes.