哪位大神來講一下DGIM演算法?

時間 2021-05-30 23:25:09

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...