Selles õpetuses saate teada, mis on põhiteoreem ja kuidas seda kasutatakse kordussuhete lahendamiseks.
Põhimeetod on vormi korduvussuhete lahendamise valem:
T (n) = aT (n / b) + f (n), kus, n = sisendi suurus a = rekursioonis olevate alamprobleemide arv n / b = iga alamprobleemi suurus. Eeldatakse, et kõigil alamprobleemidel on sama suurus. f (n) = väljaspool rekursiivset kõnet tehtud töö maksumus, mis sisaldab probleemi jagamise ja lahenduste ühendamise kulu Siin on a ≧ 1 ja b> 1 konstandid ja f (n) on asümptootiliselt positiivne funktsioon.
Asümptootiliselt positiivne funktsioon tähendab, et piisavalt suur n väärtus on meil olemas f(n)> 0
.
Peamist teoreemi kasutatakse korduvussuhete (jagamise ja vallutamise algoritmide) ajalise keerukuse arvutamiseks lihtsal ja kiirel viisil.
Põhiteoreem
Kui a ≧ 1
ja b> 1
on konstandid ja f(n)
on asümptootiliselt positiivne funktsioon, siis rekursiivse seose aja keerukuse annab
T (n) = aT (n / b) + f (n) kus, T (n) on järgmised asümptootilised piirid: 1. Kui f (n) = O (n log b a-ϵ ), siis T (n ) = Θ (n log b a ). 2. Kui f (n) = Θ (n log b a ), siis T (n) = Θ (n log b a * log n). 3. Kui f (n) = Ω (n log b a + ϵ ), siis T (n) = Θ (f (n)). ϵ> 0 on konstant.
Kõiki ülaltoodud tingimusi võib tõlgendada järgmiselt:
- Kui alamprobleemide lahendamise hind igal tasandil tõuseb teatud teguri võrra, muutub väärtus
f(n)
polünoomiliselt väiksemaks kui . Seega rõhub aja keerukust viimase taseme maksumus st.nlogb a
nlogb a
- Kui kulud lahendamiseks sub-probleem igal tasandil on peaaegu võrdne, siis väärtus
f(n)
on . Seega saab aja keerukus korrutada tasemete koguarvu st.nlogb a
f(n)
nlogb a * log n
- Kui alamprobleemide lahendamise maksumus igal tasandil väheneb teatud teguri võrra, muutub väärtus
f(n)
polünoomiliselt suuremaks kui . Seega surub aja keerukus alla maksumus .nlogb a
f(n)
Lahendatud näide põhiteoreemist
T (n) = 3T (n / 2) + n2 Siin a = 3 n / b = n / 2 f (n) = n 2 log b a = log 2 3 ≈ 1,58 <2 st. f (n) <n log b a + ϵ , kus, ϵ on konstant. Juhtum 3 tähendab siin. Seega T (n) = f (n) = Θ (n 2 )
Peamine teoreemi piirangud
Põhiteoreemi ei saa kasutada, kui:
- T (n) ei ole monotoonne. nt.
T(n) = sin n
f(n)
ei ole polünoom. nt.f(n) = 2n
- a ei ole konstant. nt.
a = 2n
a < 1