Можно ли создать граф свойств в NetworKit?
Например, я хотел бы добавить некоторые атрибуты к узлам и ребрам (скажем, некоторые метки или любую другую дополнительную информацию).
Возможно ли это сделать в NetworKit?
Заранее спасибо!
2 ответа
NetworKit не хранит внутри себя дополнительные атрибуты узла / ребра. Тем не менее, предполагая, что у вас есть график G
Вы можете хранить свойства извне (например, в списке или на карте) и использовать идентификаторы узлов / ребер для доступа к ним. В NetworKit идентификаторы узлов всегда индексируются от 0 до G.upperNodeIdBound() - 1
в то время как идентификаторы ребер всегда индексируются от 0 до G.upperEdgeIdBound() - 1
,
Чтобы использовать пограничные идентификаторы, вам сначала нужно позвонить G.indexEdges()
, так как идентификаторы ребер не генерируются по умолчанию. Затем, G.edgeId(u, v)
возвращает идентификатор ребра из узла u
в узел v
,
Вы можете найти больше об этом в документации класса NetworKit Graph.
Теперь последняя версия предоставляет API под названием «attachNodeAttribute» для создания атрибута для каждого узла в графе. Вы можете прикрепить атрибут узла к графу G, а затем получить и установить атрибуты для каждого узла.
Например:
A = G.attachNodeAttribute("attributeIdentifier", ofType) # attach a node attribute to Graph G
A[node] = value # set
value = A[node] # get
Перейдите по следующей ссылке, чтобы получить дополнительную информацию в документации:https://networkit.github.io/dev-docs/python_api/networkit.html?highlight=attachnodeattribute#networkit.Graph.attachNodeAttribute .