Zwykle wydajne algorytmy mają wielomianowe środowisko wykonawcze i wykładniczo dużą przestrzeń rozwiązania. Oznacza to, że problem musi być łatwy w dwóch aspektach: po pierwsze, problem można rozwiązać w wielomianowej liczbie kroków, a po drugie, przestrzeń rozwiązania musi być bardzo ustrukturyzowana, ponieważ środowisko wykonawcze jest tylko polilogarytmiczne pod względem liczby możliwych rozwiązań.
Czasami jednak te dwa pojęcia się różnią, a problem jest łatwy tylko w pierwszym tego słowa znaczeniu. Na przykład, powszechną techniką w algorytmach aproksymacyjnych i sparametryzowanej złożoności jest (z grubsza) udowodnienie, że przestrzeń rozwiązania można faktycznie ograniczyć do znacznie mniejszego rozmiaru niż naiwna definicja, a następnie użyć brutalnej siły, aby znaleźć najlepszą odpowiedź w tej ograniczonej przestrzeni . Jeśli możemy a priori ograniczyć się do, powiedzmy, n ^ 3 możliwych odpowiedzi, ale nadal musimy sprawdzić każdą z nich, to w pewnym sensie takie problemy są nadal „trudne”, ponieważ nie ma lepszego algorytmu niż brutalna siła.
I odwrotnie, jeśli mamy problem z podwójnie wykładniczą liczbą możliwych odpowiedzi, ale możemy go rozwiązać tylko w wykładniczym czasie, to chciałbym powiedzieć, że taki problem jest „łatwy” („ustrukturyzowany” może być lepszy słowo), ponieważ środowisko wykonawcze jest tylko logiem wielkości obszaru rozwiązania.
Czy ktoś zna jakieś dokumenty, które uważają coś w rodzaju twardości opartej na przepaści między wydajnym algorytmem a brutalną siłą lub twardością w stosunku do wielkości przestrzeni rozwiązania?