一种图布局的方法及装置与流程

文档序号:11950880阅读:324来源:国知局
一种图布局的方法及装置与流程

本发明涉及信息技术可视化技术领域,特别涉及一种图布局的方法及装置。



背景技术:

图是一个抽象数据结构,常用于为信息结构建模。图能够为现实世界中对象的任意信息建模,表示对象之问的关联关系。近年来,对信息技术可视化的研究越来越广泛,信息技术可视化也在各个领域中得到越来越广泛的应用。图布局是用图结构解决现实世界中信息可视化问题的一种重要技术。

绘图技术是信息可视化与应用数学的一个交叉领域,主要研究从图(Graph)到几何空间的映射关系。绘图技术的内容极其丰富,主要是根据不同的实际应用需求,满足绘图的基本要求。从图布局的观点来看,在图的绘制中,主要解决的是图中节点的布局问题。用图布局算法,将散乱的信息用一种清晰的方式展示。用图布局算法绘制的图形需要满足图布局的美学标准,这对算法的设计有较高的要求。

1984年,Eades提出了布局算法的弹簧模型,该模型以物理学中的“弹力”为关注点。其基本思想是将图看成一个顶点为钢环、边为弹簧的物理系统,系统被赋予某个初始状态以后,弹簧弹力的作用会导致钢环的移动,这种运动直到系统总能量减少到最小值时停止。在他的实现算法中并没有完全遵守弹性力学中的虎克定律,而是采用了自己建立的弹簧受力公式。此外,为了降低算法复杂度,假设引力作用只存在于相邻两个节点间。

此后,Fruchterman和Reingold提出了用原子引力模型代替弹簧模型的FR布局算法。通过计算节点与相邻节点之间的吸引力,以及与周围节点之间的 排斥力来决定节点的坐标。FR模型以节点之间的作用力为计算基础,因此也称为力导引模型。

Kamada和Kawai提出了能量模型,改进了Eades的弹簧模型,通过求系统总能量的最小值来确定图中节点的位置。实现该模型的算法通常称为KK算法。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

图布局算法基本上都是基于能量模型的,依赖迭代来减少系统的能量,使系统的能量尽可能接近零,因此,算法的效率也是要解决的主要问题之一。在图布局算法中还要考虑布局规模和布局约束问题,要满足实际应用的需求。Eades的弹簧算法、FR算法和KK算法是几种最著名的布局算法,但布局效果和算法效率都不是很好。



技术实现要素:

本发明的目的在于提供一种图布局的方法及装置,从而克服现有图布局方法效率低下的缺陷。

本发明实施例提供的一种图布局的方法,包括:

预设控制节点,并根据邻接关系列表确定其他节点与控制节点之间的最大跳数,邻接关系列表中存有节点之间的邻接关系;

以控制节点为圆心依次确定多个节点环,节点环的数量与最大跳数相一致,且每个节点环对应一个跳数;

依次将节点布设于与节点的跳数相对应的节点环的相应位置;

根据邻接关系列表依次连接具有邻接关系的两个节点。

在一种可能的实现方式中,依次将节点布设于与节点的跳数相对应的节点环的相应位置,包括:

确定第一节点环中第一节点相对应的、以控制节点为圆心的扇形区域,第一节点环与跳数i相对应,i为不小于零的整数且i+1不大于最大跳数;

根据邻接关系列表确定第一节点的邻居节点,并在邻居节点中选取跳数为i+1的有效邻居节点;

确定第二节点环中与扇形区域相对应的节点圆弧,第二节点环与跳数i+1相对应;

将关系数最大的第一有效邻居节点设置于节点圆弧的中间位置,并根据邻接关系列表和有效邻居节点的关系数将其他的有效邻居节点均匀分布于节点圆弧上,有效邻居节点的关系数为有效邻居节点具有的邻居节点的数量;

按照预设顺序重复上述步骤遍历第一节点环中其他节点,依次确定第一节点环中其他节点的有效邻居节点的位置;

在遍历结束后,对跳数i进行加一处理,重新确定第一节点环,并确定第一节点环第一节点环中所有节点的有效邻居节点的位置,直至确定邻接关系列表中所有节点的位置。

在一种可能的实现方式中,将关系数最大的第一有效邻居节点设置于节点圆弧的中间位置,并根据邻接关系列表和有效邻居节点的关系数将其他的有效邻居节点均匀分布于节点圆弧上,包括:

确定节点圆弧上的等分点,等分点的数量与有效邻居节点的数量相同;

当有效邻居节点的数量为奇数时,将关系数最大的第一有效邻居节点设置于节点圆弧的中间等分点所在的位置;或者,当有效邻居节点的数量为偶数时,将关系数最大的第一有效邻居节点设置于节点圆弧的两个中间等分点中一个中间等分点所在的位置;

确定第二有效邻居节点,并将第二有效邻居节点设置于与第一有效邻居节点相邻的等分点所在的位置;第二有效邻居节点为:在除第一有效邻居节点的其他有效邻居节点中,第一有效邻居节点的邻居节点和/或关系数最大的 有效邻居节点;

重复上述确定有效邻居节点的步骤,直至将所有的有效邻居节点均匀分布于节点圆弧上。

在一种可能的实现方式中,在将关系数最大的第一有效邻居节点设置于节点圆弧的中间位置,并根据邻接关系列表和有效邻居节点的关系数将其他的有效邻居节点均匀分布于节点圆弧上之前,还包括:

在当前有效邻居节点已经设置于第二节点环上时,删除已设置的当前有效邻居节点;

在当前有效邻居节点为一个或多个第二节点的邻居节点时,确定第一节点和距离第一节点最远的第二节点之间的垂直等分线,以及垂直等分线与第二节点环的交点,并将当前有效邻居节点设置于交点处;第二节点为第一节点环上除第一节点之外的其他已遍历的节点。

在一种可能的实现方式中,当i=0时,第一节点为控制节点,扇形区域的弧度为2π。

基于同样的发明构思,本发明实施例还提供一种图布局的装置,包括:

预设模块,用于预设控制节点,并根据邻接关系列表确定其他节点与控制节点之间的最大跳数,邻接关系列表中存有节点之间的邻接关系;

节点环确定模块,用于以控制节点为圆心依次确定多个节点环,节点环的数量与最大跳数相一致,且每个节点环对应一个跳数;

布设模块,用于依次将节点布设于与节点的跳数相对应的节点环的相应位置;

连接模块,用于根据邻接关系列表依次连接具有邻接关系的两个节点。

在一种可能的实现方式中,布设模块包括:

区域确定单元,用于确定第一节点环中第一节点相对应的、以控制节点 为圆心的扇形区域,第一节点环与跳数i相对应,i为不小于零的整数且i+1不大于最大跳数;

邻居节点确定单元,用于根据邻接关系列表确定第一节点的邻居节点,并在邻居节点中选取跳数为i+1的有效邻居节点;

节点圆弧确定单元,用于确定第二节点环中与扇形区域相对应的节点圆弧,第二节点环与跳数i+1相对应;

处理单元,用于将关系数最大的第一有效邻居节点设置于节点圆弧的中间位置,并根据邻接关系列表和有效邻居节点的关系数将其他的有效邻居节点均匀分布于节点圆弧上,有效邻居节点的关系数为有效邻居节点具有的邻居节点的数量;

遍历单元,用于按照预设顺序重复上述步骤遍历第一节点环中其他节点,依次确定第一节点环中其他节点的有效邻居节点的位置;

循环单元,用于在遍历结束后,对跳数i进行加一处理,重新确定第一节点环,并确定第一节点环第一节点环中所有节点的有效邻居节点的位置,直至确定邻接关系列表中所有节点的位置。

在一种可能的实现方式中,处理单元包括:

确定子单元,用于确定节点圆弧上的等分点,等分点的数量与有效邻居节点的数量相同;

第一设置子单元,用于当有效邻居节点的数量为奇数时,将关系数最大的第一有效邻居节点设置于节点圆弧的中间等分点所在的位置;或者,当有效邻居节点的数量为偶数时,将关系数最大的第一有效邻居节点设置于节点圆弧的两个中间等分点中一个中间等分点所在的位置;

第二设置子单元,用于确定第二有效邻居节点,并将第二有效邻居节点设置于与第一有效邻居节点相邻的等分点所在的位置;第二有效邻居节点为:在除第一有效邻居节点的其他有效邻居节点中,第一有效邻居节点的邻居节 点和/或关系数最大的有效邻居节点;

重复子单元,用于重复上述确定有效邻居节点的步骤,直至将所有的有效邻居节点均匀分布于节点圆弧上。

在一种可能的实现方式中,布设模块还包括:删除单元和重设单元;

在处理单元将关系数最大的第一有效邻居节点设置于节点圆弧的中间位置,并根据邻接关系列表和有效邻居节点的关系数将其他的有效邻居节点均匀分布于节点圆弧上之前,删除单元用于:在当前有效邻居节点已经设置于第二节点环上时,删除已设置的当前有效邻居节点;

重设单元用于:在当前有效邻居节点为一个或多个第二节点的邻居节点时,确定第一节点和距离第一节点最远的第二节点之间的垂直等分线,以及垂直等分线与第二节点环的交点,并将当前有效邻居节点设置于交点处;第二节点为第一节点环上除第一节点之外的其他已遍历的节点。

在一种可能的实现方式中,当i=0时,第一节点为控制节点,扇形区域的弧度为2π。

本发明实施例提供的一种图布局方法及装置,预先确定同心圆的多个节点环,且每个节点环对应一个跳数,进而将所有的节点依次布设于与节点的跳数相对应的节点环上。本方法从节点坐标初始化入手,将所有节点初步设置于相应的节点环上,从而使得节点布局尽可能符合能量模型,可以初步减少系统的能量;之后根据力导引算法优化该初始拓扑图时可以提高力导引算法的优化效率。通过依次确定第一节点的有效邻居节点,并将有效邻居节点设置于相应的节点圆弧上,可以最大限度使得具有邻接关系的节点在拓扑图中的距离最近,进一步减少了系统能量,可以减少迭代次数,进一步提高力导引算法的优化效率。通过邻接关系或关系数确定第二有效邻居节点的位置,可以使得有效邻居节点之间的布局更加合理,同样可以减少迭代次数。随时更新在第一节点环上具有多个邻居节点的有效邻居节点的位置,使得该有效邻居节点尽可能多的靠近在第一节点环上的邻居节点,从而可以进一步使得 有效邻居节点的布局更加合理,同样可以减少迭代次数,,进一步提高力导引算法的优化效率。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例中图布局的方法流程图;

图2为本发明实施例中图布局方法的第一示意图;

图3为本发明实施例中图布局方法的第二示意图;

图4为本发明实施例中图布局方法的第三示意图;

图5为本发明实施例中图布局方法的第四示意图;

图6为本发明实施例中图布局的装置的结构图;

图7为本发明实施例中布设模块的第一结构图;

图8为本发明实施例中布处理单元的结构图;

图9为本发明实施例中布设模块的第二结构图。

具体实施方式

下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件未作详细描述,以便于凸显本发明的主旨。

除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。

根据本发明实施例,提供了一种图布局的方法,图1为该方法的流程图,具体包括步骤101-104:

步骤101:预设控制节点,并根据邻接关系列表确定其他节点与控制节点之间的最大跳数,邻接关系列表中存有节点之间的邻接关系。

本发明实施例中,控制节点为最中心的节点,根据该控制节点往外扩展其他节点。节点关系列表中存有多个节点以及每个节点之间的邻接关系,根据邻接关系列表即可以确定两个节点之间是否具有邻接关系,即其中一个节点是否为另一个节点的邻居节点。具体的,以一种表格形式的节点关系列表参见表1所示,表格1示出了16个节点(0-15)的邻接关系,其中1代表有 邻接关系,0代表无邻接关系,符号代表暂不考虑两个节点的邻接关系。

表1

步骤102:以控制节点为圆心依次确定多个节点环,节点环的数量与最大跳数相一致,且每个节点环对应一个跳数。

本发明实施例中,在设置控制节点后,将其他节点布设于以控制节点为圆心的节点环上;同时,节点环的数量与最大跳数相一致,每个节点环对应一个跳数,跳数越大,节点环的半径越大。本发明实施例中的“跳数”是指“与控制节点之间的跳数”,最大跳数即为在所有的节点与控制节点之间的跳数中的最大值。节点环均以控制节点为圆心,即多个节点环为同心圆,且最外圈的节点环与最大跳数相对应。

步骤103:依次将节点布设于与节点的跳数相对应的节点环的相应位置。

具体的,如上所述,每个节点环对应一个跳数,而每个节点与控制节点之间的跳数是确定的,故可以确定将节点设置于相应的节点环上。如表1所示,假设控制节点为节点0,根据表1可知节点1、2、3、4、5为节点0的邻居节点,即节点1、2、3、4、5与控制节点之间的跳数均为1,则可以将节点 1、2、3、4、5均设置于同一个节点环上,具体参见图2所示。

步骤104:根据邻接关系列表依次连接具有邻接关系的两个节点。

在将所有节点布设于相应的节点环之后,根据邻接关系列表即可以确定具有邻接关系的两个节点,之后将具有邻接关系的两个节点进行连接,即可以确定所有节点的初始拓扑图。在确定初始拓扑图后,即可以根据力导引算法优化该初始拓扑图。

本发明实施例提供的一种图布局方法,预先确定同心圆的多个节点环,且每个节点环对应一个跳数,进而将所有的节点依次布设于与节点的跳数相对应的节点环上。本方法从节点坐标初始化入手,将所有节点初步设置于相应的节点环上,从而使得节点布局尽可能符合能量模型,可以初步减少系统的能量;之后根据力导引算法优化该初始拓扑图时可以提高力导引算法的优化效率。

在一种可能的实现方式中,步骤103中“依次将节点布设于与节点的跳数相对应的节点环的相应位置”具体包括步骤A1-A6:

步骤A1:确定第一节点环中第一节点相对应的、以控制节点为圆心的扇形区域,第一节点环与跳数i相对应,i为不小于零的整数且i+1不大于最大跳数。

本发明实施例中,第一节点环为节点环中的一个节点环,其与跳数i相对应,即第一节点环上布设的节点均为与控制节点之间的跳数为i的节点。本发明实施例中,i为不小于零的整数且i+1不大于最大跳数,即0≤i≤Max-1,其中,Max即为最大跳数。

同时,第一节点为第一节点环上的一个节点,即第一节点与控制节点之间的跳数为i。每个节点对应唯一的扇形区域,该扇形区域用于确定每个节点的下一跳邻居节点的布设位置;该扇形区域的圆心为控制节点,且第一节点环在该扇形区域内只存在该第一节点。具体的,可以将在第一节点环上与第一节点相邻的节点与该第一节点之间的射线作为该扇形区域的边。参见图3 所示,第一节点环为图3中的较小圆,设第一节点为图3中的节点1,则在第一节点环上与第一节点(即节点1)相邻的节点为节点3和节点4,则将节点3与第一节点(即节点1)之间的一条射线作为扇形区域的边(如图3中的虚线所示),将节点4与第一节点(即节点1)之间的另一条射线作为扇形区域的边;图3中的P1即为与节点1相对应的扇形区域。

同时,当i=0时,第一节点为控制节点,此时与第一节点相对应的扇形区域的弧度为2π,即360°。如图2所示,节点0为控制节点;该控制节点相对应的扇形区域即为整个圆圈,在之后的步骤A3中确定的节点圆弧即为整个圆。

步骤A2:根据邻接关系列表确定第一节点的邻居节点,并在邻居节点中选取跳数为i+1的有效邻居节点。

本发明实施例中,由于第一节点的跳数为i,故第一节点的邻居节点的跳数最大为i+1,该邻居节点的跳数也可能为i或i-1等,由于跳数为i或更小的邻居节点已经布设在相应的节点环上,故步骤A2中对此类邻居节点不予考虑,故需要选取出在下一层的节点环(即与跳数i+1相对应的节点环,即下文中的第二节点环)布设的节点,即跳数为i+1的有效邻居节点。

以图3以及表1为例,当第一节点为节点1时,此时i=1。根据上述的表1可知,节点1的邻居节点包括节点0、3、4、6、7、9,由于节点0为控制节点,节点3、4均已设置于第一节点环上,故不予考虑;故节点1的有效邻居节点为节点6、7、9。

步骤A3:确定第二节点环中与扇形区域相对应的节点圆弧,第二节点环与跳数i+1相对应。

本发明实施例中,扇形区域以控制节点为圆心,故该扇形区域与第一节点环和第二节点环均有相交的圆弧,扇形区域与第一节点环相交的圆弧中只有第一节点,而扇形区域与第二节点环相交的圆弧即为步骤A3中的节点圆弧,用于设置第一节点的有效邻居节点。

具体的,参见图3所示,第二节点环为较大的圆环。第一节点环设有五个节点,分别为节点1、2、3、4、5,每个节点对应自己的扇形区域,即图3中的P1、P2、P3、P4、P5,相应的扇形区域分割第二节点环后即可以确定相应的节点圆弧。以节点1为例,将有效邻居节点6、7、9设置在相应的节点圆弧上;其中,图3中此段节点圆弧上的节点7和节点9为之后需要消除的节点,故图3中添加了X号。

步骤A4:将关系数最大的第一有效邻居节点设置于节点圆弧的中间位置,并根据邻接关系列表和有效邻居节点的关系数将其他的有效邻居节点均匀分布于节点圆弧上,有效邻居节点的关系数为有效邻居节点具有的邻居节点的数量。

本发明实施例中,首先确定每个节点的关系数,根据关系数的大小即可进行排序,当关系数相同时,可以随机排序或者根据节点序号进行排序;某一节点的关系数越大,说明有越多的其他节点与该节点有邻接关系,则需要优先设置该关系数大的节点。仍然以表1和图3为例,由于节点6、7、9的邻居节点数分别为4、2、4,即关系数分别为4、2、4;故可以将节点6作为关系数最大的第一有效邻居节点,并将节点6设置于节点圆弧的中间位置,具体参见图3所示。同时,根据邻接关系列表和有效邻居节点的关系数将其他的有效邻居节点均匀分布于节点圆弧上,下文对此进行详细介绍。

步骤A5:按照预设顺序重复上述步骤遍历第一节点环中其他节点,依次确定第一节点环中其他节点的有效邻居节点的位置。

本发明实施例中,在步骤A1-A4中即可以确定第一节点环中的一个节点(即第一节点)的所有有效邻居节点,由于第一节点环可能设有多个节点,故需要重复步骤A1-A4,遍历第一节点环中其他节点,直至确定所有有效邻居节点的位置,即确定第二节点环上所有节点的位置。

步骤A6:在遍历结束后,对跳数i进行加一处理,重新确定第一节点环,并确定第一节点环第一节点环中所有节点的有效邻居节点的位置,直至确定 邻接关系列表中所有节点的位置。

由于存在多个节点环,在确定第二节点环之后,还需要对i进行加一处理,重新确定第一节点环(即上述的第二节点环),再次循环执行步骤A1-A4,确定该第二节点环上所有节点的有效邻居节点,并故将所有的有效邻居节点设置于该第二节点环的下一层节点环上。重复上述步骤,直至确定邻接关系列表中所有节点的位置。在确定所有节点位置后,即可以确定节点的初始拓扑图。

本发明实施例提供的图布局方法,通过依次确定第一节点的有效邻居节点,并将有效邻居节点设置于相应的节点圆弧上,可以最大限度使得具有邻接关系的节点在拓扑图中的距离最近,进一步减少了系统能量,可以减少迭代次数,进一步提高力导引算法的优化效率。

在一种可能的实现方式中,上述步骤A4中“将关系数最大的第一有效邻居节点设置于节点圆弧的中间位置,并根据邻接关系列表和有效邻居节点的关系数将其他的有效邻居节点均匀分布于节点圆弧上”,具体包括步骤B1-B4:

步骤B1、确定节点圆弧上的等分点,等分点的数量与有效邻居节点的数量相同。

本发明实施例中,节点圆弧上的等分点用于设置相应的有效邻居节点。参见图3所示,对于节点1的节点圆弧,由于节点1具有是哪个有效邻居节点,故需要将节点圆弧进行四等分,以确定三个等分点;等分点的位置具体参见图3中节点6、7、9的位置。

步骤B2、当有效邻居节点的数量为奇数时,将关系数最大的第一有效邻居节点设置于节点圆弧的中间等分点所在的位置;或者,当有效邻居节点的数量为偶数时,将关系数最大的第一有效邻居节点设置于节点圆弧的两个中间等分点中一个中间等分点所在的位置。

本发明实施例中,当有效邻居节点的数量为奇数时,则可以将第一有效邻居节点设置在最中间的位置,即中间等分点所在的位置。当有效邻居节点 的数量为偶数时,在节点圆弧中间位置有两个等分点,可以选择其中一个等分点作为第一有效邻居节点所设置的位置。

步骤B3、确定第二有效邻居节点,并将第二有效邻居节点设置于与第一有效邻居节点相邻的等分点所在的位置;第二有效邻居节点为:在除第一有效邻居节点的其他有效邻居节点中,第一有效邻居节点的邻居节点和/或关系数最大的有效邻居节点。

本发明实施例中,第二有效节点为在除第一有效邻居节点的其他有效邻居节点中,第一有效邻居节点的邻居节点;或者,第二有效节点为在除第一有效邻居节点的其他有效邻居节点中关系数最大的有效邻居节点;或者,第二有效节点为在除第一有效邻居节点的其他有效邻居节点中,即是第一有效邻居节点的邻居节点、且又是关系数最大的有效邻居节点。具体的,在步骤B2中确定第一有效邻居节点后,可以确定该第一有效邻居节点的邻居节点,将该邻居节点作为第二有效邻居节点;当在有效邻居节点中不存在第一有效邻居节点的邻居节点时,即可以将关系数最大的有效邻居节点作为第二有效邻居节点。

如表1和图3所示,节点6为第一有效邻居节点,根据表1可知,节点6的邻居节点为1、10、11,而有效邻居节点为节点7和9,故在有效邻居节点中不存在第一有效邻居节点的邻居节点,此时根据关系数大小对节点7和9进行分布。若节点7为节点6的邻居节点,则优先设置节点7,在确定节点7后再设置节点9。

步骤B4、重复上述确定有效邻居节点的步骤,直至将所有的有效邻居节点均匀分布于节点圆弧上。

上述步骤B2-B3用于确定有效邻居节点的位置,在步骤B4中重复执行步骤B2-B3,由于只存在一个最大关系数的第一有效邻居节点,故只需要执行一次步骤B2,循环执行步骤B3即可,进而将确定所有有效邻居节点的位置。

本发明实施例提供的图布局方法,通过邻接关系或关系数确定第二有效 邻居节点的位置,可以使得有效邻居节点之间的布局更加合理,同样可以减少迭代次数。

在一种可能的实现方式中,在上述步骤A4“将关系数最大的第一有效邻居节点设置于节点圆弧的中间位置,并根据邻接关系列表和有效邻居节点的关系数将其他的有效邻居节点均匀分布于节点圆弧上”之前,还包括步骤C1-C2:

步骤C1、在当前有效邻居节点已经设置于第二节点环上时,删除已设置的当前有效邻居节点。

本发明实施例中,由于需要按照步骤A5中的遍历操作依次确定第一节点环中所有节点的有效邻居节点,故在执行遍历过程中,可能存在当前的有效邻居节点已经在之前的遍历过程中设置在第二节点环上,故需要删除在之间遍历过程中已设置的当前有效邻居节点。

参见图3和表1所示,第一节点环为内圈的圆环。若步骤A5中的预设顺序为逆时钟顺序,且先确定节点1的有效邻居节点,之后依次确定节点3、2、5、4的有效邻居节点。在确定节点3的有效邻居节点时,根据表1可知节点3的有效邻居节点为节点8和9;由于节点9已经设置在第二节点环中与扇形区域P1相对应的节点圆弧上,故需要删除与扇形区域P1相对应的节点圆弧上的节点9,重新在节点3对应的节点圆弧上确定节点9的位置。

步骤C2、在当前有效邻居节点为一个或多个第二节点的邻居节点时,确定第一节点和距离第一节点最远的第二节点之间的垂直等分线,以及垂直等分线与第二节点环的交点,并将当前有效邻居节点设置于交点处;第二节点为第一节点环上除第一节点之外的其他已遍历的节点。

本发明实施例中,第二节点为第一节点环上除第一节点之外的其他已遍历的节点。若当前有效邻居节点为已经遍历的第二节点的邻居节点,则在确定第二节点的有效邻居节点时已经将该当前有效邻居节点设置在第二节点环上。故在确定第一节点的有效邻居节点时,由于当前有效邻居节点是有效邻 居节点的一个,即其也为第一节点的邻居节点,即该当前有效邻居节点同时为第一节点和第二节点的邻居节点;或者说,在步骤C1中确定已经存在当前有效邻居节点已经设置过时,则可以确定在步骤C2中一定存在第二节点。此时确定第一节点和距离第一节点最远的第二节点之间的垂直等分线,以及垂直等分线与第二节点环的交点;将当前有效邻居节点设置于交点处。由于该垂直等分线与第二节点环有两个交点,故具体可以将当前有效邻居节点设置于距离第一节点较近的交点处。

具体的,仍然以步骤C1中所示的例子为例,在删除与扇形区域P1相对应的节点圆弧上的节点9后,由于节点9即为节点1的邻居节点,也为节点3的邻居节点;此时距离第一节点最远的第二节点即为节点1,故确定节点1和界定啊3之间的垂直等分线,并确定与第二节点环的交点,将节点9设置于该交点处,具体参见图3所示。

本发明实施例提供的一种图布局方法,随时更新在第一节点环上具有多个邻居节点的有效邻居节点的位置,使得该有效邻居节点尽可能多的靠近在第一节点环上的邻居节点,从而可以进一步使得有效邻居节点的布局更加合理,同样可以减少迭代次数,,进一步提高力导引算法的优化效率。

优选的,该当前有效邻居节点包括上述的第一有效邻居节点或第二有效邻居节点。本发明实施例中,在确定有效邻居节点的位置之前,均需要执行步骤C1-C2。即在上述的步骤B2和B3之前,需要执行步骤C1-C2。

下面通过一个实施例详细介绍图布局的方法流程。

在本发明实施例中,邻接关系列表参见表1所示,控制节点为节点0,则设置拓扑图的过程具体如下:

首先,设置第一个节点环,即i=0。此时参见图2所示,与控制节点相对应的扇形区域的弧度为2π,即节点圆弧为整个圆圈,第一个节点环设置跳数为1的节点,即控制节点的邻居节点。之后确定节点圆弧上的等分点;确定圆圈上的五个等分点。首先将将关系数最大的节点1放在该圆的一个等分点 上,根据表1确定节点1的邻居节点,其中节点3、4的跳数为1;选择在邻接关系列表中靠前的节点3放在节点1的左侧。

其次放关系数较小的节点2:可知该节点2有3、5两个跳数为一的邻居节点,由于节点3已分布在圆上,则节点2放在其旁边;接着放节点4,可知节点4有1、5两个跳数为一的邻居节点,则根据该两点与已布点的邻接关系决定节点4和5的位置。此时控制节点的一跳节点均已分布在第一圈圆上。

此时,由于只有一个控制节点,故不需要执行遍历操作,直接将第一个圆圈作为第一节点环进行下一步操作。

参见图3所示,首先以圆心为顶点,过第一节点环上两相邻节点的中心画射线把第二节点环等分,用来分布第一节点环上第一节点的邻居节点。

首先将关系数最大的节点1作为第一节点,查看节点1的邻接关系表,可知该节点1有3、4、6、7、9共五个邻居节点,其中3、4节点已分布在第一节点环上则不再考虑这两点,故有效邻居节点为节点6、7、9;节点6是跳数为二中的关系数最大的邻居节点,放在以圆心为顶点过节点1的射线与第二节点环的交点的位置,其他跳数为二的邻居节点则按照邻接关系表的顺序平均分布在该节点的周围,分布的范围为图3中的扇形区域P1相对应的节点圆弧。

以第一节点环中的最大关系数节点1为起点,逆时针遍历跳数为一的节点3、2、5、4,查看节点的邻接关系表。若检测出其邻居节点已分布在本圈圆上,则清除该节点的位置。

具体的,参见图3,可知从节点3开始安放其有效邻居节点,其跳数为二的有效邻居节点有8、9,可知其最大关系数邻居节点8与已经遍历过的第一圈的节点1无邻接关系,则将节点8放在以圆心为顶点过节点3的射线与第二圈圆的交点的位置;节点9与已遍历的第一节点环中的节点1有邻接关系,清除节点9在本圈圆的位置,以节点1和3两个点为底做顶点位于本圆上的等腰三角形,顶点的位置即为该节点9的位置,至此节点3的邻居节点已完 成布点。

其次安放节点2的邻居节点,其二跳有效邻居节点有7、10、11,其中最大关系数节点7也是节点1的邻居节点,则清除节点7在第二节点环的位置,以节点1和2两个点为底做顶点位于第二节点环上的等腰三角形,顶点的位置即为该节点7的位置;同时,可知节点7的位置与节点8重合,则放在节点8的旁边;10和11节点则按照邻接关系表的顺序平均分布在该节点的周围,分布的范围为图3中的扇形区域P3。

接着安放节点5的有效邻居节点,其二跳邻居节点有10、11,其中最大关系数节点10与节点2有邻接关系,则清除节点10在第二节点环的位置,以节点1和2两个点为底做顶点位于第二节点环上的等腰三角形,顶点的位置既为该节点10的位置;同时节点11仍与节点2有邻接关系,则按照同样的方法布点,可知节点11与10的位置相同,则将节点11放在节点10的旁边,并保证该节点11在图3中的扇形区域P4内。

最后安放节点4的邻居节点,其二跳有效邻居节点有11、12,其中最大关系数节点11与节点2和5均有邻接关系,则清除节点11在第二节点环的位置,以距离最远的两个节点2和4为底做顶点位于第二节点环上的等腰三角形,顶点的位置既为该点的位置,节点12则放在图3中的扇形区域P5内。至此已完成全部二跳节点的布点。

之后重复上述步骤,本发明实施例中,为方便说明,将与跳数3相对应的节点环作为第三节点环。参见图4所示,首先以圆心为顶点,过里圈圆上两相邻节点的中心画射线把第三节点环等分,来分布第二节点环节点的邻居节点。

查看第二节点环上节点的邻接关系表,以本圈最大关系数节点6开始逆时针遍历第二节点环上的节点,可知节点6的邻居有1、13、14,其中节点1为第一节点环节上的点,故忽略该节点,节点13和14均匀分布在该节点所对应的圆弧上,参见图4的扇形区域P6。其次查看节点9的邻居列表,其邻 居节点有1、3、13、15,节点1和3为第一节点环上的节点,故忽略该节点,节点13与里圈节点6有邻接关系,则以节点6和9为底做顶点位于第三节点环上的等腰三角形,顶点的位置即为该点的位置,节点15则安放在参见图4的相应节点圆弧上。之后再查看第二节点环上其他节点的邻居节点,若邻居节点为里圈节点(即第一节点环或第二节点环上的几点)则忽略该节点,若邻居节点与本圈已遍历过的节点有邻接关系,以距离最远的两个节点为底做顶点位于本圆上的等腰三角形,顶点的位置既为该点的位置,若无邻接关系则将节点均匀分布在该节点所对应的圆弧上。直至第二节点环节点均已遍历完,此时第二节点环上节点的邻居节点均已完成布点。

继续查看最外圈圆(此时为第三节点环)上的节点的邻接关系表,直至圈数与最长跳数相同,此时所有节点位置均已确定。此时依次连接具有邻接关系的两个节点,完成了拓扑图的初始化,参见图5所示。

优选的,本发明实施例中,在确定初始拓扑图后,还包括:结合力导引算法优化初始拓扑图。拓扑维护阶段需要涉及一种控制消息数据包,即拓扑更新包。具体的,结合力导引算法优化初始拓扑图,包括步骤D1-D3:

步骤D1、计算每次迭代局部区域内两两节点间的斥力所产生的单位位移(一般为正值)。

步骤D2、计算每次迭代每条边的引力对两端节点所产生的单位位移(一般为负值)。

上述的斥力和引力系数直接影响到最终态的理想效果,它与节点间的距离、节点在系统所在区域的平均单位区域均有关,需要开发人员在实践中不断调整。

步骤D3、累加经过上述步骤计算得到的所有节点的单位位移;迭代n次,直至达到理想效果。

本发明实施例提供的一种图布局方法,预先确定同心圆的多个节点环,且每个节点环对应一个跳数,进而将所有的节点依次布设于与节点的跳数相 对应的节点环上。本方法从节点坐标初始化入手,将所有节点初步设置于相应的节点环上,从而使得节点布局尽可能符合能量模型,可以初步减少系统的能量;之后根据力导引算法优化该初始拓扑图时可以提高力导引算法的优化效率。通过依次确定第一节点的有效邻居节点,并将有效邻居节点设置于相应的节点圆弧上,可以最大限度使得具有邻接关系的节点在拓扑图中的距离最近,进一步减少了系统能量,可以减少迭代次数,进一步提高力导引算法的优化效率。通过邻接关系或关系数确定第二有效邻居节点的位置,可以使得有效邻居节点之间的布局更加合理,同样可以减少迭代次数。随时更新在第一节点环上具有多个邻居节点的有效邻居节点的位置,使得该有效邻居节点尽可能多的靠近在第一节点环上的邻居节点,从而可以进一步使得有效邻居节点的布局更加合理,同样可以减少迭代次数,,进一步提高力导引算法的优化效率。

以上详细介绍了一种图布局的方法流程,该方法也可以通过相应的装置实现,下面详细介绍该装置的结构和功能。

本发明实施例提供的一种图布局的装置,参见图6所示,包括:

预设模块61,用于预设控制节点,并根据邻接关系列表确定其他节点与控制节点之间的最大跳数,邻接关系列表中存有节点之间的邻接关系;

节点环确定模块62,用于以控制节点为圆心依次确定多个节点环,节点环的数量与最大跳数相一致,且每个节点环对应一个跳数;

布设模块63,用于依次将节点布设于与节点的跳数相对应的节点环的相应位置;

连接模块64,用于根据邻接关系列表依次连接具有邻接关系的两个节点。

在一种可能的实现方式中,参见图7所示,布设模块63包括:

区域确定单元631,用于确定第一节点环中第一节点相对应的、以控制节点为圆心的扇形区域,第一节点环与跳数i相对应,i为不小于零的整数且i+1 不大于最大跳数;

邻居节点确定单元632,用于根据邻接关系列表确定第一节点的邻居节点,并在邻居节点中选取跳数为i+1的有效邻居节点;

节点圆弧确定单元633,用于确定第二节点环中与扇形区域相对应的节点圆弧,第二节点环与跳数i+1相对应;

处理单元634,用于将关系数最大的第一有效邻居节点设置于节点圆弧的中间位置,并根据邻接关系列表和有效邻居节点的关系数将其他的有效邻居节点均匀分布于节点圆弧上,有效邻居节点的关系数为有效邻居节点具有的邻居节点的数量;

遍历单元635,用于按照预设顺序重复上述步骤遍历第一节点环中其他节点,依次确定第一节点环中其他节点的有效邻居节点的位置;

循环单元636,用于在遍历结束后,对跳数i进行加一处理,重新确定第一节点环,并确定第一节点环第一节点环中所有节点的有效邻居节点的位置,直至确定邻接关系列表中所有节点的位置。

在一种可能的实现方式中,参见图8所示,处理单元634包括:

确定子单元6341,用于确定节点圆弧上的等分点,等分点的数量与有效邻居节点的数量相同;

第一设置子单元6342,用于当有效邻居节点的数量为奇数时,将关系数最大的第一有效邻居节点设置于节点圆弧的中间等分点所在的位置;或者,当有效邻居节点的数量为偶数时,将关系数最大的第一有效邻居节点设置于节点圆弧的两个中间等分点中一个中间等分点所在的位置;

第二设置子单元6343,用于确定第二有效邻居节点,并将第二有效邻居节点设置于与第一有效邻居节点相邻的等分点所在的位置;第二有效邻居节点为:在除第一有效邻居节点的其他有效邻居节点中,第一有效邻居节点的邻居节点和/或关系数最大的有效邻居节点;

重复子单元6344,用于重复上述确定有效邻居节点的步骤,直至将所有的有效邻居节点均匀分布于节点圆弧上。

在一种可能的实现方式中,参见图9所示,布设模块63还包括:删除单元637和重设单元638;

在处理单元634将关系数最大的第一有效邻居节点设置于节点圆弧的中间位置,并根据邻接关系列表和有效邻居节点的关系数将其他的有效邻居节点均匀分布于节点圆弧上之前,删除单元637用于:在当前有效邻居节点已经设置于第二节点环上时,删除已设置的当前有效邻居节点;

重设单元638用于:在当前有效邻居节点为一个或多个第二节点的邻居节点时,确定第一节点和距离第一节点最远的第二节点之间的垂直等分线,以及垂直等分线与第二节点环的交点,并将当前有效邻居节点设置于交点处;第二节点为第一节点环上除第一节点之外的其他已遍历的节点。

在一种可能的实现方式中,当i=0时,第一节点为控制节点,扇形区域的弧度为2π。

本发明实施例提供的一种图布局方法及装置,预先确定同心圆的多个节点环,且每个节点环对应一个跳数,进而将所有的节点依次布设于与节点的跳数相对应的节点环上。本方法从节点坐标初始化入手,将所有节点初步设置于相应的节点环上,从而使得节点布局尽可能符合能量模型,可以初步减少系统的能量;之后根据力导引算法优化该初始拓扑图时可以提高力导引算法的优化效率。通过依次确定第一节点的有效邻居节点,并将有效邻居节点设置于相应的节点圆弧上,可以最大限度使得具有邻接关系的节点在拓扑图中的距离最近,进一步减少了系统能量,可以减少迭代次数,进一步提高力导引算法的优化效率。通过邻接关系或关系数确定第二有效邻居节点的位置,可以使得有效邻居节点之间的布局更加合理,同样可以减少迭代次数。随时更新在第一节点环上具有多个邻居节点的有效邻居节点的位置,使得该有效邻居节点尽可能多的靠近在第一节点环上的邻居节点,从而可以进一步使得 有效邻居节点的布局更加合理,同样可以减少迭代次数,,进一步提高力导引算法的优化效率。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1