CN109508389A - 一种人员社会关系图谱可视化加速方法 - Google Patents
一种人员社会关系图谱可视化加速方法 Download PDFInfo
- Publication number
- CN109508389A CN109508389A CN201811556482.3A CN201811556482A CN109508389A CN 109508389 A CN109508389 A CN 109508389A CN 201811556482 A CN201811556482 A CN 201811556482A CN 109508389 A CN109508389 A CN 109508389A
- Authority
- CN
- China
- Prior art keywords
- map
- node
- personnel
- subgraph
- algorithm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于人员社会关系图谱领域,特别是涉及一种人员社会关系图谱可视化加速算法,通过GN算法对人员社会关系图谱进行社区划分,然后使用两级布局算法对人员社会关系图谱进行加速布局,从而达到将千量级的图谱以简洁、合理、清晰的形式快速布局的目的;通过多线程的加速展示策略对人员社会关系图谱展示进行加速,从而将千量级的图谱快速的、正确的展示出来。通过上述方式,本发明能够实现人员社会关系图谱可视化加速算法,解决千量级以上的人员社会关系图谱布局加速和快速展示问题。
Description
技术领域
本发明属于人员社会关系图谱领域,特别是涉及一种人员社会关系图谱可视化加速方法。
背景技术
人员社会关系图谱是根据社会中人与人之间的联系,利用节点和连线表示人与人之间关系的工具。随着各种互联网社交工具的普遍使用急剧增加,人员社会关系图谱的节点数量越来越多,当图谱中节点、节点之间的关系数量达到百万量级以上时,图谱可视化时存在的节点重叠,关系交叉混乱和展示速度慢等问题会更加突出,现有的图谱可视化布局策略仍旧存在布局消耗时间长、布局不够合理以及可视化速度慢等问题。
本发明结合KK布局算法、社区划分算法以及分布式系统,为解决人员社会关系图谱的可视化加速算法提供了新的技术手段。
发明内容
本发明的目的在于提供一种人员社会关系图谱可视化加速方法。
一种人员社会关系图谱可视化加速方法,该方法包括以下步骤:
步骤1:根据KK模型得到人员社会关系图谱布局;
步骤2:根据人员社会关系图谱布局及多线程计算方法,得到人员社会关系图谱展示结果。
步骤1所述的根据KK模型得到人员社会关系图谱布局包括以下步骤:
步骤1.1:节点和关系解析,并将解析结果高维嵌入;
步骤1.2:节点分层;
步骤1.3:节点和关系布局。
步骤1.1所述的节点和关系解析包括以下步骤:
步骤1.1.1:输入XML文件的路径;
步骤1.1.2:获取根标签map;
步骤1.1.3:获取map下的子标签,并判断map的子标签是否为people;
步骤1.1.3.1:若map的子标签为people,则获取people下的子标签width、height、X和Y,获取people子标签width、height、X和Y的内容,将width存储在Vector变量widNodee中,将height存储在Vector变量heiNode中,将X存储在Vector变量xNode中,将Y存储在Vector变量yNode中,子标签所属的节点编号i就是Vector变量的第i-1个元素;
步骤1.1.3.2:若map的子标签不是people,则获取connect下的子标签sourceid和targetid,获取connect的子标签sourceid和targetid的内容,将sourceid存储在Vector变量sourCon中,将targetid存储在Vector变量tarCon中;
步骤1.1.4:输出Vector变量widNode、heiNode、xNode、yNode、sourCon和tarCon。
步骤1.2所述的节点分层通过基于GN算法的图谱聚类实现的,包括以下步骤:
步骤1.2:1:基于GN算法网络聚类,得到子图谱G1…Gn;
步骤1.2.2:子图谱抽象得到抽象图谱G′。
步骤1.2.1所述基于GN算法网络聚类,得到子图谱G1…Gn包括以下步骤:
步骤1.2.1.1:初始化图谱邻接矩阵Sij;
步骤1.2.1.2:广度优先遍历初始化无权图谱任意两点之间的最短路径dij;
步骤1.2.1.3:初始化所有连接边的边介数PR;
步骤1.2.1.4:初始化所有边的边权比PQV;
步骤1.2.1.5:删除边权比最大的所有边CON,计算图谱的Q值;
步骤1.2.1.6:重复步骤1.2.1.1到步骤1.2.1.5,直到图谱中所有的边均被移除;
步骤1.2.1.7:计算出最大的Q值;
步骤1.2.1.8:输出Q值最大时的图谱邻接矩阵Gij;
步骤1.2.1.5所述图谱的Q值按下式进行计算:
式中,anm为图谱邻接矩阵的元素,如果n和m两节点之间存在边,则anm为n和m两节点之间边的权重,否则anm等于0;另图谱聚类后节点之间是否存在边的概率为M为图谱中所有边的权重之和,且M=0.5∑anm。
步骤1.2.2所述子图谱抽象得到抽象图谱G′采取抽象图谱构造算法,包括以下步骤:
步骤1.2.2.1:初始化聚类图谱邻接矩阵S’ij;
步骤1.2.2.2:广度优先遍历图谱,每次遍历完一个连通分量就单独存起来,并且初始化该连通分量的中心点pi;
步骤1.2.2.3:构建子图谱Gi的特征向量
步骤1.2.2.4:通过特征向量计算整个抽象图谱节点间的理想距离d’ij
步骤1.2.2.5:输出存储抽象图谱的邻接矩阵G’ij和抽象图谱节点间的理想距离矩阵;
步骤1.2.2.3所述子图谱Gn的特征向量根据下式计算:
式中,Kv表示与该子图谱中节点v相连接的节点个数,Ev表示在该子图谱中与节点v相邻的节点之间实际存在的边个数,d表示与节点v属性相关连的随机概率,N表示图谱中的节点总数,PR(u)表示节点u影响力的大小,反映节点u在图谱中的重要程度,是子图谱Gi中所有节点的聚集系数之和,表示子图谱Gi中所有节点的PR值之和,PR值反映该子图谱的影响力程度,PR值越大该子图谱影响程度越大。
步骤1.3所述的节点和关系布局,包括以下步骤:
步骤1.3.1:提取子图谱特征向量,计算理想距离;
步骤1.3.2:使用新的理想距离改进KK算法,并对抽象图谱布局;
步骤1.3.3:计算子图谱中心点;
步骤1.3.4:各个子图谱在中心点处随机初始化位置;
步骤1.3.5:基于KK算法对子图谱布局;
步骤1.3.6:低维嵌入;
步骤1.3.7:更新节点坐标到XML文件。
步骤1.3.2所述的对抽象图谱布局,包括以下步骤:
步骤1.3.2.1:初始化抽象图谱邻接矩阵Sij
步骤1.3.2.2:计算抽象图谱最短距离矩阵d′ij、总偏移量E、系数矩阵L′ij和K′ij
步骤1.3.2.3:计算抽象图谱中偏移量最大的节点pm’
步骤1.3.2.4:计算节点pm’位移向量(δx,δy)
步骤1.3.2.5:若节点pm’的偏移量大于阈值VALUE,更新节点pm’的位置,执行下一步,否则执行步骤1.3.2.2到步骤1.3.2.4;
步骤1.3.2.6:输出抽象图谱邻接矩阵Gij。
步骤1.3.5所述的基于KK算法对子图谱布局,包括以下步骤:
步骤1.3.5.1:初始化子图谱邻接矩阵Sij;
步骤1.3.5.2:根据子图谱邻接矩阵及Dijkstra算法,计算子图谱最短距离矩阵dij、总偏移量E、系数矩阵Lij和Kij;
步骤1.3.5.3:计算子图谱中偏移量最大的节点pj;
步骤1.3.5.4:计算节点pj位移向量(δx,δy);
步骤1.3.5.5:若节点pj的偏移量大于阈值,则更新节点pj的位置并执行下一步,否则执行步骤1.3.5.2到步骤1.3.5.4;
步骤1.3.5.6:输出子图谱邻接矩阵Sij;
步骤1.3.2.2所述总偏移量E根据下式进行计算:
式中,i为图谱中节点总数,表示为i=|V|;pi是节点vi对应的位置向量;Kij表示节点之间的强度系数,Kij按下式计算:
式中,dij表示社交图谱中节点vj与节点vj之间最短距离,常数K表示节点之间影响力强度的大小;
Lij表示抽象图谱中节点之间的理想距离矩阵,Lij按下式计算:
Lij=dij lij
式中,lij是节点vi与节点vj之间单个边的理想距离长度;
偏移量最大的节点pj根据下式进行求解:
节点pj关于x坐标的位移δx和关于y坐标的位移δy根据下式进行计算:
按下式更新节点pj的位置:
步骤2所述的根据人员社会关系图谱布局及多线程计算方法,得到人员社会关系图谱展示结果,包括以下步骤:
步骤2.1:获取XML文件;
步骤2.2:开启N个新的线程;
步骤2.3:让每个线程每次解析SUMNode/N个节点坐标和SUMSide/N条边的源节点以及目标节点,如果是最后一个线程,则解析剩下的所有节点和边;
步骤2.4:展示解析到的节点和边。
本发明的有益效果在于:本发明提供一种通过GN算法对人员社会关系图谱进行社区划分,然后使用KK布局算法和分布式对人员社会关系图谱进行加速布局,从而达到将百万量级的图谱以简洁、合理、清晰的形式快速布局的目的的算法;基于多线程的加速展示策略对人员社会关系图谱展示进行加速,从而将百万量级的图谱快速的、正确的展示出来的算法。能够实现人员社会关系图谱可视化加速算法,解决百万量级以上的人员社会关系图谱布局加速和快速展示问题以及节点的重叠问题。
附图说明
图1是基于KK模型人员社会关系图谱布局加速算法流程图;
图2是图谱节点和关系解析流程图;
图3是基于GN算法的图谱聚类流程图;
图4是抽象图谱构造算法流程图;
图5是基于KK算法抽象图谱布局流程图;
图6是基于KK算法子图谱布局流程图;
图7是基于多线程展示加速算法流程图;
图8是多线程解析XML文件并展示图谱流程图。
具体实施方式
本发明对人员社会关系图谱的可视化加速进行研究,对于百万量级人员社会关系图谱可视化,需要先设计图元的布局,然后基于这个布局进行展示加速算法设计。因此,本发明的可视化加速算法主要包含两个子算法:图谱布局加速算法和图谱展示加速算法。
本发明主要解决的技术问题是提供一种人员社会关系图谱可视化加速算法,能够实现人员社会关系图谱可视化加速算法,解决百万量级以上的人员社会关系图谱布局加速和快速展示问题以及节点的重叠问题。
为解决上述技术问题,本发明采用的技术方案是:提供一种通过GN算法对人员社会关系图谱进行社区划分,然后使用KK布局算法和分布式对人员社会关系图谱进行加速布局,从而达到将百万量级的图谱以简洁、合理、清晰的形式快速布局的目的的算法;基于多线程的加速展示策略对人员社会关系图谱展示进行加速,从而将百万量级的图谱快速的、正确的展示出来的算法。
一种人员社会关系图谱可视化加速算法,包括:图谱布局加速算法和图谱展示加速算法。
一种图谱布局加速算法:
a)节点和关系解析:节点解析和关系解析就是从存储图谱的XML或Excel等文件中解析出节点的X坐标、Y坐标以及节点的源节点Id和目标节点Id。
b)节点分层:节点分层就是将大量的节点通过基于边介数的GN算法(Edgebetweenness)进行聚类,得到具有明显社区性质的子图谱,将子图谱通过构造抽象图谱算法构造成抽象图谱。
c)节点和关系布局:节点布局和关系布局就是在每一个分布式系统的子结点中对每一个子图使用KK布局算法计算抽象图谱节点坐标以及各个子图谱内部节点坐标,相应的改变节点之间边的坐标,最终实现了节点、节点之间边的合理布局。然后,将每一个子图视为一个结点再使用KK布局算法进行计算。总之,该算法是基于KK布局算法和分布式思想的一种力导引布局算法,致力于解决百万量级节点图谱布局加速问题。
一种图谱展示加速算法:
a)节点和关系的展示策略:节点和关系的展示策略就是根据节点、节点之间关系的数目来确定具体多线程数。
b)节点和关系展示:节点展示和关系展示就是将图谱中节点、节点之间的关系按照一定的展示策略将其可视化。该算法使用多线程来加速节点和关系的展示,然后使用多线程将节点和节点之间关系展示出来。总之,该算法基于多线程的思想,研究一种加速展示千量级图谱的展示加速算法。
人员社会关系可视化加速算法数据形式化定义如下:
用G=(V,E)表示图谱,其中V表示节点集合,E表示边集合。用
Gi,i={1,2,3,4,…,n}表示G的子图。对于V中的每一个节点v具有属性为横坐标X、纵坐标Y和节点Id。对于E中的每一个边e具有属性为源节点Id和目标节点Id。
人员社会关系图谱布局加速算法是将图谱快速合理的布局,其实现思路是:从XML或Excel等文件中解析出节点坐标、源节点Id和目标节点Id,使用基于GN算法划分子图谱,将子图谱构造为抽象图谱,并将每个子图谱放入到一个不同的分布式系统中的结点中,分别利用KK布局算法并行对每个结点中的每个子图进行布局,将布局完成后的子图传回主结点,并把每一个子图视为一个节点,使用KK算法进行布局同时将各个子图合并为一个图谱。该算法主要包括五大部分:节点解析、关系解析、节点分层、节点布局和关系布局,人员社会关系图谱布局加速算法流程图如图1所示。
第一,由于图谱的信息都存储在XML或Excel等文件中,所以节点解析和关系解析就是从XML文件中解析出图谱的中节点的坐标和边的源节点和目标节点。第二,节点分层就是先将整个图谱通过GN算法(Edge betweenness)划分子图谱,最终得到子图谱...Gn;然后通过抽象图谱算法将聚类子图谱构造成抽象图谱G′;初始G1G2G3化抽象图谱的一些基本参数,抽象图谱的节点和边,抽象图谱之间的理想距离,抽象图谱Gi中所有节点的聚集系数,抽象图谱Gn的特征向量,抽象图谱Gn中所有节点的PR值之和;第三,节点布局和关系布局就是将每个抽象子图分配到一个分布式系统的一个结点中。在每一结点中对每一个子图使用KK算法进行布局,布局后将从结点中的子图传回主结点,并将每一个子图看成是一个节点使用KK算法布局,同时将所有的子图合并为一个图谱。
人员社会关系图谱的信息都存储在XML或Exvel等文件中,下面以解析XML文件为例说明解析节点信息和边信息的过程。节点解析就是从XML文件中解析出图谱中所有节点坐标的X值和Y值,关系解析就是从XML文件中解析出图谱中所有节点之间边的源节点Id和目标节点Id,从XML文件中解析出节点和关系信息的图谱节点和关系解析流程图如图2所示。解析XML图谱文件主流方法主要有DOM、SAX、JDOM和DOM4J等方法,由于DOM4J解析方法相比其他三种方法,首先不仅可以对XML图谱文件进行增、删、改、查,还具有更大的灵活性和简单性;其次,DOM4J解析XML图谱文件时不受内存大小的限制,可以解析比内存大的XML图谱文件;最后不得不提的是DOM4J解析方法具有更快的速度和效率;所以在解析XML图谱文件时,采用DOM4J方法解析。
使用DOM4J解析对图谱节点和关系解析,包括如下步骤:
步骤1.输入XML文件的路径,使用read()函数获取XML文件的Document;
步骤2.使用getRootElement()函数和elementIterator()函数获取根标签map的Iterator;
步骤3.使用getName()函数和elementIterator()函数获取map下的子标签people和connect的Iterator;
步骤4.使用getName()函数和elementIterator()函数获取people下的子标签width、height、X和Y各自的Iterator,以及connect下的子标签sourceid和targetid各自的Iterator;
步骤5.使用getStringValue()函数获取people子标签width、height、X和Y的内容,将其分别对应存储在Vector变量widNode、heiNode、xNode、yNode中,子标签所属的节点编号i就是Vector变量的第i-1个元素;使用getStringValue()函数获取connect的子标签sourceid和targetid的内容,将其分别对应存储在Vector变量sourCon和tarCon中。
步骤6.输出存储节点width、height、X和Y内容的Vector变量widNode、heiNode、xNode、yNode,以及存储边sourceid和targetid内容的Vector变量sourCon和tarCon。
节点解析时使用DOM4J方法解析,其实质就是一层一层的遍历XML标签,首先需要获取根标签map,然后获取map下的子标签connect,在获取map的子标签sourceid和targetid,最后获取子标签sourceid和targetid的内容,并把它们各自存储在Vector类型的数据结构中。
图谱的节点分层是通过基于GN算法的图谱聚类实现的,图谱聚类就是将图谱按照一定的规则分割为若干个子图谱,图谱布局的目的就是消除图谱中节点重叠,减少节点之间的边交叉数量,让布局更加合理,图谱的内在结构更加清晰。GN算法用于发现图谱中具有社区性质的子图谱,将相似的节点归为同一个子图谱,所以使用GN算法对图谱进行聚类。
GN算法属于社区发现算法,是一种边介数算法,本质是分层聚类思想。边介数表示图谱中节点之间的边在整个图谱中的控制力强度,是一个重要的社区发现变量,具有很高的参考价值。边介数的大小与该边连接的聚类图谱的聚集程度高低成正比关系,将此条边删除后,就可以得到两个社区性质更加明显的图谱,如果一直这样划分,就可以将整个图谱划分为具有社区性质的图谱。GN算法就是按照边介数的大小不断地去掉图谱中的边,核心是聚类中的分裂思想,以边介数作为是否去除该边的尺度,其愈大,被删除的可能性也就愈大;由于该算法不断删除那些连接两个具有明显社区性质的子图谱,所以该算法收敛的速度相当快。GN为了衡量所划分图谱的优劣,后来在GN函数中引入了Q函数,模块性Q函数的值与所划分子图谱的社区性质成正比,其值愈大,划分子图谱的社区性质愈好。
无权图谱和有权图谱的模块性函数具有不同的计算方法,在无权图谱中, 其中,enn表示存储该图谱的邻接矩阵的迹,an表示存储图谱的邻接矩阵中每一行或每一列的值,即第K个社团中的节点相连的边在所有边中所占的比例。而在加权图谱中,其中anm为图谱邻接矩阵的元素,如果n和m两节点之间存在边,则anm为n和m两节点之间边的权重,否则等于0。另外,图谱聚类后节点之间是否存在边的概率为M为图谱中所有边的权重之和,M=0.5∑anm。
在正常的社交图谱中,模块性值一般保持在0.2-0.8之间,模块性值与图谱分裂的结果状态成正比关系,模块性值比0.8大的可能性很小,模块性值的最大值是1.0。模块性值越大,越能说明图谱具有更加明显的的社区结构,基于GN算法的图谱聚类流程图如图3所示。
本发明中涉及的图谱是有权图谱,根据上面对于基于GN算法的图谱聚类的论述,下面直接给出基于GN算法的图谱聚类的伪代码。
GN算法在实现过程中,第一,需要求出图谱中任意两点之间的最短路径,并将其存储在邻接矩阵中,此处的最短路径指的是节点vn与节点vm之间边的条数,在求解图谱的最短路径时,可以使用广度优先遍历也可以使用Dijkstra算法或者弗洛伊德算法;第二,计算图谱中所有边的边介数,边介数是指该边在图谱中所有最短路径中出现的次数;第三,计算图谱中所有边的边权比,边权比是指该边的边介数与它的权重的比值;比较图谱中所有边的边权比,将边权比最大的边在图谱中删除,当边权比最高的边又多条时,将它们全部删除,依据公式来计算模块性Q函数,直到所有的边都被移除,此时求出最大的Q值,并且将图谱恢复到此时的图谱状态,此时的图谱状态就是社区发现GN算法最终计算得到的图谱状态,它具有最好的模块性质。
通过基于GN算法的图谱聚类之后,就得到了存储Q值最大时图谱的邻接矩阵,该邻接矩阵存储的是若干个不连通的子图谱。
构造抽象图谱就是将各个孤立的子图谱抽象为一个完整的抽象图谱,本部分构造抽象图谱就是将基于GN算法图谱聚类之后得到的若干个子图谱抽象为一个抽象图谱。构造抽象图谱的目的是将其进行KK算法布局,所以要初始化一系列参数,这些参数包括理想距离lnm、子图谱Gn中所有节点的聚集系数子图谱Gn的特征向量和子图谱Gn中所有节点的PR值之和
抽象图谱与单个节点不同,在KK算法中要用到一些非常重要的参数,其中一个就是理想距离lnm。在原始的图谱中,理想距离lnm是指节点vn与节点vm之间的边数,但是在抽象图谱中这么定义就显得不合理,所以需要重新定义理想距离lnm。在给出抽象图谱理想距离lnm的距离之前,需要先对子图谱的特征向量T和子图谱的聚集系数进行论述。
节点v聚集系数表示为C(v),它表示节点v的聚集性,换句话说,在子图谱中与节点v相邻的两个节点仍然相邻的可能性是多少,其中Kv表示与该子图谱中节点v相连接的节点个数,Ev表示在该子图谱中与节点v相邻的节点之间实际存在的边个数,子图谱Gn的特征向量其中是子图谱Gi中所有节点的聚集系数之和,表示子图谱Gn中所有节点的PR值之和,PR值反映该子图谱的影响力程度,PR值越大该子图谱影响程度越大。基于上面对子图谱的特征向量T和聚集系数C的详细描述下面给出抽象图谱理想距离通过子图谱Gn和子图谱Gm之间的余弦相似度来得到的两个抽象图谱之间的理想距离l′nm,其中L0表示该三维空间的直径长度。
在图谱中,当一个节点vn指向节点vm时,说明节点vn认为节点vm比较重要,从而将自己的一部分重要性给节点vm,将vm的出链数N看做该节点拥有的重要程度。每个节点开始时的重要程度设置为PR/N,PR值的计算方法为其中d表示与节点v属性相关连的随机概率,大多数情况默认d=0.85,N表示图谱中的节点总数。很明显PR(u)表示节点u影响力的大小,反映节点u在图谱中的重要程度。
从公式中可以清楚的看出,要想求出节点u的PR(u)值需要求出节点v的PR(v)值。根据马尔科夫收敛定理可以看出PR(u)的计算符合马尔可夫收敛定理,所以根据上述公式和马尔可夫收敛定理可以求出PR值。
在初始状态下,首先需要初始化存储图谱的邻接矩阵;然后将所有节点的默认PR值设置为1/N,N图谱中的节点总个数,即将其的重要程度设置为一个定值;由于节点的PR值的计算符合马尔可夫收敛定理,所以使用公式计算节点u的PR值,不断更新所有节点的PR值,直到达到一定的迭代次数。
上面论述了构造抽象图谱时所需的参数如何计算,下面给出抽象图谱构造算法流程图,如图4所示。
基于上面对抽象图谱算法的理论思想详细论述,下面给出抽象图谱算法的伪代码实现。
通过GN算法,可以得到存储聚类图谱的邻接矩阵,广度优先遍历存储聚类图谱的邻接矩阵,将单独的连通分量的节点Id保存在Vector数据结构中。根据公式公式和公式计算各个连通分量(子图谱Gn)的特征向量然后根据求得的特征向量和公式计算子图谱理想距离l′nm,并且构造抽象图谱的理想距离矩阵。
KK模型是Kamada和Kawai提出的一个能量模型,其思想就是减少系统总能量来改变图谱中节点的坐标。KK能量模型遵循“胡可定律”。图谱的总能量表示为:其中Knm是节点vn与节点vm之间力的强度,是常数K与最短距离的平方的比值,公式表示为:在KK能量模型中第一次引入了“理想距离”的概念。理想距离就是:图谱中任意两个顶点之间的理想距离Lnm与图谱中任意两个顶点之间的最短路径dnm成正比,公式表示为:Lnm=dnmlnm。公式中E是图谱的中能量;n为图谱中节点总数,公式表示为n=|V|;pn是节点vn对应的位置向量;dnm表示社交图谱中节点vn与节点vm之间最短距离,需要指出的是,此处的最短距离dnm是从节点vn到节点vm经过的边数。公式中常数K表示节点之间影响力强度的大小。公式Lnm=dnmlnm中lnm是节点vn与节点vm之间单个边的理想距离长度;值得一提的是,单个边的理想距离长度lnm一般有两种定义方式,lnm的第一种定义方式公式表示为:lnm的第二种定义方式公式表示为第一种定义方式公式中L0是显示方块区域中一条边的长度。第二种定义方式公式中W是显示区域的宽,H是显示区域的高,|V|是图谱中节点的总个数。
基于KK能量模型的KK算法在求解图谱最优布局的过程就是不断较少系统总能量。在求出系统总能量的基础上对各个节点求偏导数,得其中E是系统总能量,Δm反映节点的偏移量大小。求出Δm最大的节点m,然后根据公式和公式 求出节点m的偏移量δx和δy。
KK模型算法的核心就是公式和公式 先求出偏移量最大的节点,然后根据关于系统总能量E的偏微分方程来迭代减少系统总能量E,直到满足一定的条件,算法才终止,此条件也是影响算法计算复杂度的一个重要因素,后文算法优化部分将详细阐述。在求得节点m的偏移量之后需要更新节点m的x坐标和y坐标,根据公式更新节点m的x坐标,根据公式更新节点m的y坐标。
综上所述,KK模型算法实质就是迭代减小系统总能量,让图谱中节点的能量值达到最小。接下来,对KK算法的整个流程做一个简单描述。在此,需要做几点声明:为方便描述,暂且默认图谱使用邻接矩阵存储,节点之间的最短距离以及其他系数使用二维数组存储。下面是KK算法流程。
步骤1.根据Dijkstra算法计算各个节点之间的最短距离矩阵dnm;
步骤2.根据公式初始化各个节点之间力的强度系数Knm;
步骤3.根据公式或者公式计算各个边的理想距离lnm;
步骤4.将各个边的理想距离lnm代入公式计算各个节点之间的理想距离Lnm;
步骤5.根据公式计算图谱的总能量E;
步骤6.根据公式计算各个节点关于系统总能量E的偏移量Δm;
步骤7.计算偏移量Δm最大节点m,然后根据偏微分方程和计算节点m关于x坐标的位移δx和关于y坐标的位移δy;
步骤8.根据公式和更新节点m的坐标;
步骤9.迭代求能量最大的节点m,通过改变节点m的坐标,减小系统总能量E。
基于KK算法抽象图谱布局就是将抽象得到的抽象图谱使用KK算法改变抽象图谱节点的坐标,实现了图谱的整体布局,基于KK算法抽象图谱布局流程图如图5所示。
基于KK模型的抽象图谱布局应用KK能量模型改变抽象图谱节点的坐标,实现了对抽象图谱的合理布局。
下面详细阐述基于KK模型的抽象图谱布局算法的流程:
步骤1.从存储图谱节点坐标和边源节点和目标节点的Vector中,获取节点坐标以及边的源节点和目标节点,初始化抽象图谱的邻接矩阵;
步骤2.通过Dijkstra算法求解抽象图谱的邻接矩阵的最短距离矩阵;
步骤3.根据公式初始化抽象图谱中节点之间的理想距离矩阵lij,并存储在二维数组中,以及表示节点之间的强度系数Kij,存储在二维数组中,根据公式计算抽象图谱的总能量E;
步骤4.根据公式计算图谱中所有节点的能量,存储在二维数组中,并且求解出能量最大的节点pm;
步骤5.依据公式公式表示的偏微分方程,求解出节点pm关于x坐标的位移δx和关于y坐标的位移δy;
步骤6.由公式公式更新存储在Vector中节点pm的位置;
步骤7.重新计算图谱的总能量E以及能量值最大的节点pm。
步骤8.迭代减少节点pm的最大能量值,直到能量值最大的节点pm的能量小于设定的阈值。
根据上面对KK能量模型KK能量模型的描述以及流程图的详细解释,下面直接给出实现基于KK模型的抽象图谱布局算法的伪代码。
基于KK算法子图谱布局就是对分布式系统中的每个子结点中的子图谱使用KK算法计算图谱节点的坐标,基于KK算法子图谱布局流程图如图6所示。
基于KK模型的子图谱布局应用KK能量模型改变子图谱节点的坐标,实现了对子图谱的合理布局。前面已经详细介绍了KK模型的原理。
聚类子图谱就是使用KK算法布局,遵守胡克定律,最优模型布局就是系统总能量最少,所以,求解KK模型的最优布局就是迭代减少系统总能量。
KK算法是每次计算偏移量最大的节点pm,移动节点pm的坐标,然后有计算偏移量最大的节点pm,接着移动节点pm的坐标,如此不断迭代移动偏移量最大的节点,直至节点的最大偏移量小于设定的阈值。
下面是实现基于KK算法子图谱布局算法的伪代码。
图谱展示加速算法是通过多线程解析XML文件、展示图谱节点和边来实现图谱加速展示的算法,图谱展示加速算法思想是:首先获取XML文件,然后运行若干个线程,使用这几个线程分段解析XML文件,将读取节点和边的信息传递给可视化工具提供的接口,从而将图谱展示出来。该算法主要包括三个方面:展示策略、节点展示以及关系展示。基于多线程展示加速算法流程图如图7所示。
展示策略是通过多线程来解析XML文件和展示节点和边,一般情况下,都是采用单线程来展示图谱中节点和关系,单线程是该进程中只有一个线程,在程序执行过程中,程序是线性的,程序从开始到结束完全按照一个方向来执行,前面的执行完,后面的才能接着执行。多线程是该进程中有多个线程,可以有多个线程同时执行,实现了多个线程之间并发执行的技术。所以,如果通过多线程来展示图谱的节点和关系,便能提高展示图谱的效率。另外,每个线程需要消耗一定的CUP资源来管理,最主要的是进程的上下文切换需要消耗资源,如果频繁的上下文切换,就会出现抖动现象,CUP的有效利用机会很低,因此针对不同的节点和关系数目,需要设置不同数目的多线程,以最大幅度的提高图谱的展示速度。在人员社会关系图谱的展示过程中,主要的耗时在图谱文件XML文件的解析和图谱中节点和关系的展示上,所以主要对这两点进行优化。多线程便可实现较大程度的优化,用多线程解析XML文件,用多线程展示图谱的节点和关系。
节点展示就是从存储图谱的XML文件中解析出所有节点X值和Y值,然后将其在画布上展示出来,本发明使用的可视化工具只需要将节点信息存储在map的数据结构中,然后传给该工具就可将图谱展示出来。
关系展示就是从存储图谱的XML文件中解析出节点之间所有边的源节点Id与目标节点Id,然后将其在画布上展示出来,本发明使用的可视化工具只需要将节点信息存储在map的数据结构中,然后传给该工具就可将图谱展示出来。
展示策略就是根据节点的数量选择合适的多线程数去解析XML,然后展示节点和节点之间的关系,节点展示和关系展示就是根据节点的左边和关系的源节点和目标节点将其展示出来。该算法的思想是:先获取XML文件,运行相应的线程数,每个线程平均所有的节点和边,最后调用可视化工具的接口将节点和节点之间的边展示出来,通过多线程解析XML图谱文件以及展示图谱的节点和关系是此算法的核心思想,多线程解析XML文件并展示图谱流程图如图8所示。
鉴于DOM4J优越的性能,该算法在解析XML文件时使用DOM4J方法,下面对多线程解析XML文件并展示图谱的流程进行详细论述:
步骤1.输入XML文件的文件路径;
步骤2.使用read()函数获取XML文件的Document;
步骤3.使用start()函数运行N个线程;
步骤4.计算节点总数numNode和边总数numCon;
步骤5.第一个线程解析第0~numNode/N的节点和第0~numCon/N的边,第二个线程解析第numNode/N+1~2*numNode/N的节点和第numCon/N+1~2*numCon/N的边,依次类推直到最后一个线程解析剩下的所有节点和边;将其保存在map的数据结构中。
步骤6.使用getRootElement()函数和elementIterator()函数获取根标签map的Iterator;
步骤7.使用getName()函数和elementIterator()函数获取map下的子标签people和connect的Iterator;
步骤8.使用getName()函数和elementIterator()函数获取people下的子标签width、height、X和Y各自的Iterator,以及connect下的子标签sourceid和targetid各自的Iterator;
步骤9.将Vector变量widNode、heiNode、xNode、yNode、sourCon和tarCon存储在Map变量map中;
步骤10.使用可视化工具提供的接口将map传递给可视化工具将图谱展示出来;
步骤11.输出可视化的图谱。
下面给出基于多线程的人员社会关系图谱展示加速算法的伪代码。
Claims (10)
1.一种人员社会关系图谱可视化加速方法,其特征在于,该方法包括以下步骤:
步骤1:根据KK模型得到人员社会关系图谱布局;
步骤2:根据人员社会关系图谱布局及多线程计算方法,得到人员社会关系图谱展示结果。
2.根据权利要求1所述的一种人员社会关系图谱可视化加速方法,其特征在于,步骤1所述的根据KK模型得到人员社会关系图谱布局包括以下步骤:
步骤1.1:节点和关系解析,并将解析结果高维嵌入;
步骤1.2:节点分层;
步骤1.3:节点和关系布局。
3.根据权利要求2所述的一种人员社会关系图谱可视化加速方法,其特征在于,步骤1.1所述的节点和关系解析包括以下步骤:
步骤1.1.1:输入XML文件的路径;
步骤1.1.2:获取根标签map;
步骤1.1.3:获取map下的子标签,并判断map的子标签是否为people;
步骤1.1.3.1:若map的子标签为people,则获取people下的子标签width、height、X和Y,获取people子标签width、height、X和Y的内容,将width存储在Vector变量widNodee中,将height存储在Vector变量heiNode中,将X存储在Vector变量xNode中,将Y存储在Vector变量yNode中,子标签所属的节点编号i就是Vector变量的第i-1个元素;
步骤1.1.3.2:若map的子标签不是people,则获取connect下的子标签sourceid和targetid,获取connect的子标签sourceid和targetid的内容,将sourceid存储在Vector变量sourCon中,将targetid存储在Vector变量tarCon中;
步骤1.1.4:输出Vector变量widNode、heiNode、xNode、yNode、sourCon和tarCon。
4.根据权利要求2所述的一种人员社会关系图谱可视化加速方法,其特征在于:步骤1.2所述的节点分层通过基于GN算法的图谱聚类实现的,包括以下步骤:
步骤1.2.1:基于GN算法网络聚类,得到子图谱G1…Gn;
步骤1.2.2:子图谱抽象得到抽象图谱G′。
5.根据权利要求4所述的一种人员社会关系图谱可视化加速方法,其特征在于,步骤1.2.1所述基于GN算法网络聚类,得到子图谱G1…Gn包括以下步骤:
步骤1.2.1.1:初始化图谱邻接矩阵Sij;
步骤1.2.1.2:广度优先遍历初始化无权图谱任意两点之间的最短路径dij;
步骤1.2.1.3:初始化所有连接边的边介数PR;
步骤1.2.1.4:初始化所有边的边权比PQV;
步骤1.2.1.5:删除边权比最大的所有边CON,计算图谱的Q值;
步骤1.2.1.6:重复步骤1.2.1.1到步骤1.2.1.5,直到图谱中所有的边均被移除;
步骤1.2.1.7:计算出最大的Q值;
步骤1.2.1.8:输出Q值最大时的图谱邻接矩阵Gij;
步骤1.2.1.5所述图谱的Q值按下式进行计算:
式中,anm为图谱邻接矩阵的元素,如果n和m两节点之间存在边,则anm为n和m两节点之间边的权重,否则anm等于0;另图谱聚类后节点之间是否存在边的概率为M为图谱中所有边的权重之和,且M=0.5∑anm。
6.根据权利要求4或5所述的一种人员社会关系图谱可视化加速方法,其特征在于,步骤1.2.2所述子图谱抽象得到抽象图谱G′,采取抽象图谱构造算法,包括以下步骤:
步骤1.2.2.1:初始化聚类图谱邻接矩阵S’jj;
步骤1.2.2.2:广度优先遍历图谱,每次遍历完一个连通分量就单独存起来,并且初始化该连通分量的中心点pi;
步骤1.2.2.3:构建子图谱Gi的特征向量
步骤1.2.2.4:通过特征向量计算整个抽象图谱节点间的理想距离d’ij
步骤1.2.2.5:输出存储抽象图谱的邻接矩阵G’ij和抽象图谱节点间的理想距离矩阵;
步骤1.2.2.3所述子图谱Gn的特征向量根据下式计算:
式中,Kv表示与该子图谱中节点v相连接的节点个数,Ev表示在该子图谱中与节点v相邻的节点之间实际存在的边个数,d表示与节点v属性相关连的随机概率,N表示图谱中的节点总数,PR(u)表示节点u影响力的大小,反映节点u在图谱中的重要程度,是子图谱Gi中所有节点的聚集系数之和,表示子图谱Gi中所有节点的PR值之和,PR值反映子图谱的影响力程度,PR值越大子图谱影响程度越大。
7.根据权利要求2所述的一种人员社会关系图谱可视化加速方法,其特征在于,步骤1.3所述的节点和关系布局,包括以下步骤:
步骤1.3.1:提取子图谱特征向量,计算理想距离;
步骤1.3.2:使用新的理想距离改进KK算法,并对抽象图谱布局;
步骤1.3.3:计算子图谱中心点;
步骤1.3.4:各个子图谱在中心点处随机初始化位置;
步骤1.3.5:基于KK算法对子图谱布局;
步骤1.3.6:低维嵌入;
步骤1.3.7:更新节点坐标到XML文件。
8.根据权利要求2或7所述的一种人员社会关系图谱可视化加速方法,其特征在于,步骤1.3.2所述的对抽象图谱布局,包括以下步骤:
步骤1.3.2.1:初始化抽象图谱邻接矩阵Sij
步骤1.3.2.2:计算抽象图谱最短距离矩阵d′ij、总偏移量E、系数矩阵L′ij和K′ij
步骤1.3.2.3:计算抽象图谱中偏移量最大的节点pm’
步骤1.3.2.4:计算节点pm’位移向量(δx,δy)
步骤1.3.2.5:若节点pm’的偏移量大于阈值VALUE,更新节点pm’的位置,执行下一步,否则执行步骤1.3.2.2到步骤1.3.2.4;
步骤1.3.2.6:输出抽象图谱邻接矩阵Gij。
9.根据权利要求2或7所述的一种人员社会关系图谱可视化加速方法,其特征在于,步骤1.3.5所述的基于KK算法对子图谱布局,包括以下步骤:
步骤1.3.5.1:初始化子图谱邻接矩阵Sij;
步骤1.3.5.2:根据子图谱邻接矩阵及Dijkstra算法,计算子图谱最短距离矩阵dij、总偏移量E、系数矩阵Lij和Kij;
步骤1.3.5.3:计算子图谱中偏移量最大的节点pj;
步骤1.3.5.4:计算节点pj位移向量(δx,δy);
步骤1.3.5.5:若节点pj的偏移量大于阈值,则更新节点pj的位置并执行下一步,否则执行步骤1.3.5.2到步骤1.3.5.4;
步骤1.3.5.6:输出子图谱邻接矩阵Sij;
步骤1.3.2.2所述总偏移量E根据下式进行计算:
式中,i为图谱中节点总数,表示为i=|V|;pi是节点vi对应的位置向量;Kij表示节点之间的强度系数,Kij按下式计算:
式中,dij表示社交图谱中节点vi与节点vj之间最短距离,常数K表示节点之间影响力强度的大小;
Lij表示抽象图谱中节点之间的理想距离矩阵,Lij按下式计算:
Lij=dijlij
式中,lij是节点vi与节点vj之间单个边的理想距离长度;
偏移量最大的节点pj根据下式进行求解:
节点pj关于x坐标的位移δx和关于y坐标的位移δy根据下式进行计算:
按下式更新节点pj的位置:
10.根据权利要求1所述的一种人员社会关系图谱可视化加速方法,其特征在于,步骤2所述的根据人员社会关系图谱布局及多线程计算方法,得到人员社会关系图谱展示结果,包括以下步骤:
步骤2.1:获取XML文件;
步骤2.2:开启N个新的线程;
步骤2.3:让每个线程每次解析SUMNode/N个节点坐标和SUMSide/N条边的源节点以及目标节点,如果是最后一个线程,则解析剩下的所有节点和边;
步骤2.4:展示解析到的节点和边。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811556482.3A CN109508389B (zh) | 2018-12-19 | 2018-12-19 | 一种人员社会关系图谱可视化加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811556482.3A CN109508389B (zh) | 2018-12-19 | 2018-12-19 | 一种人员社会关系图谱可视化加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109508389A true CN109508389A (zh) | 2019-03-22 |
CN109508389B CN109508389B (zh) | 2021-05-28 |
Family
ID=65753679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811556482.3A Active CN109508389B (zh) | 2018-12-19 | 2018-12-19 | 一种人员社会关系图谱可视化加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109508389B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427494A (zh) * | 2019-07-29 | 2019-11-08 | 北京明略软件系统有限公司 | 知识图谱的展示方法、装置、存储介质及电子装置 |
CN110781314A (zh) * | 2019-09-29 | 2020-02-11 | 北京淇瑀信息科技有限公司 | 用户关系图的分层显示方法、装置及电子设备 |
CN112990919A (zh) * | 2019-12-17 | 2021-06-18 | 中国银联股份有限公司 | 一种信息处理的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105959132A (zh) * | 2016-04-21 | 2016-09-21 | 重庆邮电大学 | 一种面向大规模网络的社区布局可视化方法 |
CN107818149A (zh) * | 2017-10-23 | 2018-03-20 | 中国科学院信息工程研究所 | 一种基于力导引算法的图数据可视化布局优化方法 |
CN108846029A (zh) * | 2018-05-28 | 2018-11-20 | 哈尔滨工程大学 | 基于知识图谱的情报关联分析方法 |
CN108959370A (zh) * | 2018-05-23 | 2018-12-07 | 哈尔滨工业大学 | 一种基于知识图谱中实体相似度的社区发现方法及装置 |
-
2018
- 2018-12-19 CN CN201811556482.3A patent/CN109508389B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105959132A (zh) * | 2016-04-21 | 2016-09-21 | 重庆邮电大学 | 一种面向大规模网络的社区布局可视化方法 |
CN107818149A (zh) * | 2017-10-23 | 2018-03-20 | 中国科学院信息工程研究所 | 一种基于力导引算法的图数据可视化布局优化方法 |
CN108959370A (zh) * | 2018-05-23 | 2018-12-07 | 哈尔滨工业大学 | 一种基于知识图谱中实体相似度的社区发现方法及装置 |
CN108846029A (zh) * | 2018-05-28 | 2018-11-20 | 哈尔滨工程大学 | 基于知识图谱的情报关联分析方法 |
Non-Patent Citations (4)
Title |
---|
TOMIHISA KAMADA ET AL.: "An algorithm for drawing general undirected graphs", 《INFORMATION PROCESSING LETTERS》 * |
吴渝 等: "一种3D空间中的两级力导引可视化算法", 《重庆邮电大学学报(自然科学版)》 * |
吴鹏 等: "适于社会网络结构分析与可视化的布局算法", 《软件学报》 * |
金超: "基于图聚类的社会网络数据挖掘算法研究", 《中国优秀硕士学位论文全文数据库-信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427494A (zh) * | 2019-07-29 | 2019-11-08 | 北京明略软件系统有限公司 | 知识图谱的展示方法、装置、存储介质及电子装置 |
CN110427494B (zh) * | 2019-07-29 | 2022-11-15 | 北京明略软件系统有限公司 | 知识图谱的展示方法、装置、存储介质及电子装置 |
CN110781314A (zh) * | 2019-09-29 | 2020-02-11 | 北京淇瑀信息科技有限公司 | 用户关系图的分层显示方法、装置及电子设备 |
CN110781314B (zh) * | 2019-09-29 | 2024-03-26 | 北京淇瑀信息科技有限公司 | 用户关系图的分层显示方法、装置及电子设备 |
CN112990919A (zh) * | 2019-12-17 | 2021-06-18 | 中国银联股份有限公司 | 一种信息处理的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109508389B (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zarandi et al. | Community detection in complex networks using structural similarity | |
CN109508389A (zh) | 一种人员社会关系图谱可视化加速方法 | |
Selassie et al. | Divided edge bundling for directional network data | |
Bianconi et al. | Complex quantum network geometries: Evolution and phase transitions | |
CN107103050A (zh) | 一种大数据建模平台及方法 | |
Bolzoni et al. | Efficient itinerary planning with category constraints | |
Booth et al. | Linear algorithms to recognize interval graphs and test for the consecutive ones property | |
Bortner et al. | Progressive clustering of networks using structure-connected order of traversal | |
Angelini et al. | Testing the simultaneous embeddability of two graphs whose intersection is a biconnected or a connected graph | |
Gronemann et al. | Drawing clustered graphs as topographic maps | |
CN103810261A (zh) | 一种基于商空间理论的K-means聚类方法 | |
CN107679642A (zh) | 根据函数分解的随机路径生成 | |
Guo et al. | The parameterized complexity of local search for TSP, more refined | |
CN109614520A (zh) | 一种面向多模式图匹配的并行加速方法 | |
Nair et al. | Microscopic structural analysis of complex networks: An empirical study using motifs | |
Matache et al. | Random Boolean network model exhibiting deterministic chaos | |
Drif et al. | Taxonomy and survey of community discovery methods in complex networks | |
Golodetz et al. | Simpler editing of graph-based segmentation hierarchies using zipping algorithms | |
Kaneriya et al. | A novel approach for clustering data streams using granularity technique | |
Benatti et al. | On the transient and equilibrium features of growing fractal complex networks | |
Wei et al. | A Speedup Spatial Rearrangement Algorithm for Dynamic Network Visualization | |
Li et al. | Integrating attributes of nodes solves the community structure partition effectively | |
Verhetsel et al. | A 44-element mesh of Schneiders’ pyramid | |
Papadopoulos et al. | Drawing graphs using modular decomposition | |
Da Lozzo et al. | Planarity of streamed graphs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |