1樓:若羽
二進位製流,為流中每個位安排啊時間戳(它達到位置)。由於只要區分長度為N的視窗內不同位置,因此可以將所有時間戳對N取模。
程式設計師可以將視窗劃分為多個桶,每個桶包含:
1)最右邊的時間戳,最近的時間戳
2)桶中1的數目,為2的冪。
採用O(lgN)表示桶的大小。
注意事項:
1)桶最右邊的位置上總是1。
2)每個1的位置總在桶中。
3)乙個位置大小只能屬於乙個桶。
4)桶大小從最小變為最大,相同桶大小不超過兩個。
5)桶的大小是二的冪次方。
6)從右到左掃瞄,桶大小不變。
2樓:寇曉宇
首先這個演算法是用來回答這樣的問題的「 假設對於乙個二進位製流,我們有乙個針對長度為N的滑動視窗(window)的查詢「最後的k個位中有多少個1 」
因為資料流過大,無法儲存全部資料,所以通過這個演算法 (空間複雜度為O(log2N),時間複雜度為O(logN) )來進行大資料流統計。
演算法步驟:
1)維護乙個資料結構:將二進位制分組,每組中1的個數是2的次冪,從右至左組的都是非遞減的,只須記錄每組的兩端的位置即可。類似於等比數列
2)這樣組的個數有O(log(2, N)),記錄組的一端位置,所需空間log(2, N)位。則統計整個視窗所佔記憶體為O( (log(2, N)) ^ 2 )
3)求解:估計1的個數:比較每組兩端的位置與k的大小,找到k值所在的組b,累加之前組的大小及組b的一半大小。
資料結構的更新:
每乙個新的位進入滑動視窗後,最左邊乙個位從視窗中移出(同時從桶中移出);如果最左邊的桶的時間戳是當前時間戳減去N(也就是說桶裡已經沒有處於視窗中的位),則放棄這個桶;
對於新加入的位,如果其為0,則無操作;否則建立乙個包含新加入位的大小為1的桶;
由於新增乙個大小為1的桶而出現3個桶大小為1,則合併最左邊的兩個桶為乙個大小為2的桶;合併之後可能出現3個大小為2的桶,則合併最左邊兩個大小為2的桶得到乙個大小為4的桶……依次類推直到到達最左邊的桶。
誤差上下限:
至少是正確值的50%:最差情況b中都是1。
最多超過正確值的50%:最差情況只有最右邊一位為1。
麻煩哪位大神來分析一下我的情況,為什麼我找不到女朋友,我是不是特別差勁啊
大模頭 周呂文 如何科學地證明你為什麼沒有女朋友?第二篇告訴你該如何有女朋友 如何搶別人懷裡的女孩子?第三篇告訴你有了女朋友後應該如何哄 情人節,數學教你如何科學地哄女朋友? 小繃帶 不管是男生還是女生都不要因為沒有物件而否定自己,我上學期間的戀愛基本都是乙個月分手,大學畢業以後差不多四五年吧一直也...
哪位大神介紹一下艾頓?
個人覺得中鋒裡的維金斯吧,上限和維金斯差不多不談技術特點,單論乙個心氣,枸杞養生打法!球給到低位,碰到稍微出手機會差一點的情況立馬傳出來,表面看起來合理,實則缺少球員心氣和擔當!說配乙個好後衛資料能起飛我是不大相信,這種具備自主進攻,模板上將的人,有無好後衛提公升沒多大,恩比德剛復出的時候球隊後衛是...
哪位大神幫我翻譯一下歌詞?
雪餅醬 去聽了一下,把歌詞整理出來了,至於翻譯,超過50字不給錢的翻譯都是耍流氓。Call Myself A Liar Alexandra Burke Oh oh oh no no Call myself a liar Honey,knowing and knowing,I can feel the...