Обнаружение сообщества с использованием Netwokit с PLP и PLM (Python 3.x) - PullRequest
0 голосов
/ 31 августа 2018

Я не могу найти хорошую документацию для использования алгоритмов PLP и PLM. Мне нужно обнаружить сообщество в графе, используя библиотеки сети. Я нашел только эту ссылку: 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 (), чтобы увидеть структуру. Думаю, мне нужен график G. Но я не знаю, что делать дальше.

1 Ответ

0 голосов
/ 01 сентября 2018

Как и во многих классах в 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).

...