Ce sunt algoritmii de timp polinomiali?


Cel mai bun răspuns

Google este prietenul tău: din Complexitatea timpului – Wikipedia

Timp polinomial

Se spune că un algoritm este de timp polinomial dacă timpul său de rulare este superior delimitat de o expresie polinomială în mărimea intrării pentru algoritm, adică T ( n ) = {\ displaystyle O (n ^ {k})} pentru o constantă pozitivă k .

Problemele pentru care există un algoritm de timp polinomial determinist aparțin lasei de complexitate P , care este central în domeniul teoria complexității de calcul . Teza lui Cobham afirmă că timpul polinomial este un sinonim pentru „tratabil”, „fezabil”, „eficient” sau „rapid”.

Câteva exemple de algoritmi polinomiali de timp:

  • sortare de selecție algoritm de sortare pe n integers efectuează {\ displaystyle An ^ {2}} operațiuni pentru unele constante A . Astfel se execută în timp {\ displaystyle O (n ^ {2})} și este un algoritm de timp polinomial.
  • Toate operațiile aritmetice de bază (adunare, scădere, înmulțire, împărțire și comparație) se pot face în timp polinomial.
  • Potrivirile maxime din graficele pot fi găsite în timp polinomial.

Aș putea sugera să urmați câteva cursuri tradiționale de informatică, cum ar fi algoritmi, folosind un text precum Introducere în algoritmi ( aka CLRS) chiar și un curs simplu de structuri de date, cum ar fi unul descris în ACM a lui Flon hârtie Un curs CS fundamental care unifică teoria și practica care folosește textul clasic al lui Wulf, Shaw, Hilfinger și Flon Structuri fundamentale ale informaticii .

Răspuns

Dacă împărțim un polinom p (x) la un polinom d (x) atunci găsim un coeficient q (x) astfel încât p (x) = d (x) q (x) + r (x) unde r (x) este restul nostru.

Să presupunem că r (x) a avut grad ≥︎ n, atunci am fi putut să modificăm mai mult din el, dat fiind d (x) gradul n până la noul nostru r (x) ^ {*} a avut un grad strict mai mic decât d (x)

Spuneți că avem p (x) = x ^ 4 + 1 și d (x) = x ^ 2:

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

clar q (x) = x ^ 2

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

Acum aș putea continua să încerc să spun că q (x) = x și g et:

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

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

dar asta nu ne dorim deloc!

Acest lucru este analog diviziunii / restului în numere întregi:

p = dq + r

7 = 2 \ cdot {3} +1 este corect

7 = 1 \ cdot {3} +4 nu este de dorit întrucât nu am împărțit complet prin divizorul nostru și am lăsat un r mai mare decât ar trebui să avem.

Același concept se aplică polinoamelor, dar gradul dictează când ați terminat:

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

sau nu ați redus complet restul la elementul de cel mai mic grad din clasa de echivalență modulo d (x) sau, în termeni mai puțin matici, puteți găsiți într-adevăr o clasă întreagă de polinoame echivalente atunci când modificați cu un polinom dat, dar doriți ca cel mai mic cu gradul cuprins între 0 și n-1 (inclusiv acele puncte finale) ca rest.

10 = 7 = 4 = 1 ~ \ text {mod} 3, dar numai unul este un caz valabil pentru restul diviziunii întregi!

x ^ 4 + 1 = x ^ 2 + 1 = 1 ~ \ text {mod } x ^ 2 dar numai unul este un caz restant valid pentru diviziunea polinomială lungă!

Deci

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *