Skip to content
Extraits de code Groupes Projets
Valider 1c847637 rédigé par Louis Fourcade's avatar Louis Fourcade
Parcourir les fichiers

la structure de samuh c'est cassé

parent 507b7479
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -10,6 +10,11 @@ ...@@ -10,6 +10,11 @@
// eta_tab un tableau d'entiers de taille g->n (initialisé à zero) // eta_tab un tableau d'entiers de taille g->n (initialisé à zero)
// c_tab un tableau d'entiers de taille g-> n (initialisé à zero) // c_tab un tableau d'entiers de taille g-> n (initialisé à zero)
void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) { void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) {
// mise à zero des tableaux
for (unsigned long iter = 0; iter < g->n; iter+=1) {
eta_tab[iter] = 0;
c_tab[iter] = 0;
}
unsigned long v; unsigned long v;
tp2_t deg_track; tp2_t deg_track;
int i, c; int i, c;
...@@ -19,13 +24,20 @@ void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) { ...@@ -19,13 +24,20 @@ void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) {
// initialise la structure // initialise la structure
deg_track = new_tp2(g->n); deg_track = new_tp2(g->n);
for (unsigned long k = 0; k < g->n+1; k += 1) { for (unsigned long k = 0; k < g->n; k += 1) {
int tmp_deg = (g->cd[k+1]) - (g->cd[k]); int tmp_deg = (g->cd[k+1]) - (g->cd[k]);
if (set_deg(deg_track, k, tmp_deg) == 0) { if (set_deg(deg_track, k, tmp_deg) == 0) {
printf("error initialisation deg_struct\n"); printf("error initialisation deg_struct\n");
return; return;
} }
} }
for (unsigned long k = 0; k < g->n; k += 1) {
int tmp_deg = (g->cd[k+1]) - (g->cd[k]);
if (get_deg(deg_track, k) != tmp_deg) {
printf("samuh à merdé\n");
return;
}
}
printf("initialisation terminée\n"); printf("initialisation terminée\n");
...@@ -34,9 +46,15 @@ void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) { ...@@ -34,9 +46,15 @@ void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) {
// trouver un élément de degré min dans le graphe // trouver un élément de degré min dans le graphe
v = elem_min_deg(deg_track); v = elem_min_deg(deg_track);
int tmp_deg = get_deg(deg_track, c); int tmp_deg = get_deg(deg_track, v);
if (tmp_deg < 0) { if (tmp_deg < 0) {
printf("error elem_min_deg est de degré -1 (tous les noeuds ont été retirés)\n"); printf("error elem_min_deg est de degré -1 (tous les noeuds ont été retirés)\n");
for (unsigned long k = 0; k < g->n; k += 1) {
if (get_deg(deg_track, k) != -1) {
printf("%lu est de degré %i\n", k, get_deg(deg_track, k));
printf("samuh à merdé\n");
}
}
return; return;
} }
...@@ -51,7 +69,7 @@ void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) { ...@@ -51,7 +69,7 @@ void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) {
// mise à jour du degré des voisins // mise à jour du degré des voisins
unsigned long i_find_vois; unsigned long i_find_vois;
for (i_find_vois = g->cd[v]; i_find_vois < g->cd[v+1]; i_find_vois += 1) { for (i_find_vois = g->cd[v]; i_find_vois < g->cd[v+1]; i_find_vois += 1) {
if (decrease_deg(deg_track, i_find_vois) == 0) { if (decrease_deg(deg_track, g->adj[i_find_vois]) == 0) {
printf("error pour dec deg d'un noeud\n"); printf("error pour dec deg d'un noeud\n");
return; return;
} }
...@@ -60,7 +78,8 @@ void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) { ...@@ -60,7 +78,8 @@ void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) {
// sauvegarde des valeurs pour le k-ordering et la core value du noeud // sauvegarde des valeurs pour le k-ordering et la core value du noeud
eta_tab[v] = i; eta_tab[v] = i;
c_tab[v] = c; c_tab[v] = c;
i += 1; i -= 1;
printf("c = %i\nnoeuds retirés = %lu\n", c, g->n - i);
} }
// destruction de la structure // destruction de la structure
...@@ -74,6 +93,19 @@ void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) { ...@@ -74,6 +93,19 @@ void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) {
int max_c_val(int* tabl, int size) {
int max = tabl[0];
for(int i = 0; i < size; i +=1) {
// printf("|%i|", tabl[0]);
if (tabl[i] > max) {
max = tabl[i];
}
}
return max;
}
...@@ -119,11 +151,15 @@ int main(int argc, char **argv) { ...@@ -119,11 +151,15 @@ int main(int argc, char **argv) {
core_decomposition(g, eta, c); core_decomposition(g, eta, c);
printf("core value du graphe : %i\n", max_c_val(c, g->n));
free_adjlist(g); free_adjlist(g);
free(eta);
free(c);
return 0; return 0;
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter