J'essaie de construire une liste d'algorithmes / problèmes qui sont "exceptionnellement utiles", comme dans la résolution de problèmes qui semblent "de nature très exponentielle", mais qui ont un algorithme particulièrement intelligent qui les résout finalement. Exemples de ce que je veux dire:
- Programmation linéaire (L'algorithme simplex est un temps exponentiel; il a fallu beaucoup de temps pour trouver une solution temporelle polynomiale!)
- Plus généralement, la programmation semi-définie
- Test de primalité
- 2-SAT et HORNSAT
- Déterminants informatiques (si cela ne semble pas difficile, pensez au permanent)
- Trouver des correspondances parfaites
- Une variété de problèmes théoriques de groupes durs qui peuvent être accomplis en utilisant la classification des groupes simples finis
- Une variété de problèmes de graphes durs qui peuvent être accomplis en utilisant des caractérisations mineures interdites compliquées (intégration sur une surface arbitraire; délimitation de la largeur d'arbre et de la largeur de branche; graphiques réductibles Delta-Wye)
- Calcul d'exponentielles dans un groupe borné (c.-à-d. Calcul d' en étapes, comme accompli par la mise au carré répétée)log b
- Calculs reposant sur l'algorithme LLL. (Cas particulier: algorithme euclidien. Cas plus général: algorithmes PSLQ ou HJLS.)
- Problèmes de contraintes sans termes de Taylor (?). J'avoue que je ne comprends pas complètement cela, mais il semble que cela subsume probablement les cas 2-SAT / HORNSAT ci-dessus et toute algèbre linéaire sur des champs finis. Voir ici pour un article plus long
- Problèmes calculables via des réductions holographiques .
En mention honorable, je mentionnerais également l'isomorphisme graphique, car il est toujours extrêmement facile ( ), et équivalent à tant d'autres problèmes d'isomorphisme:
- Digraphes / multigraphs / hypergraphes (une sorte de problème «plus difficile»)
- Automates finis / CFG
Évidemment, il y a une gamme de difficultés dans ces derniers, mais tous laissent au moins certaines personnes avec un certain sentiment de `` surprise '' dans le sens où le problème peut sembler difficile mais s'avérer traitable. LP peut sembler relativement simple, mais il a fallu un certain temps aux gens pour créer une solution réelle. La quadrature répétée ou la résolution de 2-SAT est quelque chose qu'un étudiant de premier cycle pourrait peut-être trouver seul, mais si vous n'aviez appris que des problèmes NP-Complete sans avoir vu HORNSAT, cela pourrait ressembler à un candidat naturel pour NP-Completeness. Résoudre le CFSG ou avoir un moyen polynomial pour vérifier la réductibilité Delta-Wye ne sont pas des exploits moyens.
J'espère que cela a du sens; il y a évidemment beaucoup d'attributs subjectifs ici, mais je suis curieux d'entendre ce que les autres trouvent comme des solutions efficaces à des problèmes "évidemment difficiles".