Mastersatsen används vid analys av algoritmer för att erhålla en asymptotisk uppskattning av rekursiva relationer ( rekursiva ekvationer ), som ofta uppstår vid analys av algoritmer av typen " dela och erövra " ( dela och erövra ), till exempel vid skattning deras avrättningstid. Teoremet introducerades och bevisades av John Bentley, Doroten Haken och James Haken 1980. Teoremet populariserades i boken Algorithms : Construction and Analysis ( Thomas Cormen , Charles Letherston , Ronald Rivest , Clifford Stein ) där den gavs.
Alla rekursiva relationer kan inte lösas med hjälp av huvudsatsen. Det finns flera generaliseringar av det, inklusive Akra-Bazzi-metoden .
Tänk på ett problem som kan lösas med en rekursiv algoritm :
funktion T(ingång n : uppgiftsstorlek): om n < någon konstant k : lös problemet för n icke-rekursivt annars :definiera en uppsättning av deluppgifter, var och en av storlek n/b anropa funktion T rekursivt för varje deluppgift kombinera lösningar slutetI exemplet ovan delar algoritmen rekursivt upp den ursprungliga uppgiften av storlek n i flera nya deluppgifter, var och en av storleken n/b . En sådan partition kan representeras som ett anropsträd, i vilket varje nod motsvarar ett rekursivt anrop, och grenar som utgår från noden motsvarar efterföljande anrop för deluppgifter. Varje nod kommer att ha en gren. Varje nod producerar också mängden arbete som motsvarar storleken på den aktuella deluppgiften n (som skickas till detta funktionsanrop) enligt relationen . Algoritmens totala mängd arbete definieras som summan av allt arbete i noderna i det givna trädet.
Beräkningskomplexiteten hos sådana algoritmer kan representeras som en rekursiv relation . Det kan lösas genom flera substitutioner av uttrycket . [ett]
Med hjälp av huvudsatsen är det möjligt att snabbt beräkna sådana samband, vilket gör det möjligt att få en asymptotisk uppskattning av körtiden för rekursiva algoritmer i O(n) -notationen (Θ-notationen) utan substitutioner.
Huvudsatsen tar hänsyn till följande återkommande relationer:
Såsom tillämpat på analys av algoritmer, anger konstanter och funktioner:
Huvudsatsen tillåter oss att få en asymptotisk uppskattning för följande tre fall:
Om och förhållandet
sedan:
ExempelEnligt formeln är värdena för konstanterna och komplexiteten hos den icke-rekursiva delen av problemet:
, varSedan kontrollerar vi om förhållandet för det första alternativet är uppfyllt:
.Följaktligen,
(För det här exemplet ger den exakta återkommande lösningen , förutsatt ).
Om för någon konstant k ≥ 0 gäller följande:
varsedan:
Exempel
Enligt formeln är värdena för konstanterna och komplexiteten hos den icke-rekursiva delen av problemet:
varKontrollera förhållandet mellan alternativ 2:
, och följaktligenI enlighet med den andra versionen av huvudsatsen:
Således är återfallsrelationen T ( n ) Θ( n logn ) .
(Detta resultat kan verifieras genom den exakta lösningen av relationen där , med förbehåll för .)
Om det körs:
varoch det är också sant att:
för vissa konstant och tillräckligt stor (det så kallade regularitetstillståndet )sedan:
ExempelKonstanta värden och funktioner:
, varVi kontrollerar att relationen från alternativ 3 är uppfylld:
, och följaktligenRegelbundenhetsvillkoret gäller också :
, när du väljerDärför, enligt den 3:e versionen av huvudsatsen:
Denna rekursiva relation T ( n ) är lika med Θ( n 2 ), vilket är samma som f ( n ) i den ursprungliga formeln.
(Detta resultat bekräftas av den exakta återkommande lösningen där , med förbehåll för .)
Följande samband kan inte lösas med hjälp av huvudsatsen: [2]
I det andra exemplet kan skillnaden mellan och uttryckas som . Det visar att för varje konstant . Därför är skillnaden inte ett polynom och huvudsatsen gäller inte.
Algoritm | Återkommande relation | Arbetstimmar | Notera |
---|---|---|---|
Binär sökning | Huvudsats, 2:a alternativet: , där [3] | ||
Binär trädpassering | Huvudsats, version 1: där [3] | ||
Strassen algoritm | Huvudsats, version 1: , där [4] | ||
Optimal sorterad matrissökning | Akra-Bazzi teorem för och för att få | ||
Slå samman sortering | Huvudsats, 2:a alternativet: , där |