1 pièce(s) jointe(s)
la difference entre les aretes de deux graphes
Bonsoir,
J'ai écris un programme de graphs mining, ça commence par la lecture d'informations à partir d'un fichier et puis la creation des graphes et l'insertion dans un std::vector.
jusqu'ici tout va bien..
La partie ou il y a un probléme est celle la:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| std::vector<std::array<int, 3>> edgesdiff(Graph const& g1,Graph const& g2){
std::array<int, 3> t;
std::vector<std::array<int, 3>> res;
edge_pair ep;
for (ep = edges(g1); ep.first != ep.second; ++ep.first) // ep edge number
{
vertex_t from = source(*ep.first, g1);
int froml=g1[from].label;
t[0]=g1[from].id;
vertex_t to = target(*ep.first, g1);
int tol=g1[from].label;
t[1]=g1[to].id;
edge_t edg = edge(from, to, g1);
t[2]=g1[edg.first].label;
if(!edgeexistlabels(g2,froml,tol,t[2])){res.push_back(t);}
}
return res;
} |
Cette fonction retourne les informations sur la différence entre les arêtes de deux graphes dans un std::vector<std::array<int, 3>>
par différence je veux dire les arêtes qui se trouve dans g1 mais pas dans g2
Voila le programme en live: http://coliru.stacked-crooked.com/a/a22b68c87d6b6600
ça donne le résultat suivant:
Code:
1 2 3 4 5 6 7
| [0][1][11]
[1][2][12]
[1][3][13]
[2][3][14] |
en vérité ça doit retourner:
Code:
1 2 3 4
| [0][1][11]
[1][3][13] |
je ne comprends pas ou est l'erreur :roll: Aidez moi à régler ça svp!
Pièce jointe 177968