Co jsou polynomiální časové algoritmy?


nejlepší odpověď

Google je váš přítel: od Časová složitost – Wikipedia

Polynomiální čas

Říká se, že algoritmus má polynomiální čas , pokud je jeho doba běhu horní hranice polynomiálním výrazem ve velikosti vstupu pro algoritmus, tj. T ( n ) = {\ displaystyle O (n ^ {k})} pro nějakou kladnou konstantu k .

Problémy , pro které existuje deterministický polynomiální časový algoritmus, patří do třídy složitosti P , který je ústředním bodem v oblasti teorie výpočetní složitosti . Cobhamova práce uvádí, že polynomiální čas je synonymem pro „schopný“, „proveditelný“, „efektivní“ nebo „rychlý“.

Některé příklady polynomiálních časových algoritmů:

  • výběrové řazení třídicí algoritmus na n celá čísla provádí {\ displaystyle An ^ {2}} operace pro nějakou konstantu A . Běží tedy v čase {\ displaystyle O (n ^ {2})} a je algoritmus polynomiálního času.
  • Všechny základní aritmetické operace (sčítání, odčítání, násobení, dělení a srovnání) lze provádět v polynomiálním čase.
  • Maximální shodu v grafech najdete v polynomiálním čase.

Mohl bych navrhnout absolvování několika tradičních kurzů výpočetní techniky, jako jsou algoritmy, s využitím textu, jako je Úvod do algoritmů ( aka CLRS) i jednoduchý kurz datových struktur, jako je ten, který je popsán ve Flonově ACM článku Základní kurz CS, který sjednocuje teorii a praxi , který využívá klasický text Wulf, Shaw, Hilfinger a Flon Základní struktury výpočetní techniky .

Odpověď

Pokud vydělíme polynomial p (x) nějakým polynomem d (x), pak najdeme nějaký kvocient q (x) takový, že p (x) = d (x) q (x) + r (x), kde r (x) je náš zbytek.

Předpokládejme, že r (x) měl stupeň ≥︎ n, pak bychom z něj mohli moddovat více, protože d (x) je stupeň n, dokud náš nový r (x) ^ {*} měl stupeň přísně menší než d (x)

Řekněme, že máme p (x) = x ^ 4 + 1 a d (x) = x ^ 2:

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

jasně q (x) = x ^ 2

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

Nyní bych mohl pokračovat a zkusit říci, že q (x) = x a g et:

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

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

ale to už vůbec není to, co chceme!

Toto je analogické dělení / zbytku v celých číslech:

p = dq + r

7 = 2 \ cdot {3} +1 je správné

7 = 1 \ cdot {3} +4 není žádoucí, protože jsme se plně nerozdělili prostřednictvím našeho dělitele a nechal větší r, než bychom měli mít.

Stejný koncept platí pro polynomy, ale stupeň diktuje, až budete hotovi:

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

nebo jste zbytek zcela nesnížili na prvek nejnižšího stupně ve třídě ekvivalence modulo d (x), nebo v méně matematickém vyjádření můžete ve skutečnosti najdete celou třídu ekvivalentů polynomů, když odejdete daným polynomem, ale jako zbytek chcete ten nejmenší se stupněm mezi 0 a n-1 (včetně těchto koncových bodů).

10 = 7 = 4 = 1 ~ \ text {mod} 3, ale pouze jeden je platný zbývající případ pro celočíselné dlouhé dělení!

x ^ 4 + 1 = x ^ 2 + 1 = 1 ~ \ text {mod } x ^ 2, ale pouze jeden platný zbytek případu pro polynomiální dlouhé dělení!

Takže

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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *