A citação é bastante vaga e imprecisa. Há pelo menos três maneiras relacionadas pelas quais ele pode ser interpretado.
O ponto matemático literal por trás disso é que, se você estiver interessado apenas em instâncias de tamanho até algum limite, haverá apenas muitas instâncias possíveis. Por exemplo, existem apenas finitamente muitos gráficos em até cem vértices. Se houver apenas um número finito de instâncias, você poderá, em princípio, resolver o problema apenas construindo uma tabela de consulta de todas as respostas para todas as instâncias possíveis. Agora, você pode encontrar a resposta verificando primeiro se a entrada não é muito grande (o que leva tempo constante: se a entrada for maior que k, é inválido) e procure a resposta na tabela (que leva tempo constante: há um número fixo de entradas na tabela). Observe, no entanto, que o tamanho real da tabela é provavelmente incomensuravelmente grande. Eu disse que há apenas um número finito de gráficos em cem vértices e é verdade. Só que o número finito é maior que o número de átomos no universo observável.
Um ponto mais prático é que, quando dizemos que o tempo de execução de um algoritmo é , isso significa apenas que é assintoticamente c n 2 passos, para um C constante . Ou seja, existe uma constante n 0, de modo que, para todos os n ≥ n 0 , o algoritmo leva aproximadamente c n 2 etapas. Mas talvez n 0 = 100 , 000 , 000Θ(n2) cn2Cn0n≥n0cn2n0=100,000,000e você só está interessado em instâncias de tamanho muito menor que isso. O limite quadrático assintótico pode nem se aplicar às suas pequenas instâncias. Você pode ter sorte e pode ser mais rápido com pequenas entradas (ou pode ter azar e ser mais lento). Por exemplo, para pequeno , n 2 < 1000 n , é melhor executar um algoritmo quadrático com boas constantes do que um algoritmo linear com constantes ruins. Um exemplo prático disto é que os algoritmos de multiplicação de matrizes assintoticamente mais eficientes (variantes de Galveston-Winograd , executando em tempo O ( n 2,3729 ) ) são raramente utilizados na prática por causa de Strassen ónn2< 1000 nO ( n2,3729) algoritmo é mais rápido, a menos que suas matrizes sejam realmente grandes.O ( n2,8074)
Um terceiro ponto é que, se é pequeno, n 2 e até n 3 são pequenos. Por exemplo, se você precisar classificar alguns milhares de itens de dados e classificá-los apenas uma vez, qualquer algoritmo de classificação será suficiente: a Θ ( n 2 )nn2n3Θ ( n2)o algoritmo ainda precisará apenas de algumas dezenas de milhões de instruções para classificar seus dados, o que não leva muito tempo em uma CPU capaz de executar bilhões de instruções por segundo. OK, também existem acessos à memória, mas mesmo um algoritmo lento levará menos de um segundo, então provavelmente é melhor usar um algoritmo simples e lento e acertar do que usar um algoritmo complexo e rápido e descobrir que é muito rápido mas com erros e, na verdade, não classifica os dados corretamente.