Je suis assez nouveau pour Python et surtout pour igraph. Pour ma thèse de bachelier, je dois comparer les graphiques et donc déterminer l'intersection et l'union du graphique. J'ai essayé les éléments suivants:python igraph, intersection de graphes/union basée sur les noms de vertex/labels
from igraph import *
import json
with open('test_graphs.json') as data_file:
data = json.load(data_file)
test1 = data['test1']
test2 = data['test2']
t1 = Graph(directed=True)
for v in test1:
t1.add_vertex(v)
for v in test1:
for o in test1[v]:
t1.add_edge(v, o)
print(t1)
t2 = Graph(directed=True)
for v in test2:
t2.add_vertex(v)
for v in test2:
for o in test2[v]:
t2.add_edge(v, o)
print(t2)
gr = t1.intersection(t2)
print(gr)
Si mon fichier JSON est comme suit:
{
"test1" : {
"A": ["B","C"],
"B": [],
"C": []
},
"test2" : {
"A": ["B","D"],
"B": [],
"D": []
}
}
Je devrait être la sortie de l'intersection être A> B. Mais au lieu de ce qui suit eteint est venu:
IGRAPH DN-- 3 2 --
+ attr: name (v)
+ edges (vertex names):
A->B, A->C
IGRAPH DN-- 3 2 --
+ attr: name (v)
+ edges (vertex names):
A->B, A->D
IGRAPH D--- 3 2 --
+ edges:
2->0 2->1
Les premiers deux graphiques imprimés montrent que les deux graphiques d'entrée fonctionnent comme prévu (même je ne pas comprendre difficile où le « attr » est venu?). Mais le graphique de sortie ne considère pas que les sommets A et B de mes deux graphiques sont identiques alors que C et D le sont. Donc ma question: Comment puis-je déterminer l'intersection (et l'analogie de l'union) du graphe, en considérant mes étiquettes pour les sommets.
consultez ce post: http://stackoverflow.com/questions/35182255/perform-union-of-graphs-based-on-vertex-names-python-igraph – paqmo