我想了解哪些在here描述simipiled緩存忘卻先行陣列,並從35頁this presentation緩存無視先行陣列
分析插入成簡體 分形樹:
- 合併成本2個大小爲X的數組的成本爲O(X = B)塊I/O。合併是非常有效的I/O 。
- 合併的每個元素的成本爲O(1/B),因爲O(X)元素合併爲 。
- 每個元素被合併的最大次數是O(logN)。
- 平均插入成本是O(logN個/ B)
我可以understhand#1,#2和#3,但我不理解#4,從紙,合併可以被認爲是作爲二進制加法進位,例如(31)B可以被提供:當插入新項目(加1)時,應該有5 = log(32)合併(5進位)。但是,在這種情況下,我們必須合併32個元素!另外,如果每次我們加1,那麼從0到2^k將執行多少次carryies? anwser應該是2^k - 1。換句話說,每插入一個合併!
so#4是如何計算的?
你如何將32個有序列表與5個有序列表合併成一個線性區域?即使使用分數級聯(http://zh.wikipedia.org/wiki/Fractional_cascading),它仍然是O(N)。 – Chang 2011-05-23 02:43:34
在這篇論文中,有人說:「cache-oblivious lookahead array ...由log2(N)數組或級別組成......第k個數組的大小爲2k,數組連續存儲在內存中。」而且,他們的成本模型僅計算磁盤到內存的傳輸。 – 2011-05-23 04:54:29