Typischerweise haben effiziente Algorithmen eine polynomielle Laufzeit und einen exponentiell großen Lösungsraum. Dies bedeutet, dass das Problem in zweierlei Hinsicht einfach sein muss: Erstens kann das Problem in einer polynomiellen Anzahl von Schritten gelöst werden, und zweitens muss der Lösungsraum sehr strukturiert sein, da die Laufzeit nur in der Anzahl der möglichen Lösungen polylogarithmisch ist.
Manchmal gehen diese beiden Begriffe jedoch auseinander, und ein Problem ist nur im ersten Sinne einfach. Eine gängige Technik für Approximationsalgorithmen und parametrisierte Komplexität besteht beispielsweise darin, (grob) zu beweisen, dass der Lösungsraum tatsächlich auf eine viel kleinere Größe als die naive Definition beschränkt werden kann, und dann mithilfe von Brute-Force die beste Antwort in diesem begrenzten Raum zu finden . Wenn wir von vornherein beschränken uns auf, sagen wir, n ^ 3 mögliche Antworten, aber wir müssen noch jeden überprüfen, dann in einem gewissen Sinn , solche Probleme noch „hart“ sind, dass es keinen besseren Algorithmus als Brute-Force.
Umgekehrt, wenn wir ein Problem mit einer doppelt exponentiellen Anzahl möglicher Antworten haben, es aber nur in exponentieller Zeit lösen können, dann möchte ich sagen, dass ein solches Problem "einfach" ist ("strukturiert" ist möglicherweise besser Wort), da die Laufzeit nur die Größe des Lösungsraums protokolliert.
Kennt jemand einen Artikel, der sich mit Härte befasst, die auf der Lücke zwischen einem effizienten Algorithmus und Brute-Force oder Härte im Verhältnis zur Größe des Lösungsraums basiert?