Por que o tempo polinomial é chamado de "eficiente"?


50

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 80nlognn80

(a) Suponha, por exemplo, que o número de átomos no universo seja aproximadamente .1080


3
Não sei se concordo com sua premissa. Eu acho que a maioria das pessoas consideraria bastante ineficiente (embora, é claro, isso dependa também das constantes e do problema que está sendo resolvido). n80
sepp2k

16
Eu consideraria para qualquer muito ineficiente. Você tem um exemplo de análise assintótica levada a um extremo irracional. Não há algoritmos naturais (que eu saiba) com tempo de execução. No entanto, existem algoritmos naturais com tempo de execução de para alguns problemas, e questões fundamentais na teoria da complexidade sobre a existência de um algoritmo polinomial para tais problemas. c > 3 n 80 2 nncc>3n802n
21412 Joe

5
Eu acho que essa pergunta não deve ser rejeitada porque as pessoas discordam da premissa (assumindo que essa foi a razão). Votações positivas e negativas devem ser uma indicação da qualidade da pergunta, não do seu conteúdo (desde que estejam no tópico).
Alex10 Brink

8
@Tocou. e a citação completa é (ênfase minha): A tese de Cobham sustenta que P é a classe de problemas computacionais que são "eficientemente solucionáveis" ou "tratáveis"; na prática, alguns problemas que não se sabe estarem em P têm soluções práticas, e alguns que estão em P não, mas essa é uma regra
21412 Joe

6
Na literatura (de CS teórico), a palavra "eficiente" é sinônimo de "polinômio". Talvez isso seja diferente para outros subcampos (mais práticos).
Ran G.

Respostas:


32

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.


15
Uma segunda razão pragmática para a escolha de P é que ela é fechada sob adição, multiplicação e exponenciação com constantes. Isso é conveniente ao compor algoritmos / máquinas; se os blocos de construção são eficientes, o mesmo ocorre com o resultado.
Raphael

Só estou curioso, alguém sabe se o termo "algoritmo galáctico" é usado na prática?
Juan Bermejo Vega

Não é um termo tão antigo. Mas eu comecei a usá-lo :)
Suresh

24

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 80nlognn80

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.


Eles "selecionam algoritmo inferior"? Você não quer dizer "selecionar algoritmo superior"?
bitmask

Outro bom exemplo é a classificação por inserção versus a classificação rápida. A ordenação por inserção é enquanto a ordenação rápida é . No entanto, em pequenas entradas, digamos 10 itens, a classificação por inserção é duas vezes mais rápida que a classificação rápida! De fato, a classificação rápida otimizada usa a classificação de inserção para matrizes pequenas. O ( n l g n )Θ(N2)O(nlgn)
Robert S. Barnes

Por que não consideramos os algoritmos assintoticamente cúbicos "ruins" e os algoritmos assintoticamente quadráticos "bons"? Esta resposta sugere a pergunta.
djechlin

2

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


correção: P vs Pspace, não P vs ExpTime
vzn 10/09/12

-2

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 .


11
"em comparação com o tempo não polinomial mais difícil, especialmente o chamado NP-Completo" - problemas NP-completos não são conhecidos por não serem polinomiais e certamente não são os mais difíceis.
Raphael
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.