Master-lausetta käytetään algoritmien analysoinnissa asymptoottisen arvion saamiseksi rekursiivisille suhteille ( rekursiiviset yhtälöt ), joita usein syntyy " hajoa ja hallitse " -tyyppisten algoritmien analysoinnissa ( hajoa ja hallitse ) esimerkiksi estimoinnissa niiden toteutusaika. Lauseen esitteli ja todisti John Bentley, Doroten Haken ja James Haken vuonna 1980. Lause levitettiin suosituksi kirjassa Algorithms: Construction and Analysis ( Thomas Cormen , Charles Letherston , Ronald Rivest , Clifford Stein ), jossa se esitettiin.
Kaikkia rekursiivisia suhteita ei voida ratkaista päälauseen avulla. Siitä on useita yleistyksiä, mukaan lukien Akra-Bazzi-menetelmä .
Harkitse ongelmaa, joka voidaan ratkaista rekursiivisella algoritmilla :
funktio T(syöte n : tehtävän koko): jos n < jokin vakio k : ratkaise n: n tehtävä ei-rekursiivisesti muuten : määritä joukko alitehtäviä, joista jokainen on kooltaan n/b kutsua funktiota T rekursiivisesti jokaiselle osatehtävälle yhdistää ratkaisuja loppuYllä olevassa esimerkissä algoritmi jakaa rekursiivisesti alkuperäisen koon n tehtävän useiksi uusiksi alitehtäviksi, joista jokainen on kooltaan n/b . Tällainen osio voidaan esittää puhelupuuna, jossa jokainen solmu vastaa rekursiivista puhelua ja solmusta lähtevät haarat vastaavat myöhempiä alitehtävien kutsuja. Jokaisella solmulla on haarat . Lisäksi jokainen solmu tuottaa nykyisen alitehtävän n kokoa vastaavan määrän työtä (välitetty tälle funktiokutsulle) suhteen mukaan . Algoritmin työn kokonaismäärä määritellään kaiken työn summana annetun puun solmuissa.
Tällaisten algoritmien laskennallinen monimutkaisuus voidaan esittää rekursiivisena relaationa . Se voidaan ratkaista useilla lausekkeen korvauksilla . [yksi]
Päälauseen avulla on mahdollista laskea nopeasti sellaiset suhteet, jolloin voidaan saada asymptoottinen arvio rekursiivisten algoritmien ajoajasta O(n) -merkinnässä (Θ-merkintä) ilman substituutioita.
Päälause käsittelee seuraavia toistuvuussuhteita:
Algoritmien analysoinnissa vakiot ja funktiot tarkoittavat:
Päälause antaa meille mahdollisuuden saada asymptoottinen arvio seuraaville kolmelle tapaukselle:
Jos , ja suhde
sitten:
EsimerkkiKaavan mukaan vakioiden arvot ja ongelman ei-rekursiivisen osan monimutkaisuus ovat:
, missäSitten tarkistamme, täyttyykö 1. vaihtoehdon suhde:
.Näin ollen
(Tässä esimerkissä tarkka toistumisratkaisu antaa , jos ).
Jos jollekin vakiolle k ≥ 0 pätee seuraava:
missäsitten:
Esimerkki
Kaavan mukaan vakioiden arvot ja ongelman ei-rekursiivisen osan monimutkaisuus ovat:
missäVaihtoehdon 2 suhteen tarkistaminen:
, ja sitenPäälauseen toisen version mukaisesti:
Siten toistuvuusrelaatio T ( n ) on Θ( n log n ).
(Tämä tulos voidaan varmistaa sen suhteen tarkalla ratkaisulla, jossa , jollei .)
Jos suoritetaan:
missäja se on myös totta, että:
joillekin vakioille ja riittävän suurille (ns. säännöllisyysehto )sitten:
EsimerkkiVakioarvot ja funktiot:
, missäTarkistamme, että vaihtoehdon 3 suhde täyttyy:
, ja sitenSäännöllisyysehto pätee myös :
, valittaessaSiksi päälauseen kolmannen version mukaan:
Tämä rekursiivinen relaatio T ( n ) on yhtä suuri kuin Θ ( n 2 ), joka on sama kuin f ( n ) alkuperäisessä kaavassa.
(Tämän tuloksen vahvistaa tarkka toistumisratkaisu, jossa , jollei .)
Seuraavia suhteita ei voida ratkaista päälauseella: [2]
Toisessa esimerkissä ja ero voidaan ilmaista muodossa . Se osoittaa, että millä tahansa vakiolla . Siksi ero ei ole polynomi ja päälause ei päde.
Algoritmi | Toistuva suhde | Työtunnit | Merkintä |
---|---|---|---|
Binäärihaku | Päälause, 2. vaihtoehto: , jossa [3] | ||
Binaaripuun läpikulku | Päälause, versio 1: missä [3] | ||
Strassenin algoritmi | Päälause, versio 1: , jossa [4] | ||
Optimaalinen lajiteltu matriisihaku | Akra-Bazzi - lause saamista varten | ||
Yhdistä lajittelu | Päälause, 2. vaihtoehto: , missä |