Цитата довольно расплывчатая и неточная. Есть как минимум три взаимосвязанных способа интерпретации.
Буквально математический момент позади этого состоит в том, что, если вас интересуют только случаи размером до некоторого предела, то существует только конечное число возможных экземпляров. Например, существует только конечное число графов до ста вершин. Если существует только конечное число экземпляров, вы, в принципе, можете решить проблему, просто составив справочную таблицу со всеми ответами на все возможные экземпляры. Теперь вы можете найти ответ, сначала проверив, что вход не слишком большой (что занимает постоянное время: если вход длиннее, чем К, это неверно), а затем ищите ответ в таблице (что занимает постоянное время: в таблице есть фиксированное количество записей). Обратите внимание, что фактический размер таблицы, вероятно, невероятно велик. Я сказал, что на сто вершин есть только конечное число графов, и это правда. Просто конечное число больше, чем количество атомов в наблюдаемой вселенной.
Более практичное дело, что, когда мы говорим , что время работы алгоритма является , это означает только то , что она асимптотически с п 2 шага, для некоторой константы C . То есть существует некоторая константа n 0 такая, что для всех n ≥ n 0 алгоритм выполняет примерно c n 2 шагов. Но возможноΘ ( н2) с п2СN0n ≥ n0с п2N0= 100 , 000 , 000и вы заинтересованы только в случаях размера гораздо меньше, чем это. Асимптотическая квадратичная граница может даже не относиться к вашим маленьким экземплярам. Вам может повезти, и это может быть быстрее на небольших входах (или вам может не повезти, и это будет медленнее). Например, для малых , n 2 < 1000 n, поэтому вам лучше запустить квадратичный алгоритм с хорошими константами, чем линейный алгоритм с плохими константами. Реальный пример этого - асимптотически наиболее эффективные алгоритмы умножения матриц (варианты Копперсмита-Винограда , работающие во времени O (NN2< 1000 н ) редко используются на практике, потомучто O ШтрассенаO ( n2,3729) алгоритм работает быстрее, если ваши матрицы не очень большие.O ( n2,8074)
Третий момент заключается в том, что, если мало, n 2 и даже n 3 малы. Например, если вам нужно отсортировать несколько тысяч элементов данных, и вам нужно отсортировать их только один раз, любой алгоритм сортировки достаточно хорош:NN2N3Θ ( н2)Алгоритму все еще потребуется несколько десятков миллионов инструкций для сортировки ваших данных, что совсем немного времени на процессоре, который может выполнять миллиарды инструкций в секунду. Хорошо, есть и доступ к памяти, но даже медленный алгоритм займет меньше секунды, поэтому, вероятно, лучше использовать простой, медленный алгоритм и понять его правильно, чем использовать сложный, быстрый алгоритм и обнаружить, что он молниеносный но глючит и не сортирует данные должным образом.