[发明专利]一种基于树的高效集合运算系统有效

专利信息
申请号: 202110926100.7 申请日: 2021-08-12
公开(公告)号: CN113779319B 公开(公告)日: 2023-09-19
发明(设计)人: 王一乐 申请(专利权)人: 河海大学
主分类号: G06F16/901 分类号: G06F16/901;G06F16/903
代理公司: 北京国坤专利代理事务所(普通合伙) 11491 代理人: 赵红霞
地址: 213022 江苏省常州市*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 高效 集合 运算 系统
【权利要求书】:

1.一种基于树的高效集合运算系统,其特征在于:包括

底层算法模块,用于实现该运算系统功能涉及的基本数据结构,且其包括

AVLTree,AVL二叉平衡树的数据结构的具体实现;

Set,其包括基于AVL二叉平衡树设计的高效集合的AVLSet以及基于顺序存储的逻辑树结构UFSet;

Orthogonal List,用于实现基于十字链表的有向图结构;

HashMap,实现哈希表功能,用于实现图中节点信息快速查找;

实际应用模块,用于将底层算法模块中的函数进行封装,其包括以下步骤

一、读取数据集并建立有向图;

二、建立哈希表;

三、读取某两个节点出度节点合集,所读取的节点为:共同好友,出度节点合集;二度好友,出度节点合集;熟悉度,出度节点交集元素个数或出度节点并集元素个数;朋友圈划分,出度节点并查集;

可视化模块,通过调用easyx开源库实现可视化展示程序运行结果。

2.根据权利要求1所述的一种基于树的高效集合运算系统,其特征在于:与所述AVLTree配套的操作有树的初始化AVLTree_init、创建AVLTree_create、销毁AVLTree_destroy、调整AVLTurn、查找AVLTree_search、插入AVLTree_insert、删除AVLTree_delete以及遍历AVLTree_traverse;

且AVLTree的数据结构代码为:

3.根据权利要求1所述的一种基于树的高效集合运算系统,其特征在于:与所述Set的AVLSet配套的操作有初始化AVLSet_init、创建AVLSet_create、销毁AVLSet_destroy、交集Intersection、并集Union、补集Supplement以及差集Differance;

且AVLSet的数据结构代码为:

4.根据权利要求1所述的一种基于树的高效集合运算系统,其特征在于:所述Set的UFSet用于集合的划分,将一个大的集合按一定的标准划分为几个互不相交的子集,且这几个子集包含原有集合的所有元素,其操作有:Find:查找给定结点的根节点;Merge:合并两个同质结点;

且UFSet的数据结构代码为:

5.根据权利要求1所述的一种基于树的高效集合运算系统,其特征在于:所述Orthogonal List的操作包括:Create:根据数据集中节点和边的关系,创建十字链表;LocateVex:确定节点位置;Outdegree:获得某节点的出度及出度节点;Indegree:获得某节点的入度及入度节点;Delete:删除图中的某个节点、某条边;

且Orthogonal List的数据结构代码为:

6.根据权利要求1所述的一种基于树的高效集合运算系统,其特征在于:所述HashMap的操作包括:Create:创建哈希表;Get:根据key值,在哈希表中查找对应的value;Put:将键值对存储的数据加入哈希表;Destroy:销毁哈希表;

且HashMap的数据结构代码为:

7.根据权利要求1所述的一种基于树的高效集合运算系统,其特征在于:该系统的算法包括以下步骤

一、查找算法Search

首先设置一指针指向树的根节点,并与待查数据进行对比,若正好相等,查找成功并返回该根节点的位置,若待查数据小于该节点数据,则在左子树中递归进行查找,大于则在右子树中递归进行查找,若查找到叶子结点还未找到,则查找失败,并将该位置返回;

二、插入算法Insert

首先运行查找算法Search,返回待插位置,若查找不成功,则应进行插入操作,若待插数据比该位置数据小,则插在左子树;如果大于该位置的数据,则插在右子树;

接下来更新各节点的平衡因子BF,自下而上对整颗二叉树进行调整,因为需要自下而上调整,所以采用后序遍历的方法,若遇到不平衡的节点既|T-BF|==2,则根据需要对该节点进行RR、RL、LL或LR型调整;

三、删除算法Delete

首先对待删数据进行查找,若查找失败,则直接返回,若查找成功,则查找函数已经返回了待删位置,那么删除树上的一个节点就应该分三种情况:

1)该元素所在节点为左子树为空;

2)该元素所在节点为右子树为空;

3)左右子树皆不空;

记待删节点为e,其父节点记为parent;

如果是第一种情况即左子树为空且parent-lchild==e,那么直接将地址e赋值给parent的左子树,如果parent-rchild==e,那么将地址e赋值给parent的右子树,然后将待删节点e释放掉;

如果是第二种情况即右子树为空,那么一切操作与第一种情况的处理对称;

如果是第三种情况,那么便找到小于e-data的最大值所在的节点,即左子树中“最右下角”的节点中的数据,然后交换两节点的数据,然后将该处在e的左子树最右端的节点释放掉,将其父节点的右子树指向NULL指针;

四、高效并集Union

假设有两个集合A与B,且|A|≤|B|,那么遍历A集合,在遍历到A中每一个元素的时候将其插入到B中,若B中已存在该元素,则根据AVL树的插入算法,插入失败,若B中无该元素,则插入之,直到A被遍历完,并集操作结束;

五、高效差集Differance

假设有两个集合A与B,要做差集B-A,遍历在遍历到A中每一个元素的时候将其在B中删除,若B中不存在该元素,则根据AVL树的删除算法,删除失败,若B中有该元素,则删除之,直到A被遍历完,差集操作结束;

六、高效交集Intersection

假设有两个集合A与B,且|A|≤|B|,根据集合论的知识,A∩B=A-(A-B),故做两次差集,即可得到交集;

七、高效补集Supplement

记全集为U,则A的补集为U-A,调用差集函数即可;

八、并查集

并查集主要用于集合的划分,将一个大的集合按一定的标准划分为几个互不相交的子集,且这几个子集包含原有集合的所有元素,并查集可用于朋友圈的划分,将认识的人归为一类,并用根元素来代替整体元素,在实现基本功能初始化、合并、查找的基础上,初始化优化为只需将每一个节点的伪指针指向-1即可,也就是每个子集仅有一个元素,查找操作优化为压缩路径查找,即把元素i到根的路径上的所有祖先节点的双亲指针都改为指向根节点。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于河海大学,未经河海大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202110926100.7/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top