Hvad er polynomiske tidsalgoritmer?


Bedste svar

Google er din ven: fra Tidskompleksitet – Wikipedia

Polynomtid

En algoritme siges at være af polynomisk tid hvis dens driftstid er øvre grænse af et polynomisk udtryk i størrelsen på input for algoritmen, dvs. T ( n ) = {\ displaystyle O (n ^ {k})} for en eller anden positiv konstant k .

Problemer for hvilke der findes en deterministisk polynomaltidsalgoritme tilhører kompleksitetsklassen P , som er centralt inden for beregningskompleksitetsteori . Cobhams afhandling siger, at polynomial tid er et synonym for “trækkbar”, “gennemførlig”, “effektiv” eller “hurtig”.

Nogle eksempler på polynomiske tidsalgoritmer:

  • valgsorter sorteringsalgoritme på n heltal udfører {\ displaystyle An ^ {2}} operationer for nogle konstante A . Således kører den i tide {\ displaystyle O (n ^ {2})} og er en polynomisk tidsalgoritme.
  • Alle de grundlæggende aritmetiske operationer (addition, subtraktion, multiplikation, division og sammenligning) kan udføres i polynomisk tid.
  • Maksimale matchninger i grafer kan findes på polynomisk tid.

Jeg foreslår måske at tage et par traditionelle kurser inden for datalogi, såsom en algoritme, der bruger en tekst som Introduktion til algoritmer ( aka CLRS) selv et simpelt datastrukturforløb som beskrevet i Flons ACM papir Et grundlæggende CS-kursus, der forener teori og praksis , der bruger Wulf, Shaw, Hilfinger og Flons klassiske tekst Grundlæggende strukturer inden for datalogi .

Svar

Hvis vi deler et polynom p (x) med noget polynom d (x), finder vi noget kvotient q (x) sådan at p (x) = d (x) q (x) + r (x) hvor r (x) er vores rest.

Antag at r (x) havde grad ≥︎ n, så kunne vi have modificeret mere ud af det, givet d (x) er grad n indtil vores nye r (x) ^ {*} havde grad strengt mindre end d (x)

Sig, at vi har p (x) = x ^ 4 + 1 og d (x) = x ^ 2:

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

klart q (x) = x ^ 2

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

Nu kunne jeg gå videre og prøve at sige, at q (x) = x og g et:

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

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

men det er slet ikke, hvad vi vil have!

Dette er analogt med division / resten i heltal:

p = dq + r

7 = 2 \ cdot {3} +1 er korrekt

7 = 1 \ cdot {3} +4 er ikke ønskeligt, da vi ikke delte helt gennem vores divisor og efterlod en større r, end vi skulle have.

Det samme koncept gælder for polynomer, men grad dikterer, når du er færdig:

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

eller du reducerede ikke resten fuldstændigt til elementet med den laveste grad i ækvivalensklasse modulo d (x) eller i mindre matte termer kan du faktisk finde en hel klasse af polynomer ækvivalente, når du moderer ud af et givet polynom, men du vil have den mindste med en grad klemt mellem 0 og n-1 (inklusive disse slutpunkter) som en rest.

10 = 7 = 4 = 1 ~ \ text {mod} 3, men kun en er en gyldig resten af ​​tilfældene til heltal lang opdeling!

x ^ 4 + 1 = x ^ 2 + 1 = 1 ~ \ text {mod } x ^ 2, men kun én er et gyldigt resten tilfælde til polynomisk lang opdeling!

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *