Cytat jest raczej niejasny i nieprecyzyjny. Istnieją co najmniej trzy powiązane sposoby interpretacji.
Dosłowny matematyczny punkt za tym jest taki, że jeśli interesują Cię tylko przypadki wielkości do pewnego limitu, istnieje tylko wiele możliwych przypadków. Na przykład istnieje tylko skończona liczba wykresów na maksymalnie stu wierzchołkach. Jeśli istnieje tylko skończona liczba instancji, możesz w zasadzie rozwiązać problem, po prostu konstruując tabelę przeglądową wszystkich odpowiedzi na wszystkie możliwe instancje. Teraz możesz znaleźć odpowiedź, najpierw sprawdzając, czy dane wejściowe nie są zbyt duże (co zajmuje stały czas: jeśli dane wejściowe są dłuższe niż k, jest niepoprawna), a następnie odszukaj odpowiedź w tabeli (co zajmuje cały czas: w tabeli jest stała liczba wpisów). Zauważ jednak, że rzeczywisty rozmiar stołu jest prawdopodobnie niemożliwie duży. Powiedziałem, że jest tylko skończona liczba wykresów na stu wierzchołkach i to prawda. Po prostu liczba skończona jest większa niż liczba atomów we obserwowalnym wszechświecie.
Bardziej praktyczne jest to, że, gdy mówimy, że czas działania algorytmu jest , że jedynym sposobem, który jest asymptotycznie c n dwa etapy, na pewnej stałej C . Oznacza to, że istnieje pewna stała n 0 taka, że dla wszystkich n ≥ n 0 algorytm wykonuje z grubsza c n 2 kroków. Ale może n 0 = 100 , 000 , 000Θ(n2) cn2Cn0n≥n0cn2n0=100,000,000a interesują Cię tylko przypadki o wiele mniejsze niż to. Ta asymptotyczna granica kwadratowa może nawet nie dotyczyć twoich małych instancji. Możesz mieć szczęście i może być szybszy przy małych nakładach (lub możesz mieć pecha i sprawić, że będzie wolniejszy). Na przykład dla małych , n 2 < 1000 n, więc wolisz uruchomić algorytm kwadratowy z dobrymi stałymi niż algorytm liniowy ze złymi stałymi. A Przykład prawdziwe do tego jest to, że asymptotycznie najbardziej efektywne algorytmy macierzy (warianty Coppersmith-Winograd , działa w czasie O ( n 2,3729 ) ), rzadko stosuje się w praktyce, ponieważ Strassena Onn2<1000nO(n2.3729) algorytm jest szybszy, chyba że macierze są naprawdę duże.O(n2.8074)
Trzecią kwestią jest to, że jeśli jest małe, n 2, a nawet n 3 są małe. Na przykład, jeśli chcesz posortować kilka tysięcy elementów danych i musisz je posortować tylko raz, dowolny algorytm sortowania jest wystarczający: a Θ ( n 2 )nn2n3Θ(n2)Algorytm nadal będzie potrzebował tylko kilkudziesięciu milionów instrukcji do sortowania danych, co wcale nie zajmuje dużo czasu na procesorze, który może wykonać miliardy instrukcji na sekundę. OK, są też dostępy do pamięci, ale nawet powolny algorytm zajmie mniej niż sekundę, więc prawdopodobnie lepiej jest użyć prostego, powolnego algorytmu i zrobić to dobrze niż użyć złożonego, szybkiego algorytmu i przekonać się, że jest błyskawiczny ale zawiera błędy i właściwie nie sortuje danych.