專利名稱:一種數(shù)據(jù)流中Top-k項(xiàng)的挖掘方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)流挖掘領(lǐng)域,尤其涉及一種數(shù)據(jù)流中Top-k項(xiàng)的挖掘方法 及系統(tǒng)。
背景技術(shù):
近年來,數(shù)據(jù)流挖掘被廣泛應(yīng)用到傳感器網(wǎng)絡(luò)通信、Web服務(wù)器點(diǎn)擊日志、 網(wǎng)絡(luò)安全監(jiān)控與異常檢測(cè)、股票交易、通話記錄、環(huán)境監(jiān)測(cè)等領(lǐng)域,因此已成 為國(guó)內(nèi)外各界研究的熱點(diǎn)。
一般地,數(shù)據(jù)流可以被認(rèn)為是一種連續(xù)的無窮的數(shù)據(jù)序列。相對(duì)于傳統(tǒng)的 靜態(tài)數(shù)據(jù)挖掘,數(shù)據(jù)流挖掘面臨著實(shí)時(shí)性、空間性和近似性等技術(shù)挑戰(zhàn)。目前, 針對(duì)數(shù)據(jù)流挖掘的研究工作主要包括聚類分析、數(shù)據(jù)分類、頻繁模式(項(xiàng))和 T叩-k項(xiàng)挖掘等方面,其中,T叩-k項(xiàng)挖掘在網(wǎng)絡(luò)安全監(jiān)控與異常檢測(cè)領(lǐng)域具 有重要意義,它能夠有效發(fā)現(xiàn)用戶最關(guān)注的前k個(gè)數(shù)據(jù)項(xiàng),如網(wǎng)絡(luò)流量中流向 目的IP地址的Top-k流量統(tǒng)計(jì),從而為網(wǎng)絡(luò)安全監(jiān)控與網(wǎng)絡(luò)異常檢測(cè)提供可 靠的技術(shù)手段。Top-k項(xiàng)挖掘研究所面臨的主要問題為在滿足實(shí)時(shí)性處理需求 的前提下,如何利用有限存儲(chǔ)空間來盡可能準(zhǔn)確地挖掘出用戶定義的T叩-k 數(shù)據(jù)項(xiàng)。
當(dāng)前,針對(duì)數(shù)據(jù)流頻繁模式(項(xiàng))的研究工作很多,并取得了很好的研究成 果,然而在數(shù)據(jù)流Top-k項(xiàng)挖掘方面的研究并不多,僅有的一些工作往往集中 在T叩-k頻繁項(xiàng)的挖掘,其中效果最好的研究成果為Metwally等人公開的一 種Top-k頻繁項(xiàng)的挖掘方法,Space-Saving (空間節(jié)約)方法"An Integrated Efficient Solution for Computing Frequent and Top-k Elements in Data Streams" , A. Metwally, D. Agrawal, And A. E. Abbadi, ACM Transactions on Database Systems. 2006, 31(3): 1095 - 1133,同時(shí)也公開了一種用于存 儲(chǔ)和査找最小頻繁項(xiàng)的鏈表結(jié)構(gòu)Stream-Summary (流摘要結(jié)構(gòu))。該方法的 核心思想是考察數(shù)據(jù)流中的每一個(gè)數(shù)據(jù)項(xiàng),如果數(shù)據(jù)項(xiàng)在存儲(chǔ)結(jié)構(gòu)Stream-Summary中,將數(shù)據(jù)項(xiàng)對(duì)應(yīng)的的計(jì)數(shù)器的值加1;否則,用該數(shù)據(jù)項(xiàng)替 換掉Stream-SummaiT計(jì)數(shù)器值最小的數(shù)據(jù)項(xiàng),并將計(jì)數(shù)器的值置為存儲(chǔ)的原 計(jì)數(shù)器的值同1的加和。
Space-Saving方法及其Stream-Su腿ary鏈表結(jié)構(gòu)主要適用于頻繁項(xiàng)統(tǒng) 計(jì),即加l操作;而針對(duì)數(shù)據(jù)項(xiàng)屬性值統(tǒng)計(jì),即加n操作,問題,該方法的最 差時(shí)間復(fù)雜度將降為O(k),同時(shí)由于Stream-Summary鏈表結(jié)構(gòu)本身固有的機(jī) 制也導(dǎo)致了該方法空間復(fù)雜度的提高以及準(zhǔn)確性的下降。
發(fā)明內(nèi)容
為了解決上述的技術(shù)問題,本發(fā)明提供了一種數(shù)據(jù)流中Top-k項(xiàng)的挖掘方 法及系統(tǒng),能夠降低了最差處理時(shí)間,降低了存儲(chǔ)空間,提高了挖掘的準(zhǔn)確性。
本發(fā)明公開了一種數(shù)據(jù)流中T叩-k項(xiàng)的挖掘方法,包括
步驟l,初始化平衡二叉樹,所述平衡二叉樹的節(jié)點(diǎn)用于存儲(chǔ)數(shù)據(jù)流中數(shù)
據(jù)項(xiàng)的信息,所述信息包括所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值;
步驟2,將數(shù)據(jù)流中的數(shù)據(jù)項(xiàng)的信息存儲(chǔ)到所述平衡二叉樹節(jié)點(diǎn)中,所述
節(jié)點(diǎn)在平衡二叉樹中的位置依據(jù)排序規(guī)則,所述排序規(guī)則以所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的
時(shí)間戳和計(jì)數(shù)器的值為參數(shù);
步驟3,按用戶需求遍歷所述平衡二叉樹,輸出Top-k項(xiàng)的統(tǒng)計(jì)結(jié)果。 所述步驟2進(jìn)一步包括
步驟21,從所述數(shù)據(jù)流中取出當(dāng)前到達(dá)的數(shù)據(jù)項(xiàng),判斷所述平衡二叉樹 是否已存儲(chǔ)所述數(shù)據(jù)項(xiàng)的信息,如果是,則執(zhí)行步驟22,否則,執(zhí)行步驟23;
步驟22,更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù) 器的值,按所述排序規(guī)則調(diào)整所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)節(jié)點(diǎn)在所述平衡二叉樹中的位
步驟23,從所述平衡二叉樹中確定一個(gè)節(jié)點(diǎn),所述節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng) 對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值,按所述排序規(guī)則確定所述節(jié)點(diǎn)在所述平衡二叉樹 中的位置。
所述步驟23進(jìn)一步包括
步驟31,判斷所述二叉樹是否已經(jīng)存滿,如果是,則執(zhí)行步驟32,否則, 執(zhí)行步驟33;步驟32,從所述平衡二叉樹中選擇存儲(chǔ)的計(jì)數(shù)器的值最小的節(jié)點(diǎn),采用 所述被選擇節(jié)點(diǎn)中存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的
值和時(shí)間戳,按所述排序規(guī)則調(diào)整所述節(jié)點(diǎn)在所述平衡二叉樹中的位置;
步驟33,所述平衡二叉樹增加一個(gè)新節(jié)點(diǎn),所述新節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng) 對(duì)應(yīng)的計(jì)數(shù)器的值和時(shí)間戳,按所述排序規(guī)則將所述新節(jié)點(diǎn)插入到所述平衡二 叉樹中。
所述步驟22中更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)計(jì)數(shù)器的值 進(jìn)一步為更新所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述計(jì)數(shù)器的值同所述數(shù)據(jù)項(xiàng) 的屬性值的加和;
所述步驟32中采用所述被選擇節(jié)點(diǎn)中存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)存儲(chǔ)所述 數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值進(jìn)一步為所述存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)存儲(chǔ)所述數(shù) 據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述節(jié)點(diǎn)存儲(chǔ)的原計(jì)數(shù)器的值同所述數(shù)據(jù)項(xiàng)的屬性 值的加和;
所述步驟33中所述新節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值進(jìn)一步為所 述新節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述數(shù)據(jù)項(xiàng)的屬性值。 所述步驟1還包括初始化系統(tǒng)時(shí)間戳;
所述步驟21還包括更新系統(tǒng)時(shí)間戳為所述系統(tǒng)時(shí)間戳同1的加和; 所述步驟22中更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳進(jìn)
一步為更新所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳為所述系統(tǒng)時(shí)間戳;
所述步驟23中所述節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳進(jìn)一步為所述節(jié)點(diǎn)
存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳為所述系統(tǒng)時(shí)間戳。
所述平衡二叉樹的節(jié)點(diǎn)的數(shù)量最多為Top-k項(xiàng)的參數(shù)k個(gè);
所述步驟31中判斷所述二叉樹是否已經(jīng)存滿進(jìn)一步為判斷所述平衡二叉
樹中節(jié)點(diǎn)的數(shù)量是否小于k,如果是,則所述平衡二叉樹沒有存滿,否則,所
述平衡二叉樹已經(jīng)存滿。 所述排序規(guī)則為,
所述平衡二叉樹中左兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值小于父親節(jié)點(diǎn) 中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值;
所述平衡二叉樹中右兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值大于父親節(jié)點(diǎn) 中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值;所述平衡二叉樹中兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值等于父親節(jié)點(diǎn)中 數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值時(shí),左兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳小于父親節(jié)點(diǎn)
中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳;右兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳大于父親節(jié)點(diǎn)中數(shù)
據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳。
本發(fā)明還公開了一種數(shù)據(jù)流中Top-k項(xiàng)的挖掘系統(tǒng),包括 初始化模塊,用于初始化平衡二叉樹,所述平衡二叉樹的節(jié)點(diǎn)用于存儲(chǔ)所 述數(shù)據(jù)流中數(shù)據(jù)項(xiàng)的信息,所述信息包括所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的
值;
平衡二叉樹模塊,用于將數(shù)據(jù)流中的數(shù)據(jù)項(xiàng)的信息存儲(chǔ)到所述平衡二叉樹 節(jié)點(diǎn)中,所述節(jié)點(diǎn)在平衡二叉樹中的位置依據(jù)排序規(guī)則,所述排序規(guī)則以所述 數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值為參數(shù);
結(jié)果輸出模塊,用于按用戶需求遍歷所述平衡二叉樹,輸出T叩-k項(xiàng)的統(tǒng) 計(jì)結(jié)果。
所述平衡二叉樹模塊進(jìn)一步包括
判斷模塊,用于從所述數(shù)據(jù)流中取出當(dāng)前到達(dá)的數(shù)據(jù)項(xiàng),判斷所述平衡二 叉樹是否已存儲(chǔ)所述數(shù)據(jù)項(xiàng)的信息,如果是,則啟動(dòng)更新模塊,否則,啟動(dòng)創(chuàng) 建模塊;
所述更新模塊,用于更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間 戳和計(jì)數(shù)器的值,按所述排序規(guī)則調(diào)整所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)節(jié)點(diǎn)在所述平衡二叉樹 中的位置;
所述創(chuàng)建模塊,用于從所述平衡二叉樹中確定一個(gè)節(jié)點(diǎn),所述節(jié)點(diǎn)存儲(chǔ)所 述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值,按所述排序規(guī)則確定所述節(jié)點(diǎn)在所述平 衡二叉樹中的位置。
所述創(chuàng)建模塊進(jìn)一步用于判斷所述二叉樹是否已經(jīng)存滿,如果是,則從所 述平衡二叉樹中選擇存儲(chǔ)的計(jì)數(shù)器的值最小的節(jié)點(diǎn),確定應(yīng)用被選擇節(jié)點(diǎn)中存 儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值和時(shí)間戳,按所述排 序規(guī)則調(diào)整所述節(jié)點(diǎn)在所述平衡二叉樹中的位置,否則,在所述平衡二叉樹中 增加一個(gè)新節(jié)點(diǎn),確定應(yīng)用所述新節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值和時(shí) 間戳,按所述排序規(guī)則將所述新節(jié)點(diǎn)插入到所述平衡二叉樹中。
所述更新模塊在更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)計(jì)數(shù)器的值時(shí)進(jìn)一步用于更新所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述計(jì)數(shù)器的值同所述 數(shù)據(jù)項(xiàng)的屬性值的加和;
所述創(chuàng)建模塊在確定應(yīng)用被選擇節(jié)點(diǎn)中存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)存儲(chǔ)所 述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值進(jìn)一步用于在所述存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)中存 儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述節(jié)點(diǎn)存儲(chǔ)的原計(jì)數(shù)器的值同所述數(shù)據(jù)
項(xiàng)的屬性值的加和;
所述創(chuàng)建模塊在確定應(yīng)用所述新節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值 進(jìn)一步用于在所述新節(jié)點(diǎn)中存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述數(shù)據(jù)項(xiàng) 的屬性值。
所述初始化模塊還用初始化系統(tǒng)時(shí)間戳;
所述判斷模塊還用于更新系統(tǒng)時(shí)間戳為所述系統(tǒng)時(shí)間戳同1的加和; 所述更新模塊在更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的吋間戳
時(shí)進(jìn)一步用于更新所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳為所述系統(tǒng)時(shí)間戳;
所述創(chuàng)建模塊在所述節(jié)點(diǎn)中存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳?xí)r進(jìn)一步用于
在所述節(jié)點(diǎn)中存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳為所述系統(tǒng)時(shí)間戳。 所述平衡二叉樹的節(jié)點(diǎn)的數(shù)量最多為Top-k項(xiàng)的參數(shù)k個(gè); 所述創(chuàng)建模塊在判斷所述二叉樹是否已經(jīng)存滿時(shí)進(jìn)一步用于判斷所述平
衡二叉樹中節(jié)點(diǎn)的數(shù)量是否小于k,如果是,則所述平衡二叉樹沒有存滿,否
則,所述平衡二叉樹已經(jīng)存滿。 所述排序規(guī)則為,
所述平衡二叉樹中左兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值小于父親節(jié)點(diǎn) 中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值;
所述平衡二叉樹中右兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值大于父親節(jié)點(diǎn) 中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值;
所述平衡二叉樹中兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值等于父親節(jié)點(diǎn)中 數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值時(shí),左兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳小于父親節(jié)點(diǎn) 中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳;右兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳大于父親節(jié)點(diǎn)中數(shù) 據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳。
本發(fā)明的有益效果在于通過應(yīng)用計(jì)數(shù)器累計(jì)疊加屬性值,本發(fā)明更適用于 加n操作;通過采用平衡二叉樹存儲(chǔ)數(shù)據(jù)項(xiàng)信息,降低空間復(fù)雜度和時(shí)間復(fù)雜度;通過引入時(shí)間戳,提高挖掘的準(zhǔn)確性。
圖1是本發(fā)明數(shù)據(jù)流中T叩-k項(xiàng)的挖掘方法的流程圖2是本發(fā)明方法的具體實(shí)施例流程圖3是平衡二叉樹和哈希表的組織結(jié)構(gòu)圖4是本發(fā)明數(shù)據(jù)流中Top-k項(xiàng)的挖掘系統(tǒng)的結(jié)構(gòu)圖5是平衡二叉樹模塊的結(jié)構(gòu)圖。
具體實(shí)施例方式
下面結(jié)合附圖,對(duì)本發(fā)明做進(jìn)一步的詳細(xì)描述。 本發(fā)明的方法流程如圖1所示,包括
步驟SlOl,初始化平衡二叉樹,平衡二叉樹的節(jié)點(diǎn)用于存儲(chǔ)數(shù)據(jù)項(xiàng)的信 息,信息包括所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值。
步驟S102,將數(shù)據(jù)流中的數(shù)據(jù)項(xiàng)的信息存儲(chǔ)到所述平衡二叉樹節(jié)點(diǎn)中, 所述節(jié)點(diǎn)在平衡二叉樹中的位置依據(jù)排序規(guī)則,排序規(guī)則以所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的 時(shí)間戳和計(jì)數(shù)器的值為參數(shù)。
步驟S103,按用戶需求遍歷所述平衡二叉樹,輸出Top-k項(xiàng)的統(tǒng)計(jì)結(jié)果。
本發(fā)明方法具體實(shí)施例流程如圖2所示。
步驟S201,初始化平衡二叉樹,平衡二叉樹表示為D,平衡二叉樹的節(jié)點(diǎn) 用于存儲(chǔ)數(shù)據(jù)項(xiàng)的信息;初始化哈希表,哈希表表示為H,哈希表用于快速査 找數(shù)據(jù)項(xiàng)是否在平衡二叉樹中;初始化系統(tǒng)時(shí)間戳,系統(tǒng)時(shí)間戳表示為t,初 始化時(shí)t=0。
Top-k項(xiàng)的參數(shù)為k。平衡二叉樹中節(jié)點(diǎn)的個(gè)數(shù)最多為k個(gè)。由此,確定 了本方法近似結(jié)果的最大誤差為
<formula>formula see original document page 12</formula>
其中S為數(shù)據(jù)流中數(shù)據(jù)項(xiàng)的集合,Ni為數(shù)據(jù)項(xiàng)i的屬性值。 數(shù)據(jù)項(xiàng)信息包括數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值和時(shí)間戳,以及數(shù)據(jù)項(xiàng)名稱。 存儲(chǔ)數(shù)據(jù)項(xiàng)的信息的節(jié)點(diǎn)在平衡二叉樹中按排序規(guī)則排序,排序規(guī)則以數(shù) 據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值為參數(shù)。具體規(guī)則如下平衡二叉樹中左兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值小于父親節(jié)點(diǎn)中數(shù) 據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值;
平衡二叉樹中右兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值大于父親節(jié)點(diǎn)中數(shù) 據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值;
平衡二叉樹中兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值等于父親節(jié)點(diǎn)中數(shù)據(jù) 項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值時(shí),左兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳小于父親節(jié)點(diǎn)中數(shù) 據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳;右兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳大于父親節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)
對(duì)應(yīng)的時(shí)間戳。
平衡二叉樹和哈希表的組織結(jié)構(gòu)如圖3所示。
e表示數(shù)據(jù)項(xiàng)的名稱,唯一標(biāo)識(shí)一個(gè)數(shù)據(jù)項(xiàng),如目的IP地址。
Ce表示數(shù)據(jù)項(xiàng)e對(duì)應(yīng)的計(jì)數(shù)器的值,用于記錄數(shù)據(jù)項(xiàng)的個(gè)數(shù)或?qū)傩灾档?br>
累加和,如屬性值為發(fā)向某目的IP地址的字節(jié)數(shù)。
Te表示數(shù)據(jù)項(xiàng)e對(duì)應(yīng)的時(shí)間戳,記錄值為數(shù)據(jù)項(xiàng)e最近一次更新時(shí)的時(shí)
間戳,用于判斷該數(shù)據(jù)項(xiàng)在近期的頻繁程度。 Pleft表示該節(jié)點(diǎn)的左兒子節(jié)點(diǎn)。 Pright表示該節(jié)點(diǎn)的右兒子節(jié)點(diǎn)。
Pnext表示該節(jié)點(diǎn)在哈希表中相同哈希值鏈表上的下一個(gè)節(jié)點(diǎn)。
步驟S202,從數(shù)據(jù)流S中取出當(dāng)前到達(dá)的數(shù)據(jù)項(xiàng)e,更新系統(tǒng)時(shí)間戳為 t=t+l,使得每個(gè)數(shù)據(jù)項(xiàng)都對(duì)應(yīng)一個(gè)唯一的時(shí)間戳。
步驟S203,判斷數(shù)據(jù)項(xiàng)e是否在平衡二叉樹中存儲(chǔ),如果是,執(zhí)行步驟 S204,否則,執(zhí)行步驟S205。
判斷方法為在哈希表中對(duì)數(shù)據(jù)項(xiàng)e的名稱進(jìn)行快速查找。
步驟S204,將數(shù)據(jù)項(xiàng)e的計(jì)數(shù)器器的值Ce更新為Ce二Ce+Ne,將數(shù)據(jù)項(xiàng)e 的時(shí)間戳更新為Te二t, t為系統(tǒng)時(shí)間戳,執(zhí)行步驟S208。
步驟S205,判斷平衡二叉樹是否已經(jīng)存滿,如果是,則執(zhí)行步驟S207, 否則,執(zhí)行步驟S206。
判斷方法為判斷平衡二叉樹中節(jié)點(diǎn)的數(shù)量是否小于k,如果是,則平衡二 叉樹沒有存滿,否則,所述平衡二叉樹已經(jīng)存滿,其中k為T叩-k項(xiàng)的參數(shù)。
步驟S206,平衡二叉樹增加一個(gè)新節(jié)點(diǎn),新節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)項(xiàng)e對(duì)應(yīng)的計(jì) 數(shù)器的值為Ceie,時(shí)間戳為Te^,按排序規(guī)則將新節(jié)點(diǎn)插入到所述平衡二叉樹中;并將數(shù)據(jù)項(xiàng)e加入到哈希表中,執(zhí)行步驟S209。
步驟S207,從平衡二叉樹中選擇存儲(chǔ)的計(jì)數(shù)器的值最小的節(jié)點(diǎn),被選擇 節(jié)點(diǎn)中存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn),該節(jié)點(diǎn)為平衡二叉樹最左兒子節(jié)點(diǎn),該節(jié)點(diǎn) 對(duì)應(yīng)數(shù)據(jù)項(xiàng)表示為ek,將ek從哈希表中刪除,將數(shù)據(jù)項(xiàng)的名稱ek修改為e,存 儲(chǔ)數(shù)據(jù)項(xiàng)e對(duì)應(yīng)的計(jì)數(shù)器的值為Ce《ek+Ne,時(shí)間戳為Te二t,將數(shù)據(jù)項(xiàng)e加入 到哈希表中。
步驟S208,按排序規(guī)則調(diào)整該節(jié)點(diǎn)在平衡二叉樹中的位置。 調(diào)整方法為從平衡二叉樹中取出更新或替換的節(jié)點(diǎn),然后將該節(jié)點(diǎn)重新插
入到平衡二叉樹中,以保證平衡二叉樹中的數(shù)據(jù)項(xiàng)始終按排序規(guī)則進(jìn)行排序。 步驟S209,判斷是否需要輸出結(jié)果,如果是執(zhí)行步驟S210,否則,執(zhí)行
步驟S202。
步驟210,按后根順序遍歷平衡二叉樹,輸出降序排列的Top-k項(xiàng)的統(tǒng)計(jì) 結(jié)果。
本發(fā)明的系統(tǒng)結(jié)構(gòu)如圖4所示,包括
初始化模塊401,用于初始化平衡二叉樹,所述平衡二叉樹的節(jié)點(diǎn)用于存 儲(chǔ)所述數(shù)據(jù)流中數(shù)據(jù)項(xiàng)的信息,所述信息包括所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù) 器的值。
初始化模塊401還用初始化系統(tǒng)時(shí)間戳。
平衡二叉樹模塊402,用于將數(shù)據(jù)流中的數(shù)據(jù)項(xiàng)的信息存儲(chǔ)到所述平衡二 叉樹節(jié)點(diǎn)中,所述節(jié)點(diǎn)在平衡二叉樹中的位置依據(jù)排序規(guī)則,所述排序規(guī)則以 所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值為參數(shù)。
平衡二叉樹模塊402的結(jié)構(gòu)如圖5所示,包括
判斷模塊501,用于從所述數(shù)據(jù)流中取出當(dāng)前到達(dá)的數(shù)據(jù)項(xiàng),判斷所述平
衡二叉樹是否已存儲(chǔ)所述數(shù)據(jù)項(xiàng)的信息,如果是,則啟動(dòng)更新模塊502,否則,
啟動(dòng)創(chuàng)建模塊503。
判斷模塊501還用于更新系統(tǒng)時(shí)間戳為所述系統(tǒng)時(shí)間戳同1的加和。 更新模塊502,用于更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間
戳和計(jì)數(shù)器的值,按所述排序規(guī)則調(diào)整所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)節(jié)點(diǎn)在所述平衡二叉樹
中的位置。
更新模塊502在更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)計(jì)數(shù)器的值時(shí)進(jìn)一步用于更新所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述計(jì)數(shù)器的值同所述 數(shù)據(jù)項(xiàng)的屬性值的加和。
更新模塊502在更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳 時(shí)進(jìn)一步用于更新所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳為所述系統(tǒng)時(shí)間戳。
創(chuàng)建模塊503,用于從所述平衡二叉樹中確定一個(gè)節(jié)點(diǎn),所述節(jié)點(diǎn)存儲(chǔ)所
述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值,按所述排序規(guī)則確定所述節(jié)點(diǎn)在所述平 衡二叉樹中的位置。
創(chuàng)建模塊503進(jìn)一步用于判斷所述二叉樹是否已經(jīng)存滿,如果是,則從所 述平衡二叉樹中選擇存儲(chǔ)的計(jì)數(shù)器的值最小的節(jié)點(diǎn),確定應(yīng)用被選擇節(jié)點(diǎn)中存 儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值和時(shí)間戳,按所述排 序規(guī)則調(diào)整所述節(jié)點(diǎn)在所述平衡二叉樹中的位置,否則,在所述平衡二叉樹中 增加一個(gè)新節(jié)點(diǎn),確定應(yīng)用所述新節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值和時(shí) 間戳,按所述排序規(guī)則將所述新節(jié)點(diǎn)插入到所述平衡二叉樹中。
創(chuàng)建模塊503在確定應(yīng)用被選擇節(jié)點(diǎn)中存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)存儲(chǔ)所 述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值進(jìn)一步用于在所述存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)中存 儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述節(jié)點(diǎn)存儲(chǔ)的原計(jì)數(shù)器的值同所述數(shù)據(jù) 項(xiàng)的屬性值的加和。
創(chuàng)建模塊503在確定應(yīng)用所述新節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值 進(jìn)一步用于在所述新節(jié)點(diǎn)中存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述數(shù)據(jù)項(xiàng) 的屬性值。
創(chuàng)建模塊503在所述節(jié)點(diǎn)中存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳?xí)r進(jìn)一步用于
在所述節(jié)點(diǎn)中存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳為所述系統(tǒng)時(shí)間戳。 平衡二叉樹的節(jié)點(diǎn)的數(shù)量最多為Top-k項(xiàng)的參數(shù)k個(gè);
創(chuàng)建模塊503在判斷所述二叉樹是否已經(jīng)存滿時(shí)進(jìn)一步用于判斷所述平 衡二叉樹中節(jié)點(diǎn)的數(shù)量是否小于k,如果是,則所述平衡二叉樹沒有存滿,否 則,所述平衡二叉樹已經(jīng)存滿。
所述排序規(guī)則為,
所述平衡二叉樹中左兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值小于父親節(jié)點(diǎn) 中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值;
所述平衡二叉樹中右兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值大于父親節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值;
所述平衡二叉樹中兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值等于父親節(jié)點(diǎn)中 數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值時(shí),左兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳小于父親節(jié)點(diǎn)
中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳;右兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳大于父親節(jié)點(diǎn)中數(shù) 據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳。
結(jié)果輸出模塊403,用于按用戶需求遍歷所述平衡二叉樹,輸出T叩-k項(xiàng) 的統(tǒng)計(jì)結(jié)果。
本領(lǐng)域的技術(shù)人員在不脫離權(quán)利要求書確定的本發(fā)明的精神和范圍的條 件下,還可以對(duì)以上內(nèi)容進(jìn)行各種各樣的修改。因此本發(fā)明的范圍并不僅限于 以上的說明,而是由權(quán)利要求書的范圍來確定的。
權(quán)利要求
1. 一種數(shù)據(jù)流中Top-k項(xiàng)的挖掘方法,其特征在于,包括步驟1,初始化平衡二叉樹,所述平衡二叉樹的節(jié)點(diǎn)用于存儲(chǔ)數(shù)據(jù)流中數(shù)據(jù)項(xiàng)的信息,所述信息包括所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值;步驟2,將數(shù)據(jù)流中的數(shù)據(jù)項(xiàng)的信息存儲(chǔ)到所述平衡二叉樹節(jié)點(diǎn)中,所述節(jié)點(diǎn)在平衡二叉樹中的位置依據(jù)排序規(guī)則,所述排序規(guī)則以所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值為參數(shù);步驟3,按用戶需求遍歷所述平衡二叉樹,輸出Top-k項(xiàng)的統(tǒng)計(jì)結(jié)果。
2. 如權(quán)利要求1所述的數(shù)據(jù)流中Top-k項(xiàng)的挖掘方法,其特征在于,所 述步驟2進(jìn)一步包括步驟21,從所述數(shù)據(jù)流中取出當(dāng)前到達(dá)的數(shù)據(jù)項(xiàng),判斷所述平衡二叉樹 是否已存儲(chǔ)所述數(shù)據(jù)項(xiàng)的信息,如果是,則執(zhí)行步驟22,否則,執(zhí)行步驟23;步驟22,更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù) 器的值,按所述排序規(guī)則調(diào)整所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)節(jié)點(diǎn)在所述平衡二叉樹中的位 置;步驟23,從所述平衡二叉樹中確定一個(gè)節(jié)點(diǎn),所述節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng) 對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值,按所述排序規(guī)則確定所述節(jié)點(diǎn)在所述平衡二叉樹 中的位置。
3. 如權(quán)利要求2所述的數(shù)據(jù)流中Top-k項(xiàng)的挖掘方法,其特征在于, 所述步驟23進(jìn)一步包括步驟31,判斷所述二叉樹是否已經(jīng)存滿,如果是,則執(zhí)行步驟32,否則, 執(zhí)行步驟33;步驟32,從所述平衡二叉樹中選擇存儲(chǔ)的計(jì)數(shù)器的值最小的節(jié)點(diǎn),采用 所述被選擇節(jié)點(diǎn)中存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的 值和時(shí)間戳,按所述排序規(guī)則調(diào)整所述節(jié)點(diǎn)在所述平衡二叉樹中的位置;步驟33,所述平衡二叉樹增加一個(gè)新節(jié)點(diǎn),所述新節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng) 對(duì)應(yīng)的計(jì)數(shù)器的值和時(shí)間戳,按所述排序規(guī)則將所述新節(jié)點(diǎn)插入到所述平衡二 叉樹中。
4. 如權(quán)利要求3所述的數(shù)據(jù)流中Top-k項(xiàng)的挖掘方法,其特征在于, 所述步驟22中更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)計(jì)數(shù)器的值進(jìn)一步為更新所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述計(jì)數(shù)器的值同所述數(shù)據(jù)項(xiàng) 的屬性值的加和;所述步驟32中采用所述被選擇節(jié)點(diǎn)中存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)存儲(chǔ)所述 數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值進(jìn)一步為所述存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)存儲(chǔ)所述數(shù) 據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述節(jié)點(diǎn)存儲(chǔ)的原計(jì)數(shù)器的值同所述數(shù)據(jù)項(xiàng)的屬性 值的加和;所述步驟33中所述新節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值進(jìn)一步為所述新節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述數(shù)據(jù)項(xiàng)的屬性值。
5. 如權(quán)利要求2所述的數(shù)據(jù)流中Top-k項(xiàng)的挖掘方法,其特征在于,所述步驟1還包括初始化系統(tǒng)時(shí)間戳;所述步驟21還包括更新系統(tǒng)時(shí)間戳為所述系統(tǒng)時(shí)間戳同1的加和; 所述步驟22中更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳進(jìn)一步為更新所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳為所述系統(tǒng)時(shí)間戳;所述步驟23中所述節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳進(jìn)一步為所述節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳為所述系統(tǒng)時(shí)間戳。
6. 如權(quán)利要求3所述的數(shù)據(jù)流中Top-k項(xiàng)的挖掘方法,其特征在于, 所述平衡二叉樹的節(jié)點(diǎn)的數(shù)量最多為Top-k項(xiàng)的參數(shù)k個(gè);所述步驟31中判斷所述二叉樹是否已經(jīng)存滿進(jìn)一步為判斷所述平衡二叉 樹中節(jié)點(diǎn)的數(shù)量是否小于k,如果是,則所述平衡二叉樹沒有存滿,否則,所述平衡二叉樹已經(jīng)存滿。
7. 如權(quán)利要求1所述的數(shù)據(jù)流中T叩-k項(xiàng)的挖掘方法,其特征在于,所述排序規(guī)則為,所述平衡二叉樹中左兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值小于父親節(jié)點(diǎn) 中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值;所述平衡二叉樹中右兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值大于父親節(jié)點(diǎn) 中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值;所述平衡二叉樹中兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值等于父親節(jié)點(diǎn)中 數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值時(shí),左兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳小于父親節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳;右兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳大于父親節(jié)點(diǎn)中數(shù) 據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳。
8. —種數(shù)據(jù)流中Top-k項(xiàng)的挖掘系統(tǒng),其特征在于,包括-初始化模塊,用于初始化平衡二叉樹,所述平衡二叉樹的節(jié)點(diǎn)用于存儲(chǔ)所述數(shù)據(jù)流中數(shù)據(jù)項(xiàng)的信息,所述信息包括所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的 值;平衡二叉樹模塊,用于將數(shù)據(jù)流中的數(shù)據(jù)項(xiàng)的信息存儲(chǔ)到所述平衡二叉樹 節(jié)點(diǎn)中,所述節(jié)點(diǎn)在平衡二叉樹中的位置依據(jù)排序規(guī)則,所述排序規(guī)則以所述 數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值為參數(shù);結(jié)果輸出模塊,用于按用戶需求遍歷所述平衡二叉樹,輸出T叩-k項(xiàng)的統(tǒng) 計(jì)結(jié)果。
9. 如權(quán)利要求8所述的數(shù)據(jù)流中Top-k項(xiàng)的挖掘系統(tǒng),其特征在于, 所述平衡二叉樹模塊進(jìn)一步包括判斷模塊,用于從所述數(shù)據(jù)流中取出當(dāng)前到達(dá)的數(shù)據(jù)項(xiàng),判斷所述平衡二 叉樹是否己存儲(chǔ)所述數(shù)據(jù)項(xiàng)的信息,如果是,則啟動(dòng)更新模塊,否則,啟動(dòng)創(chuàng) 建模塊;所述更新模塊,用于更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間 戳和計(jì)數(shù)器的值,按所述排序規(guī)則調(diào)整所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)節(jié)點(diǎn)在所述平衡二叉樹 中的位置;所述創(chuàng)建模塊,用于從所述平衡二叉樹中確定一個(gè)節(jié)點(diǎn),所述節(jié)點(diǎn)存儲(chǔ)所 述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值,按所述排序規(guī)則確定所述節(jié)點(diǎn)在所述平 衡二叉樹中的位置。
10. 如權(quán)利要求9所述的數(shù)據(jù)流中T叩-k項(xiàng)的挖掘系統(tǒng),其特征在于,所述創(chuàng)建模塊進(jìn)一步用于判斷所述二叉樹是否已經(jīng)存滿,如果是,則從所 述平衡二叉樹中選擇存儲(chǔ)的計(jì)數(shù)器的值最小的節(jié)點(diǎn),確定應(yīng)用被選擇節(jié)點(diǎn)中存 儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值和時(shí)間戳,按所述排 序規(guī)則調(diào)整所述節(jié)點(diǎn)在所述平衡二叉樹中的位置,否則,在所述平衡二叉樹中 增加一個(gè)新節(jié)點(diǎn),確定應(yīng)用所述新節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值和時(shí) 間戳,按所述排序規(guī)則將所述新節(jié)點(diǎn)插入到所述平衡二叉樹中。
11. 如權(quán)利要求10所述的數(shù)據(jù)流中Top-k項(xiàng)的挖掘系統(tǒng),其特征在于,所述更新模塊在更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)計(jì)數(shù)器的 值時(shí)進(jìn)一步用于更新所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述計(jì)數(shù)器的值同所述數(shù)據(jù)項(xiàng)的屬性值的加和;所述創(chuàng)建模塊在確定應(yīng)用被選擇節(jié)點(diǎn)中存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)存儲(chǔ)所 述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值進(jìn)一步用于在所述存儲(chǔ)的時(shí)間戳最小的節(jié)點(diǎn)中存 儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述節(jié)點(diǎn)存儲(chǔ)的原計(jì)數(shù)器的值同所述數(shù)據(jù) 項(xiàng)的屬性值的加和;所述創(chuàng)建模塊在確定應(yīng)用所述新節(jié)點(diǎn)存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值 進(jìn)一步用于在所述新節(jié)點(diǎn)中存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值為所述數(shù)據(jù)項(xiàng) 的屬性值。
12. 如權(quán)利要求9所述的數(shù)據(jù)流中Top-k項(xiàng)的挖掘系統(tǒng),其特征在于, 所述初始化模塊還用初始化系統(tǒng)時(shí)間戳;所述判斷模塊還用于更新系統(tǒng)時(shí)間戳為所述系統(tǒng)時(shí)間戳同1的加和; 所述更新模塊在更新所述平衡二叉樹中存儲(chǔ)的所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳?xí)r進(jìn)一步用于更新所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳為所述系統(tǒng)時(shí)間戳;所述創(chuàng)建模塊在所述節(jié)點(diǎn)中存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳?xí)r進(jìn)一步用于在所述節(jié)點(diǎn)中存儲(chǔ)所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳為所述系統(tǒng)時(shí)間戳。
13. 如權(quán)利要求10所述的數(shù)據(jù)流中Top-k項(xiàng)的挖掘系統(tǒng),其特征在于, 所述平衡二叉樹的節(jié)點(diǎn)的數(shù)量最多為Top-k項(xiàng)的參數(shù)k個(gè); 所述創(chuàng)建模塊在判斷所述二叉樹是否已經(jīng)存滿時(shí)進(jìn)一步用于判斷所述平衡二叉樹中節(jié)點(diǎn)的數(shù)量是否小于k,如果是,則所述平衡二叉樹沒有存滿,否 則,所述平衡二叉樹已經(jīng)存滿。
14. 如權(quán)利要求8所述的數(shù)據(jù)流中Top-k項(xiàng)的挖掘系統(tǒng),其特征在于, 所述排序規(guī)則為,所述平衡二叉樹中左兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值小于父親節(jié)點(diǎn) 中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值;所述平衡二叉樹中右兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值大于父親節(jié)點(diǎn) 中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值;所述平衡二叉樹中兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值等于父親節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的計(jì)數(shù)器的值時(shí),左兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳小于父親節(jié)點(diǎn) 中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳;右兒子節(jié)點(diǎn)中數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳大于父親節(jié)點(diǎn)中數(shù) 據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳。
全文摘要
本發(fā)明涉及一種數(shù)據(jù)流中Top-k項(xiàng)的挖掘方法和系統(tǒng),方法包括步驟1,初始化平衡二叉樹,所述平衡二叉樹的節(jié)點(diǎn)用于存儲(chǔ)數(shù)據(jù)流中數(shù)據(jù)項(xiàng)的信息,所述信息包括所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值;步驟2,將數(shù)據(jù)流中的數(shù)據(jù)項(xiàng)的信息存儲(chǔ)到所述平衡二叉樹節(jié)點(diǎn)中,所述節(jié)點(diǎn)在平衡二叉樹中的位置依據(jù)排序規(guī)則,所述排序規(guī)則以所述數(shù)據(jù)項(xiàng)對(duì)應(yīng)的時(shí)間戳和計(jì)數(shù)器的值為參數(shù);步驟3,按用戶需求遍歷所述平衡二叉樹,輸出Top-k項(xiàng)的統(tǒng)計(jì)結(jié)果。本發(fā)明能夠降低了最差處理時(shí)間,降低了存儲(chǔ)空間,提高了挖掘的準(zhǔn)確性。
文檔編號(hào)G06F17/30GK101419630SQ200810239188
公開日2009年4月29日 申請(qǐng)日期2008年12月11日 優(yōu)先權(quán)日2008年12月11日
發(fā)明者云曉春, 吳志剛, 張永錚, 浩 羅, 郝志宇, 莉 郭 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所