基于赫夫曼树的服务器端移动widget管理及查找方法

文档序号:7760629阅读:281来源:国知局
专利名称:基于赫夫曼树的服务器端移动widget管理及查找方法
技术领域
本发明涉及移动widget技术领域,特别涉及一种基于赫夫曼树的服务器端移动 widget的管理方法。
背景技术
Widget是一小块可以在任意一个基于HTML的Web页面上执行的代码,它的表现形 式可能是视频,地图,新闻,小游戏等。最初源于苹果电脑的一个插件工具一Konfabulator, 现在已经扩展到各种桌面操作系统和手机操作系统上。手机中的移动互联网应用目前主要 是手机客户端应用。经过几年的发展,出现了一定数量的手机客户端应用,包括手机游戏、 电子书、手机杂志、手机地图、手机邮箱等,这些应用得到了手机用户一定程度的欢迎。但是,对于手机客户端应用来说,目前主要问题有三个第一,手机适配问题,几乎 每一款客户端应用都面临对不同手机的适配工作量,导致第三方开发公司无法将精力完全 倾注于多样性应用创新,往往是一款应用打天下;第二,不支持动态应用下载等技术问题, 导致手机用户获取应用的直接渠道缺失;第三,存在客户端应用开发的门槛,无法实现大众 参与。这些都导致手机客户端应用无法实现本质上数量和质量的激增,无法满足用户个性 化的手机内容应用需求。Widget这种小应用形式对于手机终端这种比较有局限的硬件条件下,通过表现形 式不一及功能不一,为现今越来越多的追求个性化手机要求的用户的一个很好的选择。目 前主流的Widget包括Yahoo Widget、Google gadgetsAppledashboard Widget禾口Facebook Widget 等。Widget作为一种特殊的“网页”正在改变着互联网的访问方式,用户访问网络不 再需要依赖于浏览器,而是靠这些小工具就可以实现web功能。Widget还向用户提供了全 新的用户体验。通过Widget用户可以定制实现自己所需要的各种服务,随意个性化自己的 桌面,体验它又小又酷的风格。widget具有身材小、形式多、功能大、姿容丽、个性化、制作 容易等众多的优点,用户可以通过因特网从服务器端下载各式各样的widget。随着widget 需求的增长以及所蕴含着巨大的商机和潜力,参与widget制作的人员越来越多,世界上无 时无刻不断有新的功能的widget推出,最容易推广widget的方法是把制作好的widget放 在服务器上提供用户下载,于是就造成了这样一个困境,不断增多的widget和服务器端对 widget的有限管理能力之间的冲突。现有的移动widget服务器端管理的方法比较多,通常的方法有随机给新加入的 widget分配ID和根据先来先分配的原则给widget分配ID。这类方法容易造成服务器端 管理的混乱,根据ID不能得到widget的任何信息。

发明内容
为了使服务器端能够高效地管理越来越多的widget资源,保证用户准确快速 的找到最受欢迎的widget,本发明的目的在于提供一种基于赫夫曼树的服务器端移动
3widget管理方法。赫夫曼编码是1952年由数学家D. A.赫夫曼首先提出的一种无失真变长度的信源 编码。赫夫曼树,即最优二叉树,是一类带权路径长度最短的树。赫夫曼树可以得到最优的 判定算法,经过赫夫曼树编码管理的widget,可以经过比较少的比较次数提供用户查询的 结果,从而缩短用户查找的时间。本发明就是利用赫夫曼树管理服务器端的移动widget。本发明解决技术问题所采用的技术方案是提出一种基于赫夫曼树的服务器端移动widget管理方法,它通过构建赫夫曼树 对服务器端的移动widget进行管理,在构建赫夫曼树前,先提取widget的下载频率作为每 个widget的权值,将服务器端的widget根据赫夫曼树算法构建赫夫曼树,并规定赫夫曼树 中每层左孩子权值比右孩子权值小,节点所在层数越低,其权值越小。所述赫夫曼树的构建步骤如下①假设服务器端widget的集合W = {Wl,w2,W3......wn};②选择两个权值最小的widget =Wi和Wj,权值相加生成一个父亲节点加入到W中, 同时删除W中的Wi、%,将Wi和%两个孩子节点和该父亲节点一起构建赫夫曼树,权值小的 孩子节点位于左边,权值大的孩子节点位于右边;③继续在新的W中进行第二步,直到所有节点从W中移除。如果服务器中新加入了一个widget,将其插入到赫夫曼树中,具体步骤如下①将新加入的widget的权值置为零;②权值为零的新节点和原赫夫曼树中最底层最左边的节点即原赫夫曼树中权值 最小的节点,构成一对孩子节点,同时生成父亲节点;③将新生成的父亲节点及其孩子节点插入到原赫夫曼树的最底层最左边的节点 处。如果服务器端撤销了一个widget,从赫夫曼树中删除这个widget,具体步骤如 下①根据赫夫曼编码找到赫夫曼树中的该widget节点Wi ;②将该widget节点Wi的兄弟节点上移至节点Wi的父亲节点处;③删除该widget节点Wi及其父亲节点。本发明还提出一种对基于赫夫曼树的服务器端移动widget的查找方法,其特征 在于,根据上述基于赫夫曼树的服务器端的移动widget管理方法,赫夫曼树构建好后,每 个移动widget会分到一个赫夫曼编码的ID,按照如下步骤对所述的移动widget进行查 找①服务器端接收客户端的查询请求;②如果是模糊查询,服务器端就根据widget的ID的长短和值大小,把widget按 下载频率从高到低的顺序排列发送到客户端的查询界面上;③如果是精确查询,服务器端就从赫夫曼树的最顶端开始从上到下,从右到左比 较叶子节点和用户查询的widget的关键字,把最终的查询结果发送到客户端的查询界面 上。本发明具有的有益效果是首先,赫夫曼树的构建,给出了服务器端对widget的 管理方法;其次,提出对新插入widget的管理,给出了最优的widget插入赫夫曼树的方法,能够花最小的代价生成新赫夫曼树;再次,widget的删除,保证了赫夫曼树的widget的有 效性和真实性,同时也最小化重新构建了 widget的赫夫曼树。另外,提出的对基于赫夫曼树的服务器端移动widget的查找方法,能大大减少搜 索到结果的时间,提高移动用户的查找效率,给了用户更好地体验。


图1是本发明实施例的总体流程图;图2是本发明的赫夫曼树构建实施例的示意图。
具体实施例方式如图1所示,本实施例的基于赫夫曼树的服务器端移动widget管理方法,包括如 下流程1)赫夫曼树的构建因为随着用户下载移动widget行为的发生,每个widget的下载频率会改变。为 确保最受欢迎的widget能够得到最短的ID编码,有必要每隔一个时间周期如48小时重新 构建一次赫夫曼树。在构建赫夫曼树前,先提取widget的下载频率作为每个widget的权值,其方法是 在服务器端设置一个查找表,用于记录每个widget的下载频率,确定构建赫夫曼树的每个 widget的权值只需从查找表中查找每个widget的下载频率,根据赫夫曼树算法构建赫夫 曼树。具体步骤如下①假设服务器端widget的集合W = {wi;w2,w3……wn},并规定赫夫曼树中左孩子 权值比右孩子权值小;②选择两个权值最小的widget =Wi和Wj (i,j为自然数,且i兴j),Wi和Wj权值相 加生成一个父亲节点加入到W中,同时删除W中的Wi、% ;并将Wi和Wi这两个孩子节点和其 父亲节点一起构建赫夫曼树;③继续在新的W中进行步骤②,直到所有节点从W中移除;以下是赫夫曼树的数据结构及算法描述
5typedef struct /int weight;/*假设叶子权值为整型 int lchild, rchild,parent ; Λ左孩子,右孩子,父亲节点*/ } Htnode ; /*赫夫曼树结点类型*/typedef struct ι1 char水code ; /水㈱石马水/ int length;/*编码的长度*/ lCodeType;/*叶子节点编码类型void Selectsort(Htnode huftree[], int n, int *sl, /*求节点中两个最小的数*/ /*树 huftree [],节点个数 η,数*sl, *s2*/int *s2)void Hufcoding(Htnode huftree[], int w[], int n) /*功能构造一棵赫夫曼树*/ /*传入参数树huftree [],节点个数η,节点数组w [] */void HuftreeCode(Htnode huftree[], CodeType cd[], /*功能求赫夫曼树中各个节点的编码*/ /*传入参数树huftree [],节点个数η,编码数组cd [] */int η)图2是赫夫曼树构建的一个实例,在该实例中,假设有①-④四个移动widget, 每个移动widget的下载频率即权值如图所示,每次挑选两个权值最小的移动widget生 成一个父亲节点,其权值相加作为该父亲节点的权值,首先,挑选权值最小的两个移动 widget③和①,③的权值小于①,所以③在①的左边;其次,③和①的父亲节点权值为60, ④的权值为70,所以③和①的父亲节点与④又构成它们的父亲节点;依此构建成赫夫曼 树。赫夫曼树构建好后,一个节点左边的边值为0,右边的边值为1,从树的顶点从上往下给 每个叶子节点编码,如①的赫夫曼编码ID是001 ;2)如果服务器中新加入了一个widget,要将其插入到赫夫曼树中,具体步骤及方 法如下①因为新加入的widget下载频率为零,所以将新加入的widget的权值置为零;②权值为零的新节点和原赫夫曼树中最底层最左边的节点,即原赫夫曼树中权值 最小节点,构成一对孩子节点,同时生成父亲节点;③将新生成的父亲节点及其孩子节点插入到原赫夫曼树的最底层最左边的节点 处;3) widget 的删除
如果服务器端撤销了一个widget,需要从赫夫曼树中删除这个widget,具体步骤 及方法如下①根据赫夫曼编码找到赫夫曼树中的该节点Wi ;②将该widget节点Wi的兄弟节点上移至该widget节点Wi的父亲节点处;③删除该widget节点Wi及其父亲节点;4) widget 的查找赫夫曼树构建好后,每个widget会分到一个赫夫曼编码的ID,ID越短的widget 下载频率越高,如果ID长度相同,ID值越大的widget下载频率越高,用户所查询的widget 通常都是受欢迎程度较高的widget,基于这一条件,服务器端的具体执行步骤如下①接收客户端的查询请求;②如果是模糊查询(即用户不查询具体的某个widget),服务器端就根据widget 的ID的长短和值大小,把widget按下载频率从高到低的顺序排列发送到客户端的查询界 面上;③如果是精确查询(即用户查询某个具体的widget),服务器端就从赫夫曼树的 最顶端开始从上到到下,从右到左比较叶子节点和用户查询的widget的关键字,如widget 名称、widget用途等,把最终的查询结果发送到客户端的查询界面上。
权利要求
一种基于赫夫曼树的服务器端移动widget管理方法,通过构建赫夫曼树对服务器端的移动widget进行管理,其特征在于在构建赫夫曼树前,先提取widget的下载频率作为每个widget的权值,将服务器端的widget根据赫夫曼树算法构建赫夫曼树,并规定赫夫曼树中每层左孩子权值比右孩子权值小,节点所在层数越低,其权值越小。
2.如权利要求1所述的基于赫夫曼树的服务器端移动widget管理方法,其特征在于所 述赫夫曼树的构建步骤如下①假设服务器端widget的集合W= {Wl,w2,W3......wj ;②选择两个权值最小的widget=Wi和%,权值相加生成一个父亲节点加入到W中,同时 删除W中的Wi、%,将Wi和 两个孩子节点和该父亲节点一起构建赫夫曼树,权值小的孩子 节点位于左边,权值大的孩子节点位于右边;③继续在新的W中进行第二步,直到所有节点从W中移除。
3.如权利要求1所述的基于赫夫曼树的服务器端移动widget管理方法,其特征在于 如果服务器中新加入了一个widget,将其插入到赫夫曼树中,具体步骤如下①将新加入的widget的权值置为零;②权值为零的新节点和原赫夫曼树中最底层最左边的节点,构成一对孩子节点,同时 生成父亲节点;③将新生成的父亲节点及其孩子节点插入到原赫夫曼树的最底层最左边的节点处。
4.如权利要求1所述的基于赫夫曼树的服务器端移动widget管理方法,其特征在于 如果服务器端撤销了一个widget,从赫夫曼树中删除这个widget,具体步骤如下①根据赫夫曼编码找到赫夫曼树中的该widget节点Wi;②将该widget节点Wi的兄弟节点移至节点Wi的父亲节点处;③删除该widget节点Wi及其父亲节点。
5.根据权利要求1所述的基于赫夫曼树的服务器端移动widget管理方法,其特征在 于每隔一个时间周期对服务器端的widget重新构建一次赫夫曼树。
6.一种对基于赫夫曼树的服务器端移动widget的查找方法,其特征在于根据权利要 求1-5任一项所述的基于赫夫曼树的服务器端的移动widget管理方法,赫夫曼树构建好 后,每个移动widget会分到一个赫夫曼编码的ID,按照如下步骤对所述的移动widget进行 查找①服务器端接收客户端的查询请求;②如果是模糊查询,服务器端就根据widget的ID的长短和值大小,把widget按下载 频率从高到低的顺序排列发送到客户端的查询界面上;③如果是精确查询,服务器端就从赫夫曼树的最顶端开始从上到下,从右到左比较叶 子节点和用户查询的widget的关键字,把最终的查询结果发送到客户端的查询界面上。
7.根据权利要求6所述的对基于赫夫曼树的服务器端移动widget的查找方法,其特 征在于所述模糊查询中,ID越短的widget下载频率越高,如果ID长度相同,ID值越大的 widget下载频率越高。
全文摘要
本发明公开了一种基于赫夫曼树的服务器端移动widget管理方法,通过构建赫夫曼树对服务器端的移动widget进行管理,在构建赫夫曼树前,先提取widget的下载频率作为每个widget的权值,根据赫夫曼树算法构建赫夫曼树,并规定赫夫曼树中左孩子权值比右孩子权值小,节点所在层数越低,其权值越小。本发明提高了服务器端管理移动widget的效率,提高移动用户检索widget的速度。
文档编号H04L29/08GK101969457SQ20101029058
公开日2011年2月9日 申请日期2010年9月25日 优先权日2010年9月25日
发明者吴明晖, 张少斌, 楼学庆, 陈天洲, 颜晖 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1