如何求解遞推式 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的冪的和的方法數,即)。
裡面Formula里,解析組合學的鼻祖之一的Philippe Flajolet(同時也是我最近看的書的作者之一,可惜已逝)提到漸進展開已在de Bruijn的論文里給出。在同頁面查找de Bruijn,找到論文名《On Mahler"s partition problem》及其PDF http://www.dwc.knaw.nl/DL/publications/PU00018536.pdf
點開鏈接,得到A000123(把2n拆分成2的冪的和的方法數)的漸進表達式。忽略低階項和係數,。回到一開始,因為
所以夾逼得到。
省略了n多係數/低階項,也有若干的off by 1(懶),不過但願漸進階不差太多...感興趣的可以嚴格分析一下,把log的係數什麼的補上。考慮時滿足的函數,有
計算可能有誤。原遞推式不太懂,不過個人猜想。
在大O符號下可以只考慮(需要證明)。根據匿名用戶的思路,設
則令
則考慮到沒有初等表達式,設我們近似用的函數滿足
則余項主項與相同,反過來可以得到的主項同。這樣可以用如下方式來逐步逼近
或推薦閱讀:
※如何評價2015年的數模美賽?
※焦李成寫的深度學習、優化與識別這本書怎麼樣?
※面試有多年從業經歷但是基礎不好的程序員,是否需要詢問基礎演算法的問題?
※做一個簡單的搜索引擎,需要哪些知識和技術?