Isso depende do contexto. Na ciência da computação teórica, geralmente todo algoritmo de tempo polinomial é considerado 'eficiente'. Em algoritmos de aproximação, por exemplo, um tempo de execução de seria considerado eficiente, mesmo que na prática não seja utilizável para qualquer valor razoável deϵ. Um algoritmo para SAT que é executado emn 2 100 seria uma inovação incrível.n1/ϵ1/ϵϵn2100
Em algoritmos clássicos, ou seja, algoritmos dos anos 80 e anteriores, tempos de execução abaixo ou mais (pense em multiplicação de matrizes, correspondência mínima de custos, fluxos, programação linear) são considerados eficientes. Eles ainda são considerados eficientes pela maioria das pessoas, eu diria. Obviamente, umalgoritmo n 2 não é considerado eficiente se um n log nn3n2nlogn algoritmo é conhecida, como por triagem por exemplo.
Atualmente, existe uma tendência para algoritmos sublineares ou algoritmos de streaming capazes de lidar com terabytes de dados. Tente usar a multiplicação de matrizes para calcular a classificação de todas as páginas no índice do Google. Isso não vai funcionar.
É claro que, embora certamente seja útil, o tempo de execução assintótico de um algoritmo não conta toda a história. Existem algoritmos com bom tempo de execução assintótico, mas constantes tão grandes que não podem ser usadas com eficácia. Sempre. Lipton os chama de algoritmos galácticos . Robert Sedgewick até afirma que os piores casos são "geralmente inúteis para previsão, geralmente inúteis para garantias" e "a análise do pior caso é inútil para prever desempenho" em sua palestra Colocando a ciência de volta na ciência da computação .