O que são algoritmos de tempo polinomial?


Melhor resposta

Google é seu amigo: de Complexidade de tempo – Wikipedia

Tempo polinomial

Diz-se que um algoritmo é de tempo polinomial se o tempo de execução for limite superior por uma expressão polinomial no tamanho da entrada para o algoritmo, ou seja, T ( n ) = {\ displaystyle O (n ^ {k})} para alguma constante positiva k .

Os problemas para os quais existe um algoritmo de tempo polinomial determinístico pertencem à classe de complexidade P , que é central no campo da teoria da complexidade computacional . A tese de Cobham “ afirma que o tempo polinomial é um sinônimo de” tratável “,” factível “,” eficiente “ou” rápido “.

Alguns exemplos de algoritmos de tempo polinomial:

  • O classificação de seleção algoritmo de classificação em n inteiros executa {\ displaystyle An ^ {2}} operações para algumas constantes A . Portanto, ele é executado no tempo {\ displaystyle O (n ^ {2})} e é um algoritmo de tempo polinomial.
  • Todas as operações aritméticas básicas (adição, subtração, multiplicação, divisão e comparação) podem ser feitas em tempo polinomial.
  • Correspondências máximas em gráficos podem ser encontradas em tempo polinomial.

Eu poderia sugerir alguns cursos tradicionais em ciência da computação, como algoritmos usando um texto como Introdução aos algoritmos ( também conhecido como CLRS) até mesmo um curso de estruturas de dados simples, como o descrito no paper Um curso de ciência da computação que unifica a teoria e a prática que usa o texto clássico de Wulf, Shaw, Hilfinger e Flon Estruturas fundamentais da ciência da computação .

Resposta

Se dividirmos um polinômio p (x) por algum polinômio d (x), então estamos encontrando algum quociente q (x) tal que p (x) = d (x) q (x) + r (x) onde r (x) é nosso resto.

Suponha que r (x) tivesse grau ≥︎ n, então poderíamos ter modificado mais dele dado que d (x) é grau n até nosso novo r (x) ^ {*} tinha grau estritamente menor que d (x)

Digamos que temos p (x) = x ^ 4 + 1 e d (x) = x ^ 2:

x ^ 4 + 1 = x ^ 2q (x) + r (x)

claramente q (x) = x ^ 2

x ^ 4 + 1 = x ^ 2 \ cdot {x ^ 2} + r (x) ⇒︎ r (x) = 1

Agora eu poderia prosseguir e tentar dizer que q (x) = x e g et:

x ^ 4 + 1 = {x \ cdot {x}} ^ 2+ (x ^ 4-x ^ 3 + 1)

r (x) = x ^ 4-x ^ 3 + 1?

mas não é isso que queremos!

Isso é análogo à divisão / resto em inteiros:

p = dq + r

7 = 2 \ cdot {3} +1 está correto

7 = 1 \ cdot {3} +4 não é desejável, pois não dividimos totalmente pelo nosso divisor e deixou um r maior do que deveríamos.

O mesmo conceito se aplica aos polinômios, mas o grau dita quando você termina:

\ text {deg} r ( x) text {deg} d (x)

ou você não reduziu totalmente o restante ao elemento de menor grau na classe de equivalência módulo d (x), ou em termos menos matemáticos, você pode na verdade, encontre uma classe inteira de polinômios equivalentes quando você modifica por um determinado polinômio, mas você quer o menor com grau entre 0 e n-1 (incluindo aqueles pontos finais) como resto.

10 = 7 = 4 = 1 ~ \ text {mod} 3 mas apenas um é um caso de resto válido para divisão longa inteira!

x ^ 4 + 1 = x ^ 2 + 1 = 1 ~ \ text {mod } x ^ 2, mas apenas um é um caso de resto válido para divisão longa polinomial!

Então,

\ text {deg} r (x) text {deg} d (x)

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *