Обнаружение сообщества с использованием 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#abeb42305639e48a3160a45aee354783a (C++), где ясно, что я могу запустить алгоритм, а затем использовать toString (), чтобы увидеть структуру. Думаю, мне нужен Graph G, но я не знаю, что делать дальше.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
243
1

Ответы 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 - это вектор размера п (количество узлов графа), который содержит идентификатор сообщества каждого узла (например, используйте c = plpCommunities[v] для хранения в c идентификатора сообщества узла. v).

Другие вопросы по теме