Alguém poderia explicar a diferença entre algoritmos de tempo polinomial, tempo não polinomial e tempo exponencial?
Por exemplo, se um algoritmo leva tempo O (n ^ 2), então em qual categoria ele está?
Veja isso .
Exponencial é pior do que polinomial.
O (n ^ 2) cai na categoria quadrática, que é um tipo de polinômio (o caso especial do expoente sendo igual a 2) e melhor que exponencial.
Exponencial é muito pior do que polinomial. Veja como as funções crescem
n = 10 | 100 | 1000
n^2 = 100 | 10000 | 1000000
k^n = k^10 | k^100 | k^1000
k ^ 1000 é excepcionalmente grande, a menos que k seja menor do que algo como 1.1. Tipo, algo como cada partícula no universo teria que fazer 100 bilhões de bilhões de bilhões de operações por segundo por trilhões de bilhões de bilhões de anos para fazer isso.
Eu não calculei isso, mas É TÃO GRANDE.
Abaixo estão algumas funções comuns do Big-O durante a análise de algoritmos.
(n = tamanho da entrada, c = alguma constante)
Aqui está o gráfico do modelo que representa a complexidade Big-O de algumas funções
Felicidades :-)
créditos do gráfico http://bigocheatsheet.com/
fonte
O (n ^ 2) é o tempo polinomial. O polinômio é f (n) = n ^ 2. Por outro lado, O (2 ^ n) é o tempo exponencial, onde a função exponencial implícita é f (n) = 2 ^ n. A diferença é se a função de n coloca n na base de uma exponenciação ou no próprio expoente.
Qualquer função de crescimento exponencial crescerá significativamente mais rápido (longo prazo) do que qualquer função polinomial, então a distinção é relevante para a eficiência de um algoritmo, especialmente para grandes valores de n.
fonte
Tempo polinomial.
Um polinômio é uma soma de termos que parecem
Constant * x^k
Exponencial e significa algo comoConstant * k^x
(em ambos os casos, k é uma constante e x é uma variável).
O tempo de execução de algoritmos exponenciais cresce muito mais rápido do que os polinomiais.
fonte
Exponencial (você tem uma função exponencial se MINIMAL ONE EXPONENT for dependente de um parâmetro):
Polinomial (você tem uma função polinomial se NENHUM EXPONENTE depende de alguns parâmetros de função):
fonte
tempo polinomial O (n) ^ k significa que o número de operações é proporcional à potência k do tamanho da entrada
tempo exponencial O (k) ^ n significa que o número de operações é proporcional ao expoente do tamanho da entrada
fonte
o (n sequre) é a complexidade de tempo polinimal enquanto o (2 ^ n) é a complexidade de tempo exponencial se p = np no melhor caso, no pior caso p = np não é igual porque o tamanho de entrada n cresce tanto ou o tamanho de entrada aumenta tanto por mais tempo está indo para o pior caso e tratando assim a taxa de crescimento de complexidade aumenta e depende do tamanho n da entrada quando a entrada é pequena é polinimal quando o tamanho da entrada é grande e grande então p = np diferente significa que a taxa de crescimento depende do tamanho da entrada "N " otimização, sat, clique e conjunto independente também se encontram em exponencial para polinimal.
fonte