如何求解遞推式 T(n) = T(n-1) + T(floor(n/2)) + 1?
完整的遞推式為
初值為。
,遞推式從
開始有效。這個遞推式超出了Master theorem和Akra-Bazzi method能夠處理的範圍。用z變換求解也遇到了困難(式中同時出現了
和
)。
在知乎上搜索也沒有發現本質相同的遞推式。
感覺跟下面這個函數有相似之處:請問形狀如下圖的函數,且滿足f "(x) = f(2x)。如何得到這個函數的具體形式? - 數學如果求完整表達式很困難,能求出Big-Theta notation也可以。
目測,是quasi-polynomial。
***********以下是更新***********
對於某個
。鑒於我們只是在目測答案,所以捨棄這個
。於是,就是要求某個
使得
。
開始目測:代任何一個polynomial ,發現右邊太大,說明
是super-polynomial。代
,發現左邊太大,說明
是sub-exponential。於是,(不知道為什麼)設
,即
。兩邊取對數,換元,再用之前的trick,得到
。於是,
。
具體求解特別困難的樣子。漸進的話如下勉強可作(弊)。 (剛發現你的初始值居然不太一樣,不過應該不影響結果...)
首先生成前若干項(Mathematica):
{1, 3, 5, 9, 13, 19, 25, 35, 45, 59, 73, 93, 113, 139, 165, 201, 237, 283, 329, 389}丟到OEIS里,得到這個序列:A102378 - OEIS。(設為裡面寫了, 所以跑到A018819看下描述(把
拆分成2的冪的和的方法數,設為
)。
然後隨便Google搜搜partitions into powers of two之類的,找到A000123 - OEIS (把拆分成2的冪的和的方法數,即
)。
在同頁面查找de Bruijn,找到論文名《On Mahler"s partition problem》及其PDF http://www.dwc.knaw.nl/DL/publications/PU00018536.pdf
點開鏈接,得到A000123(把2n拆分成2的冪的和的方法數)的漸進表達式。忽略低階項和係數,回到一開始,因為
所以夾逼得到。
考慮時滿足
的函數
,有
原遞推式不太懂,不過個人猜想。
根據匿名用戶的思路,設
令
考慮到沒有初等表達式,設我們近似用的函數
滿足
這樣可以用如下方式來逐步逼近
推薦閱讀:
※如何評價2015年的數模美賽?
※焦李成寫的深度學習、優化與識別這本書怎麼樣?
※面試有多年從業經歷但是基礎不好的程序員,是否需要詢問基礎演算法的問題?
※做一個簡單的搜索引擎,需要哪些知識和技術?
