基于力引导的点布局优化算法的制作方法

文档序号:16275890发布日期:2018-12-14 22:34阅读:605来源:国知局
基于力引导的点布局优化算法的制作方法

本发明属于可视化数据技术领域,尤其涉及基于力引导的点布局优化算法。

背景技术

力导向算法是指通过对每个节点的计算,算出引力和排斥力综合的合力,再由此合力来移动节点的位置。

对适用于一般网状结构数据绘图的算法来说,力导向算法是一种常被应用的方法。通过对每个节点的计算,算出引力和排斥力综合的合力,再由此合力来移动节点的位置。执行一次后根据节点新位置算出新的能量值,如同力学概念,能量值越小,表示整个网络越趋于稳定。一般来说能量值越小,网络图的配置显示就会越清晰,因此当能量值到达最小值的时候,网状图的配置状态就是我们想要的结果。

这种方法的缺点是不收敛,总是有节点在两个不同位置上来回振动,虽然不会收敛,但是来回振动时的配置通常也最终可达到某种稳定的状态,因此实际的执行都以指定执行的次数来决定停止的条件。另外一个问题就是网状图的节点数太多时,也无法求得令人满意的结果。

当开始配置不好的情况下,通常是力导向算法的配置结果也不是很好,所以使用力导向算法通常会配合一个初始配置的算法,以达成较满意的网状配置。

多级算法最重要的是代表节点的选择,这样就会直接影响到执行效率和结果。

力导向算法的想法很简单,且容易使用和修改以满足需求。我们可更改网状图的初始位置以加快收敛,也可根据不同的要求加入不同种类的力,另外,算法过程中虽然没有特别针对网状图的对称性进行配置,但是当网状图中存在对称关系时也能获得较好的结果。力导向算法的缺陷是在初始配置不佳的时候所得到的网状图也不会很好,所以可根据网状数据的特性是否选择该算法。

经典的力导向布局算法在网络可视化领域内有着极为广泛的应用,算法规定:在任意两个节点间都存在电荷斥力作用,在任意相连的两个节点间都存在弹簧引力作用。但也存在一些不足之处,比如,在一次迭代中,要计算节点受到的力的作用时,需要该节点与其他所有节点的距离与电荷斥力的大小,如此一来,造成算法在每一次迭代中花费较长的时间。再者,布局的原始状态下,所有节点是随机分布的,从而导致随机状态下的布局距离布局达到稳定态需要经历较多的迭代次数。另外,在节点数量较大的复杂网络中,有较高的可能性出现大量边与边交错,难以看清的问题。

申请号为201611249511.2的专利公开了网络拓扑自适应的数据可视化方法及装置,该网络拓扑自适应的数据可视化方法包括:对节点进行预处理,输出预处理节点;采用力引导布局算法对所述预处理节点进行处理,形成初始网络拓扑图;对所述初始网络拓扑图中重叠的预处理节点进行去重处理,输出去重节点;基于所述去重节点形成目标网络拓扑图。该网络拓扑自适应的数据可视化方法可实现数据可视化自动化,简化数据可视化处理流程,无需人工干预,可有效节省人工干预成本,并提高处理效率。但是该算法迭代次数多,迭代周期长。



技术实现要素:

本发明的目的在于公开迭代次数少,扩展性强的基于力引导的点布局优化算法。

本发明的目的是这样实现的:

基于力引导的点布局优化算法,包含如下步骤:

步骤(1):定义无向图g=(v,e)由节点集合v与边集合e组成,节点集合v={vi|1≤i≤n},n>0;边集合e={ei|0≤i≤m},m≥0;vi是无向图g的节点,ei是无向图g的边;

定义若节点vi,vj∈v,j∈[1,n],且vi,vj∈e,则节点vi,vj是相邻的;定义若两条边公用同一节点,那么这两条边是相邻的;n表示节点的数量,m表示边的数量;

步骤(2):将吸引力的大小设置为mm(t)μ,μ=0.9;

ma(t)=2m(t)0.9m2

mr(t)=m(t)n(n-1);

f(t)=2m(t)0.9m2-m(t)n(n-1);

上式中,ma(t)是系统中吸引力的总大小,mr(t)是系统中排斥力的总大小,f(t)是总量级函数;

步骤(3):设t=tp时刻,总量级函数f(t)等于0;

t为算法迭代的次数,t∈[1,+∞);

定义t=0时,m(0)=1/m;

t>1时,m(t)单调递增;m(1)<m(tp);

步骤(4):设算法聚集阶段迭代的总数为s,算法分裂阶段迭代的总数为b,且0<s<b。

用m,n,t和s表示m(t):

步骤(5):计算吸引力和排斥力在x轴方向和y轴方向上的分量:

上式中,fa(vi,t).x表示笛卡尔坐标空间内x轴方向上的吸引力,fa(vi,t).y表示笛卡尔坐标空间内y轴方向上的吸引力,θij(t)表示在第t次迭代时x轴与连接顶点vi和vj的直线之间的夹角;aij属于邻接矩阵a,aij=1表示节点vi,vj相邻;aij=0表示节点vi,vj不相邻;

上式中,fr(vi,t).x表示笛卡尔坐标空间内x轴方向上的排斥力,fr(vi,t).y表示笛卡尔坐标空间内y轴方向上的排斥力;

步骤(6):由vi(t).x和vi(t).y获取迭代后节点vi的坐标:

第t次迭代时节点vi在x轴方向上受到的合力vi(t).x:

vi(t).x=fa(vi,t).x+fr(vi,t).x;

第t次迭代时节点vi在y轴方向上受到的合力vi(t).y:

vi(t).y=fa(vi,t).y+fr(vi,t).y;

由vi(t).x和vi(t).y更新节点vi的坐标;

步骤(7):当t=s+b时,迭代停止。

本发明的有益效果为:

本发明解决了传统算法中迭代次数太多和迭代周期长的问题,还解决了在节点数量较大的复杂网络中大量边与边交错,难以看清的问题。与传统算法相比,本发明具有更好的扩展性。

附图说明

图1是基于力引导的点布局优化算法在m=4,n=4,在m(t)=t时f(t)的变化情况;

图2为力引导的点布局优化算法与fr算法交叉边数量对比图;

图3为力引导的点布局优化算法与fr算法边长标准差对比图;

图4为力引导的点布局优化算法与fr算法节点间最小距离对比图;

图5为力引导的点布局优化算法与fr算法节点分布对比图;

图6为力引导的点布局优化算法与fr算法交迭代时间对比图;

图7为力引导的点布局优化算法对8*8的普通随机网络图的应用;

图8为fr算法对8*8的普通随机网络图的应用;

图9为力引导的点布局优化算法对15*5的queengraph网络图的应用;

图10为fr算法对15*5的queengraph网络图的应用。

具体实施方式

下面结合附图来进一步描述本发明:

基于力引导的点布局优化算法,宏观上分为两个阶段,即聚集阶段和分裂阶段。

定义无向图g=(v,e)是由节点集合v与边集合e组成,节点集合v={vi|1≤i≤n},其中n>0,边集合e={ei|0≤i≤m},其中m≥0,vi和ei分别是图g的节点和边。节点{vi,vj}∈v,若{vi,vj}∈e,那么这两节点是相邻的。若两条边公用同一节点,那么这两条边是相邻的。

定义邻接矩阵a中,使用0或1表示两节点是否相邻,若相邻,即{vi,vj}∈e,那么(a)ij=1;若不相邻,那么(a)ij=0。

为了简单起见,在本章的剩余部分将无向图简单地称为图。通过图形的布局,已知给定的平面图区域内所有节点的位置,即x坐标和y坐标。假设吸引力和排斥力定义在一对节点之间,并且将图看作是一个物理系统,那么经典的力引导的布局算法从一个随机的初始布局开始,然后迭代地找到一个总能量最小的布局,对应于系统的机械平衡状态。使用变量t来表示算法迭代的次数,其中t∈[1,+∞)。

本发明用fa(vi,t)表示在力导向布局算法的第t次迭代时,节点vi的相邻节点对vi的总吸引力。类似的,用fr(vi,t)表示在第t次迭代时,vi受到的其他节点的总排斥力。由于力是具有大小和方向的矢量,所以使用fa(vi,t).x,fa(vi,t).y,fr(vi,t).x,fr(vi,t).y分别描述笛卡尔坐标空间内x轴方向和y轴方向上的吸引力fa(vi,t)和排斥力fr(vi,t),同理,vi(t).x与vi(t).y分别表示第t次迭代时节点vi在x轴方向和y轴方向上受到的合力。

与fr算法类似,本算法需要计算相连节点之间的吸引力和任意一对节点之间的排斥力。在聚集和分裂的任意特定迭代t时刻,任意两个顶点之间的排斥力大小是一致的,定义h(t)>0,h(t)随着迭代次数t的增长而单调递增。类似地,在任意特定迭代t时刻,任何一对相邻顶点之间的吸引力也具有相同的计算函数g(t)>0,g(t)随着迭代次数t的增加而单调递增。也就是说,与fr算法相比,本算法采取了简化的算法,即顶点之间的吸引力和排斥力的大小不取决于它们之间的距离。

首先,设法让吸引力在第一次迭代中成为系统中的主要作用力,使得相连接的节点在布局中彼此吸引,靠近。然后,随着迭代次数的增加,设法让排斥力以一个较快的增长速度追赶并超越吸引力,并使得顶点相互排斥,远离。想要达到这种效果,可以通过使一对顶点之间的吸引力的大小比排斥力的大小增长慢来实现。在此次工作中,本文将吸引力的大小设置为mm(t)μ,参数μ可以在实验过程中调整为适当大小的值,在此处将其暂定为0.9。

在这样的参数大小选择下,在某次特定的迭代t时刻,系统中的吸引力的总大小ma(t)和排斥力的总大小mr(t)以及吸引力与排斥力的差值f(t)=ma(t)-mr(t),使用下列等式定义,其中f(t)为总量级函数:

ma(t)=2m(t)0.9m2

mr(t)=m(t)n(n-1);

f(t)=2m(t)0.9m2-m(t)n(n-1);

如图1,x轴上方部分的曲线代表当吸引力强于排斥力时的情况,此时吸引力是两种力中较强的作用力,相互连接的节点在布局上彼此靠近,此时处于算法的“聚集”阶段。但是,有些节点可能会彼此靠得太近,从而出现重叠的情况,使得这个阶段的布局结果在可视化美学标准上是不可接受的,因此算法还需要继续迭代。x轴下方部分的曲线代表了当排斥力强于吸引力时的情况,此时排斥力是两种力间较强的力量,并且增长速度比吸引力更快时,表示当顶点被间隔开用来实现美观的布局结果时,正是算法的“分裂”阶段。

聚集阶段和分裂阶段过渡的转折点是当总量级函数f(t)变为零时。如果发生在t=tp时刻,那么m(tp)被定义为下列等式中所示的值。对于任意一个n>2,m≥n的图g,m(tp)>1。因此,通过选取函数,令t从1开始,使得m(1)<m(tp),然后m(t)开始单调递增。在第一次迭代时,算法的聚集阶段开始,互连的顶点的由于吸引力的作用被拉进,然后,当m(t)变得大于m(tp)时,到了算法的分裂阶段,节点在排斥力的作用下被分离开来。

本算法m(t)函数的选择应该是一个单调递增的函数,在图1可以看出,若网络图g中m=4,n=4,即节点与边的数量皆为4,当排斥力的大小“追赶上”吸引力的大小时,已经经历了18000多次迭代,如此高的迭代字数显然是不能被接受的,因此需要调整m(t)函数中关于t的阶数,在调整算法参数的同时,通过初步实验发现,aggregation-division算法在经历相对较短的聚集阶段和经历较长的分裂阶段之后产生了较为美观的可视化效果。因此,如果预先确定迭代次数,本算法的构想是m(t)为一个快速增长的函数,以便在聚集阶段中花费比分裂阶段更少的迭代。为了使我们的算法与其他经典的力导向算法相媲美,我们希望迭代阶段的时间复杂度为o(n)级别。显然,通过改变m(t)函数的增长速率,可以影响算法在m(t)达到值m(tp)之前执行多少次迭代。

假设算法聚集阶段迭代的总数为s,分裂阶段迭代的总数为b,其中0<s<b。希望m(t)是一个快速增长的单调递增函数。所以,对于适当的m(t)可以是幂函数或指数函数。在本算法中令m(t)为:

使用m和n替换,进一步表示为:

为了评估aggregation-division算法,我们还将通过实验调整m(t)函数及迭代总次数(s+b)中参数的值。

在每次迭代中,根据在节点vi在每一次迭代t时受到的总吸引力fa(vi,t)和总排斥力fr(vi,t),更新每个节点vi的坐标。令θij(t)表示在第t次迭代时x轴与连接顶点vi和vj的直线之间的夹角。然后分别计算fa(vi,t)在x轴方向和在y轴方向上的分量,如下所示:

其中值aij是图的邻接矩阵a中的aij元素。与fr算法类似,节点受到来自所有与其相邻接的节点施加的吸引力作用,当aij=0时,认为vi和vj节点间不存在吸引力,当aij=1时,认为vi和vj节点间存在吸引力。类似地,fr(vi,t)在x轴方向和在y轴方向上的分量如下所示计算:

认为节点vi与其他所有节点都存在排斥力作用,由此,节点vi受力运动后在笛卡尔系中的坐标可以通过计算得到:

vi(t).x=fa(vi,t).x+fr(vi,t).x;

vi(t).y=fa(vi,t).y+fr(vi,t).y;

与典型的力引导的布局算法不同的是,在每次给定的迭代中,aggregation-division算法不会将顶点vi从其之前的位置开始移动到新的位置。节点vi的新位置间接依赖于其以前的位置,与算法执行的迭代次数、连接顶点vi和vj的直线之间的夹角有关,它受所有顶点相对于vi位置的影响,通过在前一次迭代中计算角度θij来得到。

下面给出基于力引导的点布局优化算法的程序化的描述:

对于图g=(v,e),|v|=n,|e|=m

输入:一个原始网络

输出:算法布局后的网络

1:在平面区域内所有的顶点均处于一个随机位置

2:t←0

3:m(0)←1/m

4:fort←1to(s+b)do

5:m(t)←(2tm2/sn2)n-1))10

6:fori←1tondo

7:

8:

9:forj←1tondo

10:if{vi,vj}∈ethen

11:

12:

13:endif

14:ifi≠jthen

15:

16:

17:endif

18:endfor

19:

20:

21:endfor

22:endfor

第5-20行最外面的for-loop循环的主体是ad算法的迭代次数,总共有(s+b)次迭代,其中s和b分别是表示聚集阶段和分裂阶段迭代的次数。算法从初始的一个随机布局开始。由于ad算法的第一次迭代需要一个初始值,即m(0),本算法中规定m(0)=1/m,意味着算法以一个严格小于1的值开始计算。然后,对于t≥1时,计算m(t)的值。对于每个顶点vi,施加到其上的总吸引力x轴方向和y轴方向的分量在算法的第10-13行中计算,在算法第14-17行中计算施加到其上的总排斥力。在算法第19-20行计算顶点vi经过第t次迭代后的坐标。

ad算法的时间复杂度是o(n3),最外层的循环执行了(s+b)次迭代,它的主体包含两个循环,即每个节点循环访问其他所有的节点。因此,ad算法与其他经典的力导向算法(包括fr算法)具有相同的时间复杂度,但是由于节点间作用力与节点间距离无关,因此大大简化了计算难度。另外,通过实验发现,在20余次迭代中,ad能够呈现出美观的结果。

本发明提出的ad算法属于经典的力导向算法范畴。当遵循fr算法的一般模式时,ad算法使用与节点之间的距离无关的吸引力和排斥力。在每次迭代中,作用力是均匀变化的,并且随着迭代次数的增加而单调递增。此外,本发明还会通过实验加以说明,ad算法具有与fr算法相近数量的交叉边和相似邻边夹角,算法的布局结果总体上呈圆形,在可视化效果上来说这可能会是ad算法的一个优点。在整个绘制区域比fr算法更均匀地分布节点,这样的特性可能会使得fr算法具备更好的扩展性,并且能够产生一些fr算法无法企及的高度对称布局,这些图形的对称布局往往需要相对较长的边,例如,一些哈密尔顿图包括皇后图,瓦格纳图和希伍德图,对于结构对称的图,算法取得了较为理想的效果。

为了验证ad算法的有效性与适用性,分别对ad算法与fr算法进行对比实验,实验对象是顶点数为随机抽取5到100个节点组成的网络关系无向图。同时做出了相应的ad算法参数的调整,经过实验发现ad算法在使用前面提到的m(t)函数的选择的情况下,在20余次迭代中获得了较为美观的结果。在实验过程中探索聚集阶段与分裂阶段在总的迭代次数中的占比,来实现在所有试点实验中的满意的布局结果,发现算法经历相对较短的聚集阶段和经历较长的分裂阶段之后产生了较为美观的可视化效果,聚集阶段一般占用全部20次迭代中的20-30%。

实验选取一些绘制网络图的美学标准作为衡量ad算法与fr算法的性能指标,在实验中分别将ad算法与fr算法实现的布局特性记录下来。如边交叉的数量,迭代时间以及节点分布情况。量化节点分布情况的一种方法是找到布局中两个节点之间的最小距离,然后求和计算均值即:

值d1越高,说明节点在整个绘图区域中分布得越均匀。另一种量化节点分布情况的方法,是令为顶点ri在网络图中与其最近节点的距离,令为节点vi与布局边界上的最近节点的距离,令

计算以ri为半径围成的圆的面积之和与绘制网络图的二维区域的面积之比,作为量化节点分布情况的第二种方法。即:

值d2越趋近于1,说明节点在整个绘图区域中分布得越均匀。

主要从以下几个方面分别对比ad算法和fr算法的性能,分别是:交叉边的数量图2,边长度的标准差图3,节点间平均最小距离图4,顶点分布图5,算法运行时间图6等方面。在每个折线图的标题中,用ad表示aggregation-division算法,用fr表示fruchterman-reingold算法。

对结果进行总结,如图2所示,当涉及到对比交叉边的数量,两种布局算法在控制交叉边数量这一美学指标上几乎不相伯仲,ad算法相对于fr算法之间并没有凸显出特别明显的优势,在交叉边数量上只是略低于fr算法,ad算法布局的节点数在55以上时边交差的数量开始少于fr算法,但差别几乎可以忽略不计。在图3所示的边长标准差中可以明显地看出,fr算法的边长标准差小于ad算法布局后的边长标准差,姑且猜测是fr算法产生的边长度较为统一,而ad算法布局后产生的边长差距较大。然而在图4和5中,随着网络节点数量的增长,可以清楚地看到两种算法之间的实际差异,从节点分布特性上来看,ad算法可以较好地在整个绘制区域内均匀地分布节点,因此可以得出,ad算法的边长标准差大较大是为了使得节点分布更加均匀的缘故。经典的力导向fr算法实现了边长度具有相对一致的紧凑的绘图布局,然而,经常也有大片的未使用空间和稠密子图较为纠缠错乱的布局。而本文提出的ad算法,通过允许生成更长的边,可以更好地利用整个绘图区域从而使顶点的分布更加均匀。图4和图5也表明ad算法可能比fr算法更好地放大,因为随着图的大小增长,它倾向于在节点分布方面给出越来越好的结果。图6显示,ad算法的迭代比fr的迭代快,这是本算法所期望的,因为ad算法使用的是更简单的吸引力排斥力计算模型,它不依赖于节点之间的距离,因此计算速度更快,在时间性能方面优于fr算法。

图7-图10分别对8*8的普通随机网络图与15*5的queengraph分别应用fr算法与ad算法。发现ad算法通过允许产生较长的边从而生成圆形布局,并在整个绘图区域均匀分布顶点。当数据集为结构对称的图时,ad算法往往会形成比fr算法更为理想的布局,形成相似的子结构,子结构的可视化效果类似,整体保持对称。由此可见,节点布局后图的可读性较fr算法更好,且算法的扩展性优于fr算法。

以上所述并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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