[英]How can a be smaller than 1 in recurrence relations?
遞減遞推關系的一般形式是: T(n)=aT(nb)+f(n)
例如T(n)=T(n-1)+1具有以下偽代碼。 這里a = 1。
void rec(num)
{
if(num>0)
{
printf(num);
rec(num-1);
}
}
並且T(n)=2T(n-1)+1具有以下偽代碼。 這里a = 2。
void rec(num)
{
if(num>0)
{
printf(num);
rec(num-1);
rec(num-1);
}
}
Master 的遞減函數定理指出,如果 a<1 ,T(n)=O(f(n))。 例如T(n)=0.5T(n-1)+1是與a =0.5 的關系。
我想問一下a怎么能小於 1? 上述關系的一些可能的偽代碼是什么?
遞歸關系只是 ℕ 上 (a class of) 函數的簡潔數學描述。 您的示例T(n)=0.5T(n-1)+1
是一個完全有效的遞歸關系,它有許多解決方案,例如T(1) = 1, T(2) = 1.5, T(3) = 1.75, ..
,或者,一般來說,T(n) = O(1)
主定理使用遞歸關系來描述分治算法的運行時間。 在這種情況下, a
代表原始問題被划分的子問題的數量。
很明顯,對於任何重要的算法,該數字必須是 integer > 0。 在這種情況下, a=0.5
沒有任何意義——它不對應於任何算法或偽代碼的 class。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.