En règle générale, les algorithmes efficaces ont un runtime polynomial et un espace de solution exponentiellement grand. Cela signifie que le problème doit être facile dans deux sens: premièrement, le problème peut être résolu en un nombre polynomial d'étapes, et deuxièmement, l'espace de la solution doit être très structuré car le temps d'exécution n'est que polylogarithmique dans le nombre de solutions possibles.
Cependant, parfois ces deux notions divergent, et un problème n'est facile que dans le premier sens. Par exemple, une technique courante dans les algorithmes d'approximation et la complexité paramétrée consiste (grossièrement) à prouver que l'espace de solution peut en fait être restreint à une taille beaucoup plus petite que la définition naïve, puis à utiliser la force brute pour trouver la meilleure réponse dans cet espace restreint. . Si nous pouvons a priori nous limiter à, disons, n ^ 3 réponses possibles, mais nous devons toujours vérifier chacune d'elles, alors dans un certain sens, ces problèmes sont toujours "difficiles" en ce sens qu'il n'y a pas de meilleur algorithme que la force brute.
Inversement, si nous avons un problème avec un nombre doublement exponentiel de réponses possibles, mais que nous pouvons le résoudre en un temps exponentiel seulement, alors je voudrais dire qu'un tel problème est "facile" ("structuré" peut être un meilleur mot) car le runtime n'est que le journal de la taille de l'espace de la solution.
Quelqu'un connaît-il des articles qui envisagent quelque chose comme la dureté basée sur l'écart entre un algorithme efficace et la force brute ou la dureté par rapport à la taille de l'espace de la solution?
Comment feriez-vous face à des problèmes de programmation dynamique typiques? Ici, ce qui se produit souvent, c'est que l'espace des solutions optimales est polynomialement limité, mais pas l'espace des solutions. Cela semble donc «facile» dans votre sens, car le temps d'exécution est logarithmique dans l'espace de la solution, mais il est «difficile» dans votre sens, car il exécute la «force brute» sur toutes les solutions potentiellement optimales.
la source
La perspective semble supposer certaines choses, comme la finitude des espaces de solution.
Par exemple, réfléchissez au problème de la génération d'une tesselation de Voronoï à partir d'un ensemble de points d'entrée. Ici, il y a un espace de solution de taille infinie car chaque point dans les bords du diagramme est un tuple de nombres réels. Pourtant une solution peut être trouvée en O (n log (n)) dans le nombre de points d'entrée (pour l'avion).
la source
Les problèmes qui admettent des algorithmes avec un retard polynomial sont liés . La première solution, et chaque solution par la suite, peut être générée en temps polynomial. Johnson, Yannakakis et Papdimitriou discutent de ce cadre dans le contexte d'autres lacunes possibles (telles que le temps total polynomial): On Generating All Maximal Independent Sets , Information Processing Letters 27 , 119-123, 1988.
la source