利索能及
我要发布
收藏
专利号: 2021111695767
申请人: 杭州电子科技大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-09-16
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种位置社交网络中邻近社区的检索方法,其特征在于,包括如下步骤:步骤1、位置社交网络的抽象;

步骤2、初始化查询的待处理结点列表ListV;

步骤3、搜索ListV中的一个结点p相应的区域;到结点列表ListC;

确定一个结点的搜索区域,并对这个区域的子图进行k‑core分解,获得k‑core社区包含的结点列表ListC;具体步骤如下:步骤3‑1:从列表ListV中弹出一个结点p进行操作;

步骤3‑2:获得p结点的搜索区域V’;

V’={v | v∈V & |v,p|<|q,p| & |p,v|≤2r}    式‑(1)式‑(1)中使用的符号“||”表示两点之间的距离,式子定义的区域结点集合V’中包含的结点v具有三个性质:首先v属于V;v与查询点p的距离小于q与查询点p的距离,或者说v结点位于结点p,q之间;v结点与p结点的距离小于等于2r;

步骤3‑3、检查V’中结点的个数是否少于k,如果结点个数少于k,重复执行步骤3‑1;

步骤3‑4、将仅包含结点集合V’的子图G’=(V’,E’)从社交网络图G中分割出来;

步骤3‑5、对子图G’=(V’,E’)进行k‑core分解;

k‑core分解的过程是在子图G’中,按照每个结点的度数进行排序,迭代删除所有度数小于k的结点,以及该结点相邻的边,剩下的图就是k‑core;对获得的k‑core子图使用并查集算法检查其连通性;

步骤3‑6、将步骤3‑5得到的k‑core社区中所有结点插入列表ListC;

步骤3‑7、对列表ListC按结点名称进行排序;

步骤4、检查ListC中任意俩结点和p三点共圆的圆形区域是否包含k‑core社区,圆形区域半径小于r,k‑core社区是社交网络G(V,E)中的一个连通子图C,这个连通子图中的用户结点满足预定义的紧密性标准;即符合下两个条件:一、社区C中所包含的用户结点至少有k个邻接结点,也即在这些用户结点组成的子图中所有结点的度数大于等于k;

二、社区C中的任意两个用户结点之间都存在一条路径,也即社区中任意两个用户结点之间是连通的;

将发现的k‑core社区添加至ListKC;

步骤4‑1、初始化列表ListKC;

步骤4‑2、设置循环变量i为2,执行步骤4‑3、步骤4‑4直至i的值超过|ListC|,|ListC|表示列表中结点的个数;

步骤4‑3、设置循环变量j为1,执行步骤4‑4,直至j的值超过i‑1;

步骤4‑4、本步骤包含以下操作:

取结点p、列表ListC中的结点ListCi、ListCj,使用三点共圆算法确定覆盖这三点的最小半径圆,使用circle表示这个圆;

判断圆circle的半径是否小于r,如果半径小于r,执行以下操作:取得圆circle中按照位置关系包含的所有结点构成的集合S;

对结点集合S构成的子图进行k‑core分解,连通性检查,确定是否包含满足上述定义的k‑core社区;

如果存在一个k‑core社区,将其插入列表ListKC;

重复执行步骤4‑4,直至步骤4‑2、4‑3中循环控制条件为假;

步骤4‑1、初始化列表ListKC;

步骤4‑2、设置循环变量i为2,执行步骤4‑3、步骤4‑4直至i的值超过|ListC|,|ListC|表示列表中结点的个数;

步骤4‑3、设置循环变量j为1,执行步骤4‑4,直至j的值超过i‑1;

步骤4‑4、本步骤包含以下操作:

取结点p、列表ListC中的结点ListCi、ListCj,使用三点共圆算法确定覆盖这三点的最小半径圆,使用circle表示这个圆;

判断圆circle的半径是否小于r,如果半径小于r,执行以下操作:取得圆circle中按照位置关系包含的所有结点构成的集合S;

对结点集合S构成的子图进行k‑core分解,连通性检查,确定是否包含满足上述定义的k‑core社区;

如果存在一个k‑core社区,将其插入列表ListKC;

重复执行步骤4‑4,直至步骤4‑2、4‑3中循环控制条件为假;

步骤5、重复执行直至ListV为空或|ListKC|>k;

步骤6、返回结果列表ListKC。

2.根据权利要求1所述的位置社交网络中邻近社区的检索方法,其特征在于,步骤1的具体步骤如下:将一个社交网络中的所有用户节点抽象,用节点的集合V表示;用户之间的联系表示为两个节点之间的边,使用边的集合E来表示;每个节点v存在一个位置属性positionv。

3.根据权利要求1所述的位置社交网络中邻近社区的检索方法,其特征在于,步骤5包括如下具体步骤:如果列表ListV非空,并且结果列表ListKC的长度小于k,也即还没搜索完成所有结点,并且没有达到查询所要求返回的k‑core 社区数量k,重复执行步骤3、步骤4。