Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
R
RDM_grands_graphes
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Wiki externe
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Déploiement
Releases
Registre de paquets
Registre de conteneurs
Registre de modèles
Opération
Modules Terraform
Surveillance
Incidents
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté GitLab
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Louis FOURCADE
RDM_grands_graphes
Validations
1c847637
Valider
1c847637
rédigé
Il y a 4 ans
par
Louis Fourcade
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
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
Modifications
1
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
1 fichier modifié
TP2.c
+40
-4
40 ajouts, 4 suppressions
TP2.c
avec
40 ajouts
et
4 suppressions
TP2.c
+
40
−
4
Voir le fichier @
1c847637
...
@@ -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
\n
noeuds 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
;
}
}
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter