我們得到這些〜50GB的數據文件,包含16個字節的代碼,並且我想找到任何出現時間的1/2或更多的代碼。有沒有什麼辦法可以通過數據一次性完成?日誌梳理算法
編輯:有很多代碼 - 可能每個代碼都不同。
專欄:我選擇達柳斯培根作爲最佳答案,因爲我認爲最好的算法是他所鏈接的多數元素的修改。大多數算法應該是可修改的,只能使用少量的內存 - 就像我認爲的201代碼獲得1/2的內存一樣。基本上你只是走在流數達201個不同的代碼。只要您找到201個不同的代碼,就會丟棄每個代碼(從計數器中扣除1,忘記任何變爲0的代碼)。最後,你最多下降了N/201倍,所以任何比這個更多次的代碼仍然必須在周圍。
但是這是一個兩遍算法,而不是一個。你需要第二次通過才能統計候選人的人數。實際上,很容易發現解決此問題的任何解決方案必須至少使用2次(您加載的第一批元素可能全部不同,其中一個代碼最終可能只有1/2%)。
感謝幫助!
嗯,沒有。流/速寫算法的全部重點在於無法保留直方圖,因爲數據非常龐大。 – ShreevatsaR 2008-12-09 03:42:22
他/她正在談論使用多次通行證來追捕高計數的時間間隔 - 我的問題只是需要的通過次數。 – Gwildore 2008-12-09 03:57:38
感覺你應該能夠建立一個直方圖,如果你的桶(bin)的大小足夠大:http://en.wikipedia.org/wiki/Histogram#Number_of_bins_and_width – 2009-01-16 02:03:59