Vad är polynomiska tidsalgoritmer?


Bästa svaret

Google är din vän: från Tidskomplexitet – Wikipedia

Polynomtid

En algoritm sägs vara av polynomtid om dess körtid är övre gräns av ett polynomuttryck i storleken på ingången för algoritmen, dvs T ( n ) = {\ displaystyle O (n ^ {k})} för någon positiv konstant k .

Problem för vilka det finns en deterministisk polynom-tidsalgoritm tillhör komplexitetsklassen P , vilket är centralt inom beräkningskomplexitetsteori . Cobhams avhandling säger att polynomtid är en synonym för ”dragbar”, ”genomförbar”, ”effektiv” eller ”snabb”.

Några exempel på polynomiska tidsalgoritmer:

  • urvalsortering sorteringsalgoritm på n heltal utför {\ displaystyle An ^ {2}} operationer för en konstant A . Således körs den i tid {\ displaystyle O (n ^ {2})} och är en algoritm för polynomtid.
  • Alla grundläggande aritmetiska operationer (addition, subtraktion, multiplikation, division och jämförelse) kan göras på polynomtid.
  • Maximala matchningar i grafer finns i polynomtid.

Jag kanske föreslår att du tar några traditionella kurser inom datavetenskap som algoritmer med en text som Introduktion till algoritmer ( aka CLRS) även en enkel datastrukturkurs som beskrivs i Flons ACM papper En grundläggande CS-kurs som förenar teori och övning som använder Wulf, Shaw, Hilfinger och Flons klassiska text Datavetenskapens grundläggande strukturer .

Svar

Om vi ​​delar ett polynom p (x) med något polynom d (x) så hittar vi någon kvot q (x) så att p (x) = d (x) q (x) + r (x) där r (x) är vår återstod.

Antag att r (x) hade grad ≥︎ n, då kunde vi ha modifierat mer av det med tanke på att d (x) är grad n tills vår nya r (x) ^ {*} hade grad strikt mindre än d (x)

Säg att vi har p (x) = x ^ 4 + 1 och d (x) = x ^ 2:

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

tydligt q (x) = x ^ 2

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

Nu kan jag fortsätta och försöka säga att q (x) = x och g et:

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

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

men det är inte vad vi vill alls!

Detta är analogt med division / resten i heltal:

p = dq + r

7 = 2 \ cdot {3} +1 är korrekt

7 = 1 \ cdot {3} +4 är inte önskvärt eftersom vi inte helt delade genom vår delare och lämnade en större r än vi borde ha.

Samma koncept gäller polynom men grad dikterar när du är klar:

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

eller så minskade du inte resten till det lägsta graden i ekvivalensklass modulo d (x), eller i mindre matta termer kan du hitta faktiskt en hel klass av polynomekvivalenter när du modifierar med en viss polynom, men du vill ha den minsta med en grad klämd mellan 0 och n-1 (inklusive dessa slutpunkter) som en återstod.

10 = 7 = 4 = 1 ~ \ text {mod} 3 men bara en är ett giltigt återstående fall för heltal lång uppdelning!

x ^ 4 + 1 = x ^ 2 + 1 = 1 ~ \ text {mod } x ^ 2 men bara en är ett giltigt återstående fall för långvarig polynomuppdelning!

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

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *