מתוך ויקיפדיה, האנציקלופדיה החופשית
במדעי המחשב , שיטת האב (Master Theorem) משמשת לפתרון נוסחאות נסיגה של זמן ריצה /זיכרון של אלגוריתמים . כלומר, בהינתן נוסחת נסיגה לזמן ריצתו של אלגוריתם, ניתן להשתמש במקרים מסוימים בשיטה כדי למצוא חסם אסימפטוטי הדוק לזמן הריצה של האלגוריתם כולו. יתרון השיטה בכך שהיא ניתנת ליישום במגוון רחב של מקרים ומספקת פתרון מיידי, כמעט ללא חישוב.
בהינתן נוסחת נסיגה מהצורה:
T
(
n
)
=
a
T
(
n
b
)
+
f
(
n
)
w
h
e
r
e
a
≥
1
,
b
>
1
{\displaystyle T(n)=aT\left({\frac {n}{b}}\right)+f(n)\;\;\;\;where\;\;a\geq 1,b>1}
ניתן למצוא חסם הדוק אסימפטוטית באחד משלושת המקרים הבאים:
f
(
n
)
=
O
(
n
log
b
(
a
)
−
ε
)
→
T
(
n
)
=
Θ
(
n
log
b
a
)
w
h
e
r
e
ε
>
0
{\displaystyle f(n)=O\left(n^{\log _{b}(a)-\varepsilon }\right)\rightarrow T(n)=\Theta \left(n^{\log _{b}a}\right)\;\;\;\;where\;\;\varepsilon >0}
f
(
n
)
=
Θ
(
n
log
b
a
)
→
T
(
n
)
=
Θ
(
n
log
b
a
log
(
n
)
)
{\displaystyle f(n)=\Theta \left(n^{\log _{b}a}\right)\rightarrow T(n)=\Theta \left(n^{\log _{b}a}\log(n)\right)}
f
(
n
)
=
Θ
(
n
log
b
a
⋅
log
k
n
)
→
T
(
n
)
=
Θ
(
n
log
b
a
⋅
log
k
+
1
n
)
w
h
e
r
e
k
≥
0
{\displaystyle f(n)=\Theta \left(n^{\log _{b}a}\cdot \log ^{k}n\right)\rightarrow T(n)=\Theta \left(n^{\log _{b}a}\cdot \log ^{k+1}n\right)\;\;\;where\;\;k\geq 0}
f
(
n
)
=
Ω
(
n
log
b
(
a
)
+
ε
)
,
a
f
(
n
b
)
≤
c
f
(
n
)
→
T
(
n
)
=
Θ
(
f
(
n
)
)
w
h
e
r
e
ε
>
0
,
c
<
1
{\displaystyle f(n)=\Omega \left(n^{\log _{b}(a)+\varepsilon }\right),af\left({\frac {n}{b}}\right)\leq cf(n)\rightarrow T(n)=\Theta (f(n))\;\;\;\;where\;\;\varepsilon >0,c<1}
השיטה פועלת גם עבור
⌊
n
b
⌋
{\displaystyle \left\lfloor {\frac {n}{b}}\right\rfloor \,}
ו-
⌈
n
b
⌉
{\displaystyle \left\lceil {\frac {n}{b}}\right\rceil \,}
.
לדוגמה, בהינתן נוסחת הנסיגה
T
(
n
)
=
4
T
(
n
2
)
+
n
2
{\displaystyle T\left(n\right)=4T\left({\frac {n}{2}}\right)+n^{2}}
, ניתן להשתמש בשיטת האב באופן הבא:
מציבים
a
=
4
,
b
=
2
,
f
(
n
)
=
n
2
{\displaystyle a=4,b=2,f(n)=n^{2}}
, ומקבלים:
n
l
o
g
b
a
=
n
l
o
g
2
4
=
n
2
=
f
(
n
)
{\displaystyle n^{log_{b}a}=n^{log_{2}4}=n^{2}=f(n)}
. זהו מקרה ב' בשיטת האב, ולכן:
T
(
n
)
=
Θ
(
n
2
l
o
g
(
n
)
)
{\displaystyle T(n)=\Theta (n^{2}log(n))}
.