專利名稱:基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget管理及查找方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動(dòng)widget技術(shù)領(lǐng)域,特別涉及一種基于赫夫曼樹(shù)的服務(wù)器端移動(dòng) widget的管理方法。
背景技術(shù):
Widget是一小塊可以在任意一個(gè)基于HTML的Web頁(yè)面上執(zhí)行的代碼,它的表現(xiàn)形 式可能是視頻,地圖,新聞,小游戲等。最初源于蘋果電腦的一個(gè)插件工具一Konfabulator, 現(xiàn)在已經(jīng)擴(kuò)展到各種桌面操作系統(tǒng)和手機(jī)操作系統(tǒng)上。手機(jī)中的移動(dòng)互聯(lián)網(wǎng)應(yīng)用目前主要 是手機(jī)客戶端應(yīng)用。經(jīng)過(guò)幾年的發(fā)展,出現(xiàn)了一定數(shù)量的手機(jī)客戶端應(yīng)用,包括手機(jī)游戲、 電子書、手機(jī)雜志、手機(jī)地圖、手機(jī)郵箱等,這些應(yīng)用得到了手機(jī)用戶一定程度的歡迎。但是,對(duì)于手機(jī)客戶端應(yīng)用來(lái)說(shuō),目前主要問(wèn)題有三個(gè)第一,手機(jī)適配問(wèn)題,幾乎 每一款客戶端應(yīng)用都面臨對(duì)不同手機(jī)的適配工作量,導(dǎo)致第三方開(kāi)發(fā)公司無(wú)法將精力完全 傾注于多樣性應(yīng)用創(chuàng)新,往往是一款應(yīng)用打天下;第二,不支持動(dòng)態(tài)應(yīng)用下載等技術(shù)問(wèn)題, 導(dǎo)致手機(jī)用戶獲取應(yīng)用的直接渠道缺失;第三,存在客戶端應(yīng)用開(kāi)發(fā)的門檻,無(wú)法實(shí)現(xiàn)大眾 參與。這些都導(dǎo)致手機(jī)客戶端應(yīng)用無(wú)法實(shí)現(xiàn)本質(zhì)上數(shù)量和質(zhì)量的激增,無(wú)法滿足用戶個(gè)性 化的手機(jī)內(nèi)容應(yīng)用需求。Widget這種小應(yīng)用形式對(duì)于手機(jī)終端這種比較有局限的硬件條件下,通過(guò)表現(xiàn)形 式不一及功能不一,為現(xiàn)今越來(lái)越多的追求個(gè)性化手機(jī)要求的用戶的一個(gè)很好的選擇。目 前主流的Widget包括Yahoo Widget、Google gadgetsAppledashboard Widget禾口Facebook Widget 等。Widget作為一種特殊的“網(wǎng)頁(yè)”正在改變著互聯(lián)網(wǎng)的訪問(wèn)方式,用戶訪問(wèn)網(wǎng)絡(luò)不 再需要依賴于瀏覽器,而是靠這些小工具就可以實(shí)現(xiàn)web功能。Widget還向用戶提供了全 新的用戶體驗(yàn)。通過(guò)Widget用戶可以定制實(shí)現(xiàn)自己所需要的各種服務(wù),隨意個(gè)性化自己的 桌面,體驗(yàn)它又小又酷的風(fēng)格。widget具有身材小、形式多、功能大、姿容麗、個(gè)性化、制作 容易等眾多的優(yōu)點(diǎn),用戶可以通過(guò)因特網(wǎng)從服務(wù)器端下載各式各樣的widget。隨著widget 需求的增長(zhǎng)以及所蘊(yùn)含著巨大的商機(jī)和潛力,參與widget制作的人員越來(lái)越多,世界上無(wú) 時(shí)無(wú)刻不斷有新的功能的widget推出,最容易推廣widget的方法是把制作好的widget放 在服務(wù)器上提供用戶下載,于是就造成了這樣一個(gè)困境,不斷增多的widget和服務(wù)器端對(duì) widget的有限管理能力之間的沖突。現(xiàn)有的移動(dòng)widget服務(wù)器端管理的方法比較多,通常的方法有隨機(jī)給新加入的 widget分配ID和根據(jù)先來(lái)先分配的原則給widget分配ID。這類方法容易造成服務(wù)器端 管理的混亂,根據(jù)ID不能得到widget的任何信息。
發(fā)明內(nèi)容
為了使服務(wù)器端能夠高效地管理越來(lái)越多的widget資源,保證用戶準(zhǔn)確快速 的找到最受歡迎的widget,本發(fā)明的目的在于提供一種基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)
3widget管理方法。赫夫曼編碼是1952年由數(shù)學(xué)家D. A.赫夫曼首先提出的一種無(wú)失真變長(zhǎng)度的信源 編碼。赫夫曼樹(shù),即最優(yōu)二叉樹(shù),是一類帶權(quán)路徑長(zhǎng)度最短的樹(shù)。赫夫曼樹(shù)可以得到最優(yōu)的 判定算法,經(jīng)過(guò)赫夫曼樹(shù)編碼管理的widget,可以經(jīng)過(guò)比較少的比較次數(shù)提供用戶查詢的 結(jié)果,從而縮短用戶查找的時(shí)間。本發(fā)明就是利用赫夫曼樹(shù)管理服務(wù)器端的移動(dòng)widget。本發(fā)明解決技術(shù)問(wèn)題所采用的技術(shù)方案是提出一種基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget管理方法,它通過(guò)構(gòu)建赫夫曼樹(shù) 對(duì)服務(wù)器端的移動(dòng)widget進(jìn)行管理,在構(gòu)建赫夫曼樹(shù)前,先提取widget的下載頻率作為每 個(gè)widget的權(quán)值,將服務(wù)器端的widget根據(jù)赫夫曼樹(shù)算法構(gòu)建赫夫曼樹(shù),并規(guī)定赫夫曼樹(shù) 中每層左孩子權(quán)值比右孩子權(quán)值小,節(jié)點(diǎn)所在層數(shù)越低,其權(quán)值越小。所述赫夫曼樹(shù)的構(gòu)建步驟如下①假設(shè)服務(wù)器端widget的集合W = {Wl,w2,W3......wn};②選擇兩個(gè)權(quán)值最小的widget =Wi和Wj,權(quán)值相加生成一個(gè)父親節(jié)點(diǎn)加入到W中, 同時(shí)刪除W中的Wi、%,將Wi和%兩個(gè)孩子節(jié)點(diǎn)和該父親節(jié)點(diǎn)一起構(gòu)建赫夫曼樹(shù),權(quán)值小的 孩子節(jié)點(diǎn)位于左邊,權(quán)值大的孩子節(jié)點(diǎn)位于右邊;③繼續(xù)在新的W中進(jìn)行第二步,直到所有節(jié)點(diǎn)從W中移除。如果服務(wù)器中新加入了一個(gè)widget,將其插入到赫夫曼樹(shù)中,具體步驟如下①將新加入的widget的權(quán)值置為零;②權(quán)值為零的新節(jié)點(diǎn)和原赫夫曼樹(shù)中最底層最左邊的節(jié)點(diǎn)即原赫夫曼樹(shù)中權(quán)值 最小的節(jié)點(diǎn),構(gòu)成一對(duì)孩子節(jié)點(diǎn),同時(shí)生成父親節(jié)點(diǎn);③將新生成的父親節(jié)點(diǎn)及其孩子節(jié)點(diǎn)插入到原赫夫曼樹(shù)的最底層最左邊的節(jié)點(diǎn) 處。如果服務(wù)器端撤銷了一個(gè)widget,從赫夫曼樹(shù)中刪除這個(gè)widget,具體步驟如 下①根據(jù)赫夫曼編碼找到赫夫曼樹(shù)中的該widget節(jié)點(diǎn)Wi ;②將該widget節(jié)點(diǎn)Wi的兄弟節(jié)點(diǎn)上移至節(jié)點(diǎn)Wi的父親節(jié)點(diǎn)處;③刪除該widget節(jié)點(diǎn)Wi及其父親節(jié)點(diǎn)。本發(fā)明還提出一種對(duì)基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget的查找方法,其特征 在于,根據(jù)上述基于赫夫曼樹(shù)的服務(wù)器端的移動(dòng)widget管理方法,赫夫曼樹(shù)構(gòu)建好后,每 個(gè)移動(dòng)widget會(huì)分到一個(gè)赫夫曼編碼的ID,按照如下步驟對(duì)所述的移動(dòng)widget進(jìn)行查 找①服務(wù)器端接收客戶端的查詢請(qǐng)求;②如果是模糊查詢,服務(wù)器端就根據(jù)widget的ID的長(zhǎng)短和值大小,把widget按 下載頻率從高到低的順序排列發(fā)送到客戶端的查詢界面上;③如果是精確查詢,服務(wù)器端就從赫夫曼樹(shù)的最頂端開(kāi)始從上到下,從右到左比 較葉子節(jié)點(diǎn)和用戶查詢的widget的關(guān)鍵字,把最終的查詢結(jié)果發(fā)送到客戶端的查詢界面 上。本發(fā)明具有的有益效果是首先,赫夫曼樹(shù)的構(gòu)建,給出了服務(wù)器端對(duì)widget的 管理方法;其次,提出對(duì)新插入widget的管理,給出了最優(yōu)的widget插入赫夫曼樹(shù)的方法,能夠花最小的代價(jià)生成新赫夫曼樹(shù);再次,widget的刪除,保證了赫夫曼樹(shù)的widget的有 效性和真實(shí)性,同時(shí)也最小化重新構(gòu)建了 widget的赫夫曼樹(shù)。另外,提出的對(duì)基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget的查找方法,能大大減少搜 索到結(jié)果的時(shí)間,提高移動(dòng)用戶的查找效率,給了用戶更好地體驗(yàn)。
圖1是本發(fā)明實(shí)施例的總體流程圖;圖2是本發(fā)明的赫夫曼樹(shù)構(gòu)建實(shí)施例的示意圖。
具體實(shí)施例方式如圖1所示,本實(shí)施例的基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget管理方法,包括如 下流程1)赫夫曼樹(shù)的構(gòu)建因?yàn)殡S著用戶下載移動(dòng)widget行為的發(fā)生,每個(gè)widget的下載頻率會(huì)改變。為 確保最受歡迎的widget能夠得到最短的ID編碼,有必要每隔一個(gè)時(shí)間周期如48小時(shí)重新 構(gòu)建一次赫夫曼樹(shù)。在構(gòu)建赫夫曼樹(shù)前,先提取widget的下載頻率作為每個(gè)widget的權(quán)值,其方法是 在服務(wù)器端設(shè)置一個(gè)查找表,用于記錄每個(gè)widget的下載頻率,確定構(gòu)建赫夫曼樹(shù)的每個(gè) widget的權(quán)值只需從查找表中查找每個(gè)widget的下載頻率,根據(jù)赫夫曼樹(shù)算法構(gòu)建赫夫 曼樹(shù)。具體步驟如下①假設(shè)服務(wù)器端widget的集合W = {wi;w2,w3……wn},并規(guī)定赫夫曼樹(shù)中左孩子 權(quán)值比右孩子權(quán)值??;②選擇兩個(gè)權(quán)值最小的widget =Wi和Wj (i,j為自然數(shù),且i興j),Wi和Wj權(quán)值相 加生成一個(gè)父親節(jié)點(diǎn)加入到W中,同時(shí)刪除W中的Wi、% ;并將Wi和Wi這兩個(gè)孩子節(jié)點(diǎn)和其 父親節(jié)點(diǎn)一起構(gòu)建赫夫曼樹(shù);③繼續(xù)在新的W中進(jìn)行步驟②,直到所有節(jié)點(diǎn)從W中移除;以下是赫夫曼樹(shù)的數(shù)據(jù)結(jié)構(gòu)及算法描述
5typedef struct /int weight;/*假設(shè)葉子權(quán)值為整型 int lchild, rchild,parent ; Λ左孩子,右孩子,父親節(jié)點(diǎn)*/ } Htnode ; /*赫夫曼樹(shù)結(jié)點(diǎn)類型*/typedef struct ι1 char水code ; /水㈱石馬水/ int length;/*編碼的長(zhǎng)度*/ lCodeType;/*葉子節(jié)點(diǎn)編碼類型void Selectsort(Htnode huftree[], int n, int *sl, /*求節(jié)點(diǎn)中兩個(gè)最小的數(shù)*/ /*樹(shù) huftree [],節(jié)點(diǎn)個(gè)數(shù) η,數(shù)*sl, *s2*/int *s2)void Hufcoding(Htnode huftree[], int w[], int n) /*功能構(gòu)造一棵赫夫曼樹(shù)*/ /*傳入?yún)?shù)樹(shù)huftree [],節(jié)點(diǎn)個(gè)數(shù)η,節(jié)點(diǎn)數(shù)組w [] */void HuftreeCode(Htnode huftree[], CodeType cd[], /*功能求赫夫曼樹(shù)中各個(gè)節(jié)點(diǎn)的編碼*/ /*傳入?yún)?shù)樹(shù)huftree [],節(jié)點(diǎn)個(gè)數(shù)η,編碼數(shù)組cd [] */int η)圖2是赫夫曼樹(shù)構(gòu)建的一個(gè)實(shí)例,在該實(shí)例中,假設(shè)有①-④四個(gè)移動(dòng)widget, 每個(gè)移動(dòng)widget的下載頻率即權(quán)值如圖所示,每次挑選兩個(gè)權(quán)值最小的移動(dòng)widget生 成一個(gè)父親節(jié)點(diǎn),其權(quán)值相加作為該父親節(jié)點(diǎn)的權(quán)值,首先,挑選權(quán)值最小的兩個(gè)移動(dòng) widget③和①,③的權(quán)值小于①,所以③在①的左邊;其次,③和①的父親節(jié)點(diǎn)權(quán)值為60, ④的權(quán)值為70,所以③和①的父親節(jié)點(diǎn)與④又構(gòu)成它們的父親節(jié)點(diǎn);依此構(gòu)建成赫夫曼 樹(shù)。赫夫曼樹(shù)構(gòu)建好后,一個(gè)節(jié)點(diǎn)左邊的邊值為0,右邊的邊值為1,從樹(shù)的頂點(diǎn)從上往下給 每個(gè)葉子節(jié)點(diǎn)編碼,如①的赫夫曼編碼ID是001 ;2)如果服務(wù)器中新加入了一個(gè)widget,要將其插入到赫夫曼樹(shù)中,具體步驟及方 法如下①因?yàn)樾录尤氲膚idget下載頻率為零,所以將新加入的widget的權(quán)值置為零;②權(quán)值為零的新節(jié)點(diǎn)和原赫夫曼樹(shù)中最底層最左邊的節(jié)點(diǎn),即原赫夫曼樹(shù)中權(quán)值 最小節(jié)點(diǎn),構(gòu)成一對(duì)孩子節(jié)點(diǎn),同時(shí)生成父親節(jié)點(diǎn);③將新生成的父親節(jié)點(diǎn)及其孩子節(jié)點(diǎn)插入到原赫夫曼樹(shù)的最底層最左邊的節(jié)點(diǎn) 處;3) widget 的刪除
如果服務(wù)器端撤銷了一個(gè)widget,需要從赫夫曼樹(shù)中刪除這個(gè)widget,具體步驟 及方法如下①根據(jù)赫夫曼編碼找到赫夫曼樹(shù)中的該節(jié)點(diǎn)Wi ;②將該widget節(jié)點(diǎn)Wi的兄弟節(jié)點(diǎn)上移至該widget節(jié)點(diǎn)Wi的父親節(jié)點(diǎn)處;③刪除該widget節(jié)點(diǎn)Wi及其父親節(jié)點(diǎn);4) widget 的查找赫夫曼樹(shù)構(gòu)建好后,每個(gè)widget會(huì)分到一個(gè)赫夫曼編碼的ID,ID越短的widget 下載頻率越高,如果ID長(zhǎng)度相同,ID值越大的widget下載頻率越高,用戶所查詢的widget 通常都是受歡迎程度較高的widget,基于這一條件,服務(wù)器端的具體執(zhí)行步驟如下①接收客戶端的查詢請(qǐng)求;②如果是模糊查詢(即用戶不查詢具體的某個(gè)widget),服務(wù)器端就根據(jù)widget 的ID的長(zhǎng)短和值大小,把widget按下載頻率從高到低的順序排列發(fā)送到客戶端的查詢界 面上;③如果是精確查詢(即用戶查詢某個(gè)具體的widget),服務(wù)器端就從赫夫曼樹(shù)的 最頂端開(kāi)始從上到到下,從右到左比較葉子節(jié)點(diǎn)和用戶查詢的widget的關(guān)鍵字,如widget 名稱、widget用途等,把最終的查詢結(jié)果發(fā)送到客戶端的查詢界面上。
權(quán)利要求
一種基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget管理方法,通過(guò)構(gòu)建赫夫曼樹(shù)對(duì)服務(wù)器端的移動(dòng)widget進(jìn)行管理,其特征在于在構(gòu)建赫夫曼樹(shù)前,先提取widget的下載頻率作為每個(gè)widget的權(quán)值,將服務(wù)器端的widget根據(jù)赫夫曼樹(shù)算法構(gòu)建赫夫曼樹(shù),并規(guī)定赫夫曼樹(shù)中每層左孩子權(quán)值比右孩子權(quán)值小,節(jié)點(diǎn)所在層數(shù)越低,其權(quán)值越小。
2.如權(quán)利要求1所述的基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget管理方法,其特征在于所 述赫夫曼樹(shù)的構(gòu)建步驟如下①假設(shè)服務(wù)器端widget的集合W= {Wl,w2,W3......wj ;②選擇兩個(gè)權(quán)值最小的widget=Wi和%,權(quán)值相加生成一個(gè)父親節(jié)點(diǎn)加入到W中,同時(shí) 刪除W中的Wi、%,將Wi和 兩個(gè)孩子節(jié)點(diǎn)和該父親節(jié)點(diǎn)一起構(gòu)建赫夫曼樹(shù),權(quán)值小的孩子 節(jié)點(diǎn)位于左邊,權(quán)值大的孩子節(jié)點(diǎn)位于右邊;③繼續(xù)在新的W中進(jìn)行第二步,直到所有節(jié)點(diǎn)從W中移除。
3.如權(quán)利要求1所述的基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget管理方法,其特征在于 如果服務(wù)器中新加入了一個(gè)widget,將其插入到赫夫曼樹(shù)中,具體步驟如下①將新加入的widget的權(quán)值置為零;②權(quán)值為零的新節(jié)點(diǎn)和原赫夫曼樹(shù)中最底層最左邊的節(jié)點(diǎn),構(gòu)成一對(duì)孩子節(jié)點(diǎn),同時(shí) 生成父親節(jié)點(diǎn);③將新生成的父親節(jié)點(diǎn)及其孩子節(jié)點(diǎn)插入到原赫夫曼樹(shù)的最底層最左邊的節(jié)點(diǎn)處。
4.如權(quán)利要求1所述的基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget管理方法,其特征在于 如果服務(wù)器端撤銷了一個(gè)widget,從赫夫曼樹(shù)中刪除這個(gè)widget,具體步驟如下①根據(jù)赫夫曼編碼找到赫夫曼樹(shù)中的該widget節(jié)點(diǎn)Wi;②將該widget節(jié)點(diǎn)Wi的兄弟節(jié)點(diǎn)移至節(jié)點(diǎn)Wi的父親節(jié)點(diǎn)處;③刪除該widget節(jié)點(diǎn)Wi及其父親節(jié)點(diǎn)。
5.根據(jù)權(quán)利要求1所述的基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget管理方法,其特征在 于每隔一個(gè)時(shí)間周期對(duì)服務(wù)器端的widget重新構(gòu)建一次赫夫曼樹(shù)。
6.一種對(duì)基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget的查找方法,其特征在于根據(jù)權(quán)利要 求1-5任一項(xiàng)所述的基于赫夫曼樹(shù)的服務(wù)器端的移動(dòng)widget管理方法,赫夫曼樹(shù)構(gòu)建好 后,每個(gè)移動(dòng)widget會(huì)分到一個(gè)赫夫曼編碼的ID,按照如下步驟對(duì)所述的移動(dòng)widget進(jìn)行 查找①服務(wù)器端接收客戶端的查詢請(qǐng)求;②如果是模糊查詢,服務(wù)器端就根據(jù)widget的ID的長(zhǎng)短和值大小,把widget按下載 頻率從高到低的順序排列發(fā)送到客戶端的查詢界面上;③如果是精確查詢,服務(wù)器端就從赫夫曼樹(shù)的最頂端開(kāi)始從上到下,從右到左比較葉 子節(jié)點(diǎn)和用戶查詢的widget的關(guān)鍵字,把最終的查詢結(jié)果發(fā)送到客戶端的查詢界面上。
7.根據(jù)權(quán)利要求6所述的對(duì)基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget的查找方法,其特 征在于所述模糊查詢中,ID越短的widget下載頻率越高,如果ID長(zhǎng)度相同,ID值越大的 widget下載頻率越高。
全文摘要
本發(fā)明公開(kāi)了一種基于赫夫曼樹(shù)的服務(wù)器端移動(dòng)widget管理方法,通過(guò)構(gòu)建赫夫曼樹(shù)對(duì)服務(wù)器端的移動(dòng)widget進(jìn)行管理,在構(gòu)建赫夫曼樹(shù)前,先提取widget的下載頻率作為每個(gè)widget的權(quán)值,根據(jù)赫夫曼樹(shù)算法構(gòu)建赫夫曼樹(shù),并規(guī)定赫夫曼樹(shù)中左孩子權(quán)值比右孩子權(quán)值小,節(jié)點(diǎn)所在層數(shù)越低,其權(quán)值越小。本發(fā)明提高了服務(wù)器端管理移動(dòng)widget的效率,提高移動(dòng)用戶檢索widget的速度。
文檔編號(hào)H04L29/08GK101969457SQ20101029058
公開(kāi)日2011年2月9日 申請(qǐng)日期2010年9月25日 優(yōu)先權(quán)日2010年9月25日
發(fā)明者吳明暉, 張少斌, 樓學(xué)慶, 陳天洲, 顏暉 申請(qǐng)人:浙江大學(xué)