Comme beaucoup de gens, je suis un grand utilisateur de logiciels mathématiques tels que Mathematica et Maple. Cependant, je suis devenu de plus en plus frustré par les nombreux cas où un tel logiciel vous donne simplement la mauvaise réponse sans avertissement. Cela peut se produire lors de l'exécution de toutes sortes d'opérations, des sommes simples à l' optimisation, parmi de nombreux autres exemples.
Je me demandais ce qui pouvait être fait à propos de ce grave problème. Ce qui est nécessaire, c'est un moyen de permettre à l'utilisateur de vérifier l'exactitude d'une réponse donnée afin qu'il ait une certaine confiance dans ce qu'on lui dit. Si vous deviez obtenir une solution d'un collègue en mathématiques, il / elle pourrait simplement s'asseoir et vous montrer son travail. Cependant, cela n'est pas possible pour un ordinateur dans la plupart des cas. L'ordinateur pourrait-il plutôt vous donner un témoin simple et facilement vérifiable de l'exactitude de leur réponse? La vérification peut être effectuée par ordinateur, mais nous espérons que la vérification de l'algorithme de vérification sera beaucoup plus facile que la vérification de l'algorithme pour produire le témoin en premier lieu. Quand serait-ce possible et comment cela pourrait-il être formalisé
Donc, en résumé, ma question est la suivante.
Serait-il possible au moins en théorie pour un logiciel mathématique de fournir une courte preuve vérifiable avec la réponse que vous avez demandée?
Un cas trivial où nous pouvons le faire immédiatement est bien sûr la factorisation des entiers ou de nombreux problèmes classiques NP-complets (par exemple le circuit hamiltonien, etc.).
la source
Réponses:
Le concept de «témoins» ou de «preuves vérifiables» n'est pas totalement nouveau: comme mentionné dans les commentaires, recherchez le concept de «certificat». Trois exemples me sont venus à l'esprit, il y en a plus (dans les commentaires et ailleurs):
Kurt Mehlhorn a décrit en 1999 un problème similaire dans les algorithmes de géométrie computationnelle (par exemple, des erreurs mineures dans les coordonnées peuvent générer de grosses erreurs dans les résultats de certains algorithmes), résolus de manière similaire dans la bibliothèque Leda , en insistant pour que chaque algorithme produise un "certificat" de sa réponse en plus de la réponse elle-même.
Demaine, Lopez-Ortiz et Munro en 2000 ont utilisé les concepts de certificats (ils les appellent "preuves") pour montrer des limites inférieures adaptatives sur le calcul de l'union et de l'intersection (et de la différence, mais celle-ci est triviale) d'ensembles triés. N'excluez pas leur travail car ils n'ont pas utilisé de certificats pour se protéger contre les erreurs de calcul: ils ont montré que même si le certificat peut être linéaire dans la taille de l'instance dans le pire des cas, il est souvent plus court et peut donc être "vérifié" "en temps sublinéaire (accès aléatoire à l'entrée sous forme de tableau trié ou d'arborescence B), et en particulier en moins de temps que nécessaire pour calculer un tel certificat.
J'utilise le concept de certificats sur divers autres problèmes depuis que j'ai vu Ian Munro présenter leur implémentation à Alenex 2001 , et en particulier pour les permutations (excuses pour la fiche sans vergogne, une autre arrive), où le certificat est plus court dans le meilleur des cas que dans le pire ou le cas moyen, ce qui donne une structure de données compressée pour les permutations. Là encore, la vérification du certificat (ie la commande) prend au maximum un temps linéaire, moins que le calcul (ie le tri).
Le concept n'est pas toujours utile pour la vérification des erreurs: il y a des problèmes où la vérification du certificat prend autant de temps que sa production (ou simplement la production du résultat). Deux exemples me viennent à l'esprit, un trivial et un compliqué, Blum et Kannan (mentionnés dans les commentaires) en donnent d'autres.
La bibliothèque Leda est l'effort le plus général (à ma connaissance) visant à faire des algorithmes déterministes producteurs de certificats la norme dans la pratique. L'article de Blum et Kannan est le meilleur effort que j'ai vu pour en faire la norme en théorie, mais ils montrent les limites de cette approche.
J'espère que ça aide...
la source