Les algorithmes exponentiels rapides : résoudre un problème en temps exponentiel

Les algorithmes exponentiels rapides, également appelés algorithmes à complexité exponentielle sub-exponentielle, sont des algorithmes qui résolvent certains problèmes en un temps exponentiel, mais avec un taux de croissance beaucoup plus lent que les algorithmes exponentiels classiques. En d'autres termes, ces algorithmes peuvent résoudre des problèmes dont la taille est beaucoup plus grande que ce qui serait possible avec des algorithmes exponentiels classiques.

Un exemple d'algorithme exponentiel rapide est l'algorithme de Schöning pour la résolution de satisfiabilité booléenne (SAT). Le problème SAT consiste à déterminer si une formule booléenne peut être satisfaite (c'est-à-dire, s'il existe une assignation de valeurs de vérité aux variables de la formule qui la rendent vraie). Les algorithmes classiques pour résoudre ce problème ont une complexité exponentielle en fonction du nombre de variables de la formule, mais l'algorithme de Schöning a une complexité de O(2^n/2), où n est le nombre de variables de la formule.

Un autre exemple :  l'algorithme de Shor pour la factorisation d'entiers. La factorisation d'un entier consiste à le décomposer en un produit de facteurs premiers. Cette opération est très difficile pour des nombres très grands, car elle nécessite de tester toutes les possibilités pour trouver les facteurs premiers. Les algorithmes classiques de factorisation ont une complexité exponentielle en fonction de la taille de l'entier, mais l'algorithme de Shor a une complexité de O((log n)^3), où n est la taille de l'entier.

Cependant, il convient de noter que même si ces algorithmes sont plus rapides que les algorithmes exponentiels classiques, ils ne sont pas nécessairement pratiques pour des tailles de problèmes réalistes. Les algorithmes exponentiels rapides ont souvent des constantes très élevées et peuvent nécessiter beaucoup de mémoire, ce qui peut les rendre inutilisables pour des problèmes de grande taille.