Salut tout le monde !
Je suis un peu dans la panade, je cherche une manière de convertir une matrice d'incidence vers une matrice d'adjacence, et vice-versa.
J'ai plus ou moins un algo correct, mais (y'a toujours un mais..) ça déconne sur la fin.
Je m'explique :
J'ai une matrice d'incidence de taille n*m (sommets * arêtes = 4 * 5) et une matrice d'adjacence en taille n
Ma matrice d'incidence :
1 1 0 0 0
1 0 1 1 0
0 1 1 0 1
0 0 0 1 1
La matrice d'adjacence que je suis sensé obtenir :
0 1 1 0
1 0 1 1
1 1 0 1
0 1 1 0
Du coup, mon petit code :
Voici un exemple de l'affichage que j'ai lorsque je lance la fonction, ce qui emmène au problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
27
28
29
30
31
32
33
34 void inc_vers_adj(matrice_incidence inc) { matrice_adjacence adj; adj = create_adjacence(inc.nb_sommets); initialisation(adj); affichage_adj(adj); affichage_inc(inc); int ind_col, ind_ligne; int tmp_l1 = -1, tmp_l2 = -1; for(ind_col=0;ind_col<inc.nb_aretes;ind_col++){ for(ind_ligne=0;ind_ligne<=inc.nb_sommets;ind_ligne++){ printf("%d et %d : %d \n", ind_col, ind_ligne, inc.coeff[ind_col][ind_ligne]); if(inc.coeff[ind_col][ind_ligne]!=0){ if(tmp_l1 != -1){ if (tmp_l2 == -1) { tmp_l2 = ind_ligne; } } else tmp_l1 = ind_ligne; } } printf("%d et %d \n", tmp_l1, tmp_l2); adj.coeff[tmp_l2][tmp_l1] = inc.coeff[ind_col][tmp_l1]; adj.coeff[tmp_l1][tmp_l2] = inc.coeff[ind_col][tmp_l2]; tmp_l1 = -1; tmp_l2 = -1; affichage_adj(adj); } //affichage_adj(adj); }
Matrice d'incidence :
1 1 0 0 0
1 0 1 1 0
0 1 1 0 1
0 0 0 1 1
0 et 0 : 1
0 et 1 : 1
0 et 2 : 0
0 et 3 : 0
0 et 4 : 0
0 et 1
Matrice d'adjacence :
0 1 0 0
1 0 0 0
0 0 0 0
0 0 0 0
1 et 0 : 1
1 et 1 : 0
1 et 2 : 1
1 et 3 : 1
1 et 4 : 0
0 et 2
Matrice d'adjacence :
0 1 1 0
1 0 0 0
1 0 0 0
0 0 0 0
2 et 0 : 0
2 et 1 : 1
2 et 2 : 1
2 et 3 : 0
2 et 4 : 1
1 et 2
Matrice d'adjacence :
0 1 1 0
1 0 1 0
1 1 0 0
0 0 0 0
3 et 0 : 0
3 et 1 : 0
3 et 2 : 0
3 et 3 : 1
3 et 4 : 1
3 et 4
Erreur de segmentation (core dumped)
Voilà voilà, des avis sur comment corriger mon problème ?
Merci d'avance la communauté
Partager