Por que na ciência da computação qualquer complexidade que é no máximo polinomial é considerada eficiente?
Para qualquer aplicação prática (a) , algoritmos com complexidade são muito mais rápidos que algoritmos que executam no tempo, digamos , mas o primeiro é considerado ineficiente enquanto o último é eficiente. Cadê a lógica ?! n 80
(a) Suponha, por exemplo, que o número de átomos no universo seja aproximadamente .
Respostas:
Outra perspectiva sobre "eficiência" é que o tempo polinomial nos permite definir uma noção de "eficiência" que não depende de modelos de máquinas. Especificamente, há uma variante da tese de Church-Turing chamada "tese eficaz de Church-Turing" que diz que qualquer problema que ocorre no tempo polinomial em um tipo de modelo de máquina também será executado em tempo polinomial em outro modelo de máquina igualmente poderoso.
Esta é uma afirmação mais fraca da tese geral de TC e é 'meio que' violada por algoritmos aleatórios e quânticos, mas não foi violada no sentido de ser capaz de resolver um problema de NP-difícil no tempo poli, alterando o modelo da máquina.
Esta é, em última análise, a razão pela qual o tempo polinomial é uma noção popular na teoria do CS. No entanto, a maioria das pessoas percebe que isso não reflete "eficiência prática". Para saber mais, o post de Dick Lipton sobre ' algoritmos galácticos ' é uma ótima leitura.
fonte
Em teoria, cuidamos do comportamento assintótico e descrevemos classes de problemas e algoritmos com base em seu comportamento assintótico. A palavra-chave aqui é assintótica . é mais rápido que assintoticamente, ou seja, a partir de (que, aliás, é chamado: septilhão!), Assumindo coeficientes constantes unitários e nenhum valor baixo termos de encomenda.O ( n log n ) n > 1208925819614629174706176O(n80) O(nlogn) n>1208925819614629174706176
Na prática, porém, é dada atenção aos expoentes e aos coeficientes constantes. Na prática, os tamanhos de entrada não podem chegar a setilhões, portanto, sim, para todos os fins será uma escolha superior a . Outros fatores também são importantes nas práticas: paralelismo, padrões de acesso à memória (por exemplo, localidade). n 80nlogn n80
Por exemplo, a maioria das bibliotecas para multiplicação de números inteiros, por exemplo, o GMP implementará uma mistura de algoritmos e
selecionará um algoritmo inferior com base no tamanho da entrada,selecione os algoritmos praticamente superiores com base no tamanho da entrada, embora esses algoritmos possam ser assintoticamente inferiores. Alguns algoritmos assintoticamente "inferiores" serão mais rápidos em determinados tamanhos de entrada e serão selecionados sobre os algoritmos ideais.Outro exemplo, o algoritmo de multiplicação de matriz mais rápido conhecido é o algoritmo Coppersmith-Winograd, executado em (há melhorias recentes; mais aqui ). No entanto, nunca foi implementado porque (1) é difícil (2) o coeficiente constante é gigantesco. Todos os pacotes de álgebra linear usam o menos ideal de Strassen .O(n2.3737)
A teoria TL; DR cuida do comportamento assintótico para comparar algoritmos, pois o limite do tamanho da entrada vai para números arbitrariamente grandes.
fonte
Esta resposta analisará o contexto "geral" da sua pergunta. A ciência da computação é na verdade uma ciência relativamente jovem e um tanto aberta e ainda não tem respostas ótimas ou boas para algumas perguntas básicas e fundamentais. A questão básica "o que é calculado com eficiência" é formalizada de maneira precisa ou grosseira no CS (dependendo da opinião) como o famoso problema P vs NP (ou o problema P vs Exptime intimamente relacionado), e ainda está aberto após mais de quatro décadas de sendo inicialmente apresentado por Cook / Levin ~ 1970 e intenso trabalho pelos maiores cientistas da computação do mundo (e muitos matemáticos também estão interessados no problema como fundamental).
Portanto, em outras palavras, mesmo com uma definição grosseira de "eficiente" como tempo P, e um dos prêmios científicos mais valiosos - ou seja, um prêmio de US $ 1 milhão associado ao problema há mais de 10 anos - a ciência da computação não pode sequer provar que alguns problemas (perto de este limite) deve ou não ter algoritmos eficientes (Ptime). Portanto, a definição exata de "eficiente", mais precisa que o tempo P, não é necessária nem mesmo possível no momento. Se / quando a conjectura P vs NP for estabelecida de uma maneira ou de outra, uma definição mais estrita de "eficiente" pode ou presumivelmente será possível.
Além disso, pode-se sentir que a definição Ptime de "eficiente" pode até ser um pouco "superficial", e a maioria dos cientistas da computação provavelmente concordaria, e quase todos eles acham que a conjectura P vs NP é da maior importância para resolver, o ponto em que eles podem até considerar essa afirmação ou observação como trivial ... em outras palavras, por assim dizer, é um trabalho em andamento / estamos trabalhando nisso . (na verdade, os principais cientistas da computação chegam até agora, apenas de brincadeira, rotineiramente como vergonhoso a diferença e a falta de progresso / separações definitivas ).
De fato, existe ainda uma conjectura intimamente relacionada / significativamente mais forte que P vs NP, a saber NP vs P / poly, que também não pode ser resolvida pela ciência da computação no momento. conjectura que problemas no tempo NP não podem ser resolvidos por nenhum circuito do tamanho "P", isto é, nem mesmo restrito aos circuitos que podem ser criados por algoritmos / máquinas de Turing.
Quanto ao quão difícil P vs NP pode ser - há alguma razão sólida para pensar que pode ser pelo menos tão difícil quanto a muito antiga conjectura de Riemann em matemática (agora com 1,5 século ), porque ambos receberam o mesmo prêmio de US $ 1 milhão por mais de uma década e nenhuma foi resolvida ainda / primeiro.
Portanto, em outras palavras, definir com precisão quais algoritmos são realmente "eficientes" é na verdade um dos problemas abertos mais importantes e mais difíceis existentes na ciência e na matemática teóricas .
De fato, a questão do "que é computado eficientemente" é na verdade ainda mais sutil, porque existe uma variante da tese de Church-Turing denominada tese de tempo P, e não se sabe se a computação quântica realmente a viola . Com o resultado inovador de Shor do Q-time P, o fatoração considerou uma reviravolta dramática nesta pesquisa. Em outras palavras, o problema do que é computado eficientemente na verdade desce plausivelmente até os princípios da física profunda e diz respeito a se a computação quântica pode computar com mais eficiência do que a computação clássica, que também é um problema geralmente aberto no CS teórico e na física avançada.
Assim, pode-se acrescentar que P vs NP e a questão da computação eficiente podem ser de importância crucial ou fundamental para além da física e da matemática .
[1] Problema P vs NP, wikipedia
[2] Problemas com o prêmio Millenium
[3] Classe P / Poly, wikipedia.
[4] Algoritmo de Shor
fonte
Os algoritmos de tempo polinomial são considerados eficientes apenas em comparação com o tempo não polinomial mais difícil, especialmente o chamado NP-Complete. Veja a imagem: Diagrama de Euler para os problemas de P, NP, NP-completo e NP-difícil .
fonte