Probleme – SAT : vérifier est facile, chercher ne l'est pas
Exercice · niveau 3 (difficile) · informatique (MP2I/MPI), chapitre 31 — Décidabilité et classes de complexité
Énoncé
- Écrire l'algorithme exhaustif pour sat, et donner sa complexité.
- Écrire le vérificateur, et donner la sienne.
- Mesurer les deux, et commenter l'écart.
- Que se passerait-il si l'on trouvait un algorithme polynomial pour sat ?
Corrigé
1. L'exhaustif. Une formule en forme normale conjonctive sur variables et clauses. On énumère les valuations.
pour chaque entier k de 0 a 2^n - 1
val <-- les n bits de k
si toutes les clauses sont satisfaites par val
alors rendre val
rendre "insatisfiable"
Terminaison : la boucle est bornée. Correction : on essaie toutes les valuations ; si aucune ne convient, il n'y en a pas. Complexité : dans le pire cas — atteint exactement quand la formule est insatisfiable, puisqu'il faut alors aller au bout.
2. Le vérificateur.
verifier(phi, val) :
pour chaque clause de phi
si aucun litteral de la clause n'est vrai sous val
alors rendre faux
rendre vrai
Complexité : — une lecture de la formule. Le certificat est la valuation, soit bits : de taille linéaire en l'entrée. Les deux conditions de la définition de sont donc remplies, et sat .
3. Les mesures. Sur des formules -fnc aléatoires à clauses :
| Réponse | Recherche | Vérification | ||
|---|---|---|---|---|
| insatisfiable | s | --- | ||
| satisfiable | s | s | ||
| satisfiable | s | s | ||
| satisfiable | s | s | ||
| insatisfiable | s | --- |
Trois lectures.
- Le temps de recherche double à chaque variable ajoutée. De à , il est multiplié par — l'instance était en outre insatisfiable, donc parcourue en entier.
- Le temps de vérification ne bouge pas : quelques dizaines de microsecondes, proportionnelles à la taille de la formule et non à . Le rapport est de à dès . (Les deux instances insatisfiables n'ont pas de certificat à vérifier : la colonne y est vide.)
- Les cas satisfiables s'arrêtent souvent tôt — valuations essayées sur pour —, mais c'est de la chance, pas une garantie : le pire cas reste .
Cet écart est la question , rendue mesurable : la colonne de droite est polynomiale, celle de gauche ne l'est pas, et personne ne sait si l'on peut rapprocher les deux.
4. Les conséquences d'un algorithme polynomial pour sat. Elles sont considérables, et il faut les énoncer précisément.
- Par Cook-Levin, tout problème de se réduit polynomialement à sat. On aurait donc : tous les problèmes à certificat vérifiable deviendraient résolubles vite.
- Toutes les optimisations dont la version décision est dans suivraient, par la dichotomie sur le seuil.
- Les fondements de la cryptographie à clé publique s'effondreraient — la sécurité y repose sur l'idée qu'on vérifie facilement ce qu'on ne trouve pas.
Et une conséquence moins souvent dite, qui vaut d'être retenue : trouver une démonstration mathématique de longueur bornée deviendrait aussi facile que la vérifier. C'est la raison profonde pour laquelle presque tout le monde conjecture que .
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.