簡體   English   中英

在遞推關系中 a 如何小於 1?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM