8.23 基于演化优化的网络结构平衡分析
结构平衡是网络结构分析中的一个重要概念[28] 。分析网络结构平衡可以帮助我们深入研究网络中个体之间的联系,理解复杂系统由非平衡状态向平衡状态的动态进化。网络结构平衡已经被应用到多个领域,如国际关系、政治选举等。
结构平衡研究中有两个重要的挑战:① 网络是否平衡?② 网络怎样由不平衡状态进化为平衡状态?
适应度函数
文献 [29] 提出了一个能量函数来计算网络的全局平衡性。能量函数表示如下:
其中, 表示节点 v i 和 v j 之间的符号;表示节点 v i 所在类的类标。
计算能量函数被证明是一个 NP-hard 问题。此能量函数适用于网络强平衡,但不适用于网络弱平衡。许多学者根据需求重新设计了新的能量函数。在实际情景中,网络通过转变正负边的符号实现非平衡状态到平衡状态的转换,然而正负边的转换代价往往是不相同的。通过引入一个转换代价,文献[30] 设计了一个新的能量函数。上述两种能量函数都只适用于强平衡,即整个网络被划分为两个社区。文献 [31] 提出了一种适用于弱平衡的能量函数。文献 [32] 也提出了一种适用于弱平衡的能量函数,在此目标函数中,引入了正负边的转换代价。
个体表示
结构平衡研究中,演化计算通常采用基于字符串的个体表示。为了优化能量函数,文献 [33] 使用了一种由+1和-1组成的染色体编码,其中+1和-1表示每个节点所属的类标。在这种编码方式中,相同编码的节点属于同一类。文献 [30] 对每一个节点的类标和每一条边的符号变化同时进行编码。文献[32] 在弱平衡问题中使用了整数编码。这些编码方式都非常简单,时间复杂度非常低[32] 。
遗传算子
文献 [30,33] 采用了两点交叉操作,这种交叉操作非常简单且高效。文献 [32] 采用了双向交叉操作。在双向交叉操作中,子代个体可以很好地继承父代个体中的社区划分。
为了减少无意义的搜索,文献 [30-33] 都采用了基于邻域知识的变异操作。局部搜索在网络结构平衡中,两个由正边连接的节点通常在同一个社区中。基于上述先验知识,文献 [33]使用了一种基于邻域的局部搜索。文献 [30] 提出了一种贪婪的局部搜索策略,这种局部搜索很有效,但是时间复杂度非常高。为了更好地利用网络的结构信息,文献 [32] 提出了一种基于多层学习的演化算法,这种多层学习演化算法可以很快的收敛。