Давайте возьмем базовый график в networkx
:
import networkx as nx
G = nx.Graph()
G.add_node("A")
G.add_node("B")
G.add_edge("A","B")
Экспорт в формате gml
дает:
graph [
node [
id 0
label "A"
]
node [
id 1
label "B"
]
edge [
source 0
target 1
]
]
Теперь мне интересно, есть ли способ иметь два разных узла с одинаковым именем, чтобы мой gml-файл выглядел так:
graph [
node [
id 0
label "A"
]
node [
id 1
label "A"
]
edge [
source 0
target 1
]
]
По крайней мере, в файле номера идентификаторов различны, и поэтому узлы однозначно идентифицируются даже с одинаковыми именами. Этот файл можно открыть с помощью yEd без проблем.
Судя по синтаксису, я полагаю, что это невозможно в networkx
, так какие еще есть способы сделать это?
Справочная информация:
У меня есть ориентированный граф, где два узла X
и Y
оба имеют одного и того же преемника Z
, но я хочу, чтобы X
и Y
каждый имели свои собственные Z
вместо того, чтобы оба указывали на то же самое Z
. По сути, я хочу направленное дерево, где у каждого узла есть только один предшественник, в то время как дубликаты в дереве разрешены.