查看“︁模块度”︁的源代码
←
模块度
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{NoteTA |G1=Math |G2=IT }} {{多個問題| {{Orphan|time=2023-01-22T21:49:42+00:00}} {{refimprove|time=2016-12-21T06:54:29+00:00}} }} '''模块度'''也称'''模块化度量值''',是目前常用的一种衡量网络{{le|社区结构|Community structure}}强度的方法,最早由{{le|马克·纽曼|Mark Newman}}提出<ref name="mark"> {{Cite journal en|author = Newman M E J. |title = Fast algorithm for detecting community structure in networks[J] |journal = Physical review E |volume = 69 |issue = 6|year = 2004|pages = 066133}}</ref>。模块度的定义为: <blockquote> <math>Q = \frac{1}{2m}*\sum_{ij}\left[A_{ij}-\frac{k_i*k_j}{2m}\right]\delta(C_i,C_j) </math> </blockquote> 模块度值的大小主要取决于网络中[[节点 (图论)|结点]]的社区分配C,即网络的社区划分情况,可以用来定量的衡量网络社区划分质量,其值越接近1,表示网络划分出的社区结构的强度越强,也就是划分质量越好。因此可以通过最大化模块度Q来获得最优的网络社区划分。 ==模块度最优化算法== 由于网络所有可能的划分数量是巨大的,假设网络的结点数和边数分别为n和m,则所有可能的社区划分数是一个以n为指数的数。因此,在所有可能的划分中找出最优划分是一个[[NP-hard]]问题。针对这一问题,目前一些相应算法已被提出,其可以在合理的时间内找出模块度最大化的近似最优划分。 ===经典贪心算法=== 模块度最大化问题是一个经典的[[最优化问题]],马克·纽曼基于贪心思想提出了模块度最大化的[[贪心算法]]FN<ref name="mark"/> 。贪心思想的目标是找出目标函数的整体最优值或者近似最优值,它将整体最优化问题分解为局部最优化问题,找出每个局部最优值,最终将局部最优值整合成整体的近似最优值。FN算法将模块度最优化问题分解为模块度局部最优化问题,初始时,算法将网络中的每个结点都看成独立的小社区。然后,考虑所有相连社区两两合并的情况,计算每种合并带来的模块度的增量。基于贪心原则,选取使模块度增长最大或者减小最少的两个社区,将它们合并成一个社区。如此循环迭代,直到所有结点合并成一个社区。随着迭代的进行,网络总的模块度是不断变化的,在模块度的整个变化过程中,其最大值对应网络的社区划分即为近似的最优社区划分。<br/> 贪心算法FN具体步骤:<br/> # 去掉网络中所有的边,网络的每个结点都单独作为一个社区; # 网络中的每个[[連通分支|连通部分]]作为一个社区,将还未加入网络的边分别重新加回网络,每次加入一条边,如果加入网络的边连接了两个不同的社区,则合并两个社区,并计算形成新社区划分的模块度增量。选择使模块度增量最大或者减小最少的两个社区进行合并。 # 如果网络的社区数大于1,则返回步骤(2)继续迭代,否则转到步骤(4); # 遍历每种社区划分对应的模块度值,选取模块度最大的社区划分作为网络的最优划分。<br/> 该算法中,需要注意的是,每次加入的边只是影响网络的社区划分,而每次计算网络划分的模块度时,都是在网络完整的[[网络拓扑|拓扑结构]]上进行,即网络所有的边都存在的拓扑结构上。 ===快速模块度优化算法=== 为了降低算法的[[时间复杂度]],Vincent Blondel等人提出了另一种层次的贪心算法<ref>{{Cite journal en|author = Blondel V D, Guillaume J L, Lambiotte R, et al |title = Fast unfolding of communities in large networks[J] |journal = Journal of Statistical Mechanics: Theory and Experiment |volume = 2008 |issue = 10|year = 2008|pages = 10008}}</ref>。该算法包括两个阶段,第一阶段合并社区,算法将每个结点当作一个社区,基于模块度增量最大化标准决定哪些邻居社区应该被合并。经过一轮扫描后开始第二阶段,算法将第一阶段发现的所有社区重新看成结点,构建新的网络,在新网络上重复进行第一阶段,这两个阶段重复运行,直到网络社区划分的模块度不再增长,得到网络的社区近似最优划分。<br/> 这个简单算法具有一下几个优点:首先,算法的步骤比较直观并且易于实现;其次,算法不需要提前设定网络的社区数,并且该算法可以呈现网络的完整的{{le|Hierarchical clustering of networks|Hierarchical clustering of networks|分层社区结构}},能够发现在线社交网络的分层的虚拟社区结构,获得不同分辨率的虚拟社区;再次,计算机模拟实验显示,在{{le|稀疏网络|Sparse network}}上,算法的时间复杂度是线性的,在合理的时间内可以处理结点数超过<math>10^9</math>的网络,因此十分适合在线社交网络这样超大规模的负责网络中虚拟社区的发现。<br/> ==参考资料== <references /> [[Category:网络]] [[Category:資訊科學]]
该页面使用的模板:
Template:Cite journal en
(
查看源代码
)
Template:Le
(
查看源代码
)
Template:NoteTA
(
查看源代码
)
Template:多個問題
(
查看源代码
)
返回
模块度
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息