Примечание по терминологии: "vertices"="nodes", "метки вершин/узлов" = "indices"
LightGraphs
в Julia изменяет индексы узлов при создании индуцированных подграфов.
Например, если граф имеет узлы [1, 2, 3, 4]
, его LightGraphs.induced_subgraph
, индуцированный узлами [3,4]
, будет новым графом с узлами [3,4]
, переименованными в [1,2]
.
В современных алгоритмах графов используется рекурсивный подграф, при котором наборы узлов модифицируются и передаются вверх и вниз по уровням рекурсии. Чтобы эти алгоритмы правильно отслеживали идентификаторы узлов (метки), подграфы не должны изменять индексы.
Подграфы в networkx
в Python, например, сохраняют метки узлов.
Можно использовать MetaGraphs
, добавив атрибут узла :id
, который сохраняется путем подграфирования, но тогда вам придется написать много дополнительного кода для преобразования между индексами узлов и узлами :id
.
Разве не существует пакета Julia, который «просто работает», когда дело доходит до подграфов и сохранения идентификаторов узлов?