Cosa sono gli algoritmi di tempo polinomiale?


Migliore risposta

Google è tuo amico: da Complessità temporale – Wikipedia

Tempo polinomiale

Si dice che un algoritmo sia di tempo polinomiale se il suo tempo di esecuzione è limite superiore da una espressione polinomiale nella dimensione dellinput per lalgoritmo, ovvero T ( n ) = {\ displaystyle O (n ^ {k})} per una costante positiva k .

I problemi per i quali esiste un algoritmo temporale polinomiale deterministico appartengono alla classe di complessità P , che è centrale nel campo della teoria della complessità computazionale . La tesi di Cobham afferma che il tempo polinomiale è sinonimo di “trattabile”, “fattibile”, “efficiente” o “veloce”.

Alcuni esempi di algoritmi di tempo polinomiale:

  • Lalgoritmo di ordinamento selezione sort su n interi esegue operazioni {\ displaystyle An ^ {2}} per alcune costanti A . Quindi viene eseguito nel tempo {\ displaystyle O (n ^ {2})} ed è un algoritmo temporale polinomiale.
  • Tutte le operazioni aritmetiche di base (addizione, sottrazione, moltiplicazione, divisione e confronto) possono essere eseguite in tempo polinomiale.
  • Abbinamenti massimi nei grafici possono essere trovati in tempo polinomiale.

Potrei suggerire di seguire alcuni corsi tradizionali di informatica, come algoritmi che utilizzano un testo come Introduzione agli algoritmi ( aka CLRS) anche un semplice corso di strutture dati come quello descritto nel paper Un corso fondamentale di informatica che unifica teoria e pratica che utilizza il testo classico di Wulf, Shaw, Hilfinger e Flon Strutture fondamentali dellinformatica .

Risposta

Se dividiamo un polinomio p (x) per qualche polinomio d (x) allora troviamo un quoziente q (x) tale che p (x) = d (x) q (x) + r (x) dove r (x) è il nostro resto.

Supponiamo che r (x) avesse un grado ≥︎ n, allora avremmo potuto modificarne di più dato che d (x) è il grado n fino al nostro nuovo r (x) ^ {*} aveva un grado strettamente inferiore a d (x)

Supponiamo di avere p (x) = x ^ 4 + 1 ed (x) = x ^ 2:

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

chiaramente q (x) = x ^ 2

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

Ora potrei andare avanti e provare a dire che q (x) = xeg et:

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

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

ma questo non è affatto quello che vogliamo!

Questo è analogo alla divisione / resto in numeri interi:

p = dq + r

7 = 2 \ cdot {3} +1 è corretto

7 = 1 \ cdot {3} +4 non è desiderabile poiché non abbiamo diviso completamente attraverso dal nostro divisore e ha lasciato una r maggiore di quella che dovremmo avere.

Lo stesso concetto si applica ai polinomi ma il grado determina quando hai finito:

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

o non hai completamente ridotto il resto allelemento di grado più basso nella classe di equivalenza modulo d (x), o in termini meno matematici, puoi trova effettivamente unintera classe di polinomi equivalenti quando modifichi un dato polinomio, ma vuoi quello più piccolo con un grado compreso tra 0 e n-1 (compresi quegli estremi) come resto.

10 = 7 = 4 = 1 ~ \ text {mod} 3 ma solo uno è un caso di resto valido per la divisione intera lunga!

x ^ 4 + 1 = x ^ 2 + 1 = 1 ~ \ text {mod } x ^ 2 ma solo uno lo è un caso di resto valido per la divisione long polinomiale!

Quindi

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *