簡體   English   中英

展開方法:當 n = 0 和 2T(n-1) + 1 時,T(n) = 1

[英]Unrolling Method For: T(n) = 1 when n = 0 and 2T(n-1) + 1

為了

  • 當 n = 0 時,T(n) = 1
  • T(n) = 2T(n-1) + 1 否則

我知道我們應該尋找模式並理解問題,直到我們開始用不同的變量轉換方程。 然而,一旦我到達那里,我不明白它是如何完成的以及為什么要完成某些事情。

我的問題特別是我們在 2 i ·T(n-1) 處用n替換i 但是,完整的解釋也很有用!

展開方法的圖片

就像 99999 10是 100000 10 - 1, 11111 2是 100000 2 - 1 一樣。

有兩種方法可以看待這個問題。 一個是從一些任意的n個工作倒退,這說明你已經蓋。 我發現有用的另一種方法是從零開始,直到n

  • T(0) = 1
  • T(1) = 1 << 1 + 1 = 3
  • T(2) = 3 << 1 + 1 = 7
  • ...

這里 << 是二進制數上的“左移”運算符,相當於乘以 2。這個運算符在許多編程語言中相當常見。 它有助於表明您只是在每一步添加 1 位。 回到第一個斷言, n個連續的一位等價於 2 n + 1 - 1。

您問題中的解釋僅使用i作為從 1 到n運行的計數器。 除了作為計步器之外,它不是等式的一部分。 在最后一步中, i = n ,因此您可能會對轉換感到困惑。

當第一次看到公式時,我和你有同樣的問題。 但讓我們從頭開始。
首先,您嘗試通過i逐步接近最終深度n 因此,對於每個數字i您解析公式i次(在圖片中i=1 , i=2 , i=3 , i=4 ),但要注意您還不能解析T(ni) 但是您可以推導出i=n的模式。 這一行實際上是從錯誤開始的:圖片上寫着i=ni但實際上應該是i=n因為你到達了底部。
剩下的就很簡單了:你寫下你看到的模式並將它放在一個總和公式中( Sum_{j=0}^{i-1}2^j )。 你用n代替i ,因為這是該行的前提。 您將T(nn)替換為T(0)=1 接下來,您應用有限幾何級數,從而擺脫求和符號。 其余的應該是清楚的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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