Обнаружение сообщества с использованием Netwokit с PLP и PLM ( Python 3.x)
Я не могу найти хорошую документацию для использования алгоритмов 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 (C++), где ясно, что я могу запустить алгоритм, а затем использовать структуру toString(, Мне нужен график G, я думаю, но я не знаю, что делать дальше.
1 ответ
Как много классов в NetworKit, оба PLP
а также PLM
включить run()
метод, который выполняет алгоритм, и вам нужно вызвать его, прежде чем получить результат. Кроме того, нет необходимости использовать toString()
метод получения структуры сообщества; Вы можете использовать getPartition()
метод (включен в оба PLP
а также PLM
см. документацию), которая возвращает Partition
объект, который представляет структуру сообщества (вы можете найти документацию Partition
здесь)
Ниже приведен простой пример:
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()
Каждое сообщество связано с уникальным целочисленным идентификатором, а каждый узел - с идентификатором сообщества. plpCommunityIDs
это набор, который содержит все идентификаторы сообщества, в то время как plpCommunities
является вектором размера n (число узлов графа), который содержит идентификатор сообщества каждого узла (например, использовать c = plpCommunities[v]
хранить в c
идентификатор сообщества узла v
).