1

我找不到使用 PLP 和 PLM 算法的好文档。我需要使用 networkit 的库在图中检测社区。我只找到了这个链接:https ://networkit.iti.kit.edu/api/community.html但我不明白什么样的功能可以给我社区的结构以及我如何运行算法。我需要这样的解释: https://networkit.iti.kit.edu/api/doxyhtml/class_networ_kit_1_1_p_l_p.html#abeb42305639e48a3160a45aee354783a (C++) 很明显我可以运行算法然后使用 toString() 查看结构. 我想我需要一个 Graph G,但我不知道下一步该做什么。

4

1 回答 1

2

与 NetworKit 中的许多类一样,两者都PLP包含PLM一个run()执行算法的方法,您需要在获得结果之前调用它。另外,不需要使用该toString()方法来获取社区结构;您可以使用返回代表社区结构的对象的getPartition()方法(包含在PLPPLM中,请参阅文档)(您可以在此处找到文档)。PartitionPartition

请参阅下面的简单示例:

from networkit import *

# In this example I generate a graph with a random community structure.
# In your code use your own graph.
g = generators.ClusteredRandomGraphGenerator(100, 10, 0.5, 0.01).generate()

# Creating an instance of PLP and running the algorithm.
# Use community.PLM(g) to run the PLM algorithm.
plp = community.PLP(g).run()

# Getting the Partition object.
plpPartition = plp.getPartition()

# Getting the community IDs.
plpCommunityIDs = plpPartition.getSubsetIds()

# Getting the community ID of each node of the graph g.
plpCommunities = plpPartition.getVector()

每个社区都与一个唯一的整数 id 相关联,每个节点都与一个社区 id 相关联。plpCommunityIDs是一个包含所有社区 id 的集合,而plpCommunities是一个大小为n(图的节点数)的向量,其中包含每个节点的社区 id(例如,用于c = plpCommunities[v]存储c节点的社区 id v)。

于 2018-09-01T12:46:26.407 回答