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
507b7479
Valider
507b7479
rédigé
10 mars 2021
par
Samuh
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
avec les .c ca marches mieux
parent
821f272f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
3
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
3 fichiers modifiés
Makefile
+1
-1
1 ajout, 1 suppression
Makefile
TP2.c
+3
-0
3 ajouts, 0 suppression
TP2.c
struct_tp2.c
+153
-0
153 ajouts, 0 suppression
struct_tp2.c
avec
157 ajouts
et
1 suppression
Makefile
+
1
−
1
Voir le fichier @
507b7479
...
...
@@ -13,7 +13,7 @@ clean:
$(EXECUTABLE)
:
TP2.o
file
.o
$(EXECUTABLE)
:
TP2.o
struct_tp2
.o
$(
CC
)
$(
OPTIONS
)
-o
$@
$^
$(
MATH
)
-g
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
TP2.c
+
3
−
0
Voir le fichier @
507b7479
...
...
@@ -26,6 +26,7 @@ void core_decomposition(adjlist *g, int *eta_tab, int *c_tab) {
return
;
}
}
printf
(
"initialisation terminée
\n
"
);
// itère jusqu'à avoir traité tous les noeuds
...
...
@@ -94,6 +95,7 @@ int main(int argc, char **argv) {
g
=
al_readedgelist
(
argv
[
1
]);
t3
=
time
(
NULL
);
printf
(
"- edge list time = %ldh%ldm%lds
\n
"
,(
t3
-
t1
)
/
3600
,((
t3
-
t1
)
%
3600
)
/
60
,((
t3
-
t1
)
%
60
));
// printf("- edge list time = %I64dh%I64dm%I64ds\n",(t3-t1)/3600,((t3-t1)%3600)/60,((t3-t1)%60));
printf
(
"Number of nodes: %lu
\n
"
,
g
->
n
);
printf
(
"Number of edges: %lu
\n
"
,
g
->
e
);
...
...
@@ -104,6 +106,7 @@ int main(int argc, char **argv) {
t2
=
time
(
NULL
);
printf
(
"- Overall time = %ldh%ldm%lds
\n
"
,(
t2
-
t1
)
/
3600
,((
t2
-
t1
)
%
3600
)
/
60
,((
t2
-
t1
)
%
60
));
// printf("- Overall time = %I64dh%I64dm%I64ds\n",(t2-t1)/3600,((t2-t1)%3600)/60,((t2-t1)%60));
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
struct_tp2.c
0 → 100644
+
153
−
0
Voir le fichier @
507b7479
#include
<stdio.h>
#include
<stdlib.h>
#include
"struct_tp2.h"
struct
tp2_s
{
//le nombre de noeud
unsigned
long
_size
;
//le tableau des noeuds trier par degrée croissant
unsigned
long
*
_tab_ordre
;
//le tableau donnant le premier élément de chaque degré
unsigned
long
*
_tab_first_deg
;
//le tableau donnant le degré de chaque noeud
int
*
_tab_deg
;
//le tableau contenant la position d'un élément dans le tableau _tab_ordre
int
*
_tab_pos
;
};
int
decrease_deg
(
tp2_t
t
,
unsigned
long
elem
);
int
increase_deg
(
tp2_t
t
,
unsigned
long
elem
);
tp2_t
new_tp2
(
unsigned
long
size
)
{
tp2_t
ret
=
(
tp2_t
)
malloc
(
sizeof
(
struct
tp2_s
));
ret
->
_size
=
size
;
unsigned
long
*
intern_tab_1
=
(
unsigned
long
*
)
malloc
(
sizeof
(
unsigned
long
)
*
size
);
int
*
intern_tab_2
=
(
int
*
)
malloc
(
sizeof
(
int
)
*
size
);
unsigned
long
*
intern_tab_3
=
(
unsigned
long
*
)
malloc
(
sizeof
(
unsigned
long
)
*
size
);
int
*
intern_tab_4
=
(
int
*
)
malloc
(
sizeof
(
int
)
*
size
);
ret
->
_tab_ordre
=
intern_tab_1
;
ret
->
_tab_deg
=
intern_tab_2
;
ret
->
_tab_first_deg
=
intern_tab_3
;
ret
->
_tab_pos
=
intern_tab_4
;
for
(
unsigned
long
i
=
0
;
i
<
ret
->
_size
;
i
++
)
{
ret
->
_tab_ordre
[
i
]
=
i
;
ret
->
_tab_deg
[
i
]
=
-
1
;
ret
->
_tab_first_deg
[
i
]
=
ret
->
_size
;
ret
->
_tab_pos
[
i
]
=
i
;
}
return
ret
;
};
int
set_deg
(
tp2_t
t
,
unsigned
long
elem
,
int
deg
)
{
if
(
elem
>=
t
->
_size
)
{
printf
(
"error set_deg : %li n'est pas un noeud valide
\n
"
,
elem
);
return
0
;
}
// printf("in %li\n", elem);
while
(
t
->
_tab_deg
[
elem
]
<
deg
)
{
increase_deg
(
t
,
elem
);
}
while
(
t
->
_tab_deg
[
elem
]
>
deg
)
{
decrease_deg
(
t
,
elem
);
}
// printf("out %li\n", elem);
return
1
;
};
int
destruct_tp2
(
tp2_t
t
)
{
free
(
t
->
_tab_deg
);
free
(
t
->
_tab_first_deg
);
free
(
t
->
_tab_ordre
);
free
(
t
->
_tab_pos
);
free
(
t
);
return
1
;
};
int
remove_elem
(
tp2_t
t
,
unsigned
long
elem
)
{
if
(
elem
>=
t
->
_size
)
{
printf
(
"error remove_elem : %li n'est pas un noeud valide
\n
"
,
elem
);
return
0
;
}
return
set_deg
(
t
,
elem
,
-
1
);
};
int
decrease_deg
(
tp2_t
t
,
unsigned
long
elem
)
{
if
(
elem
>=
t
->
_size
)
{
printf
(
"error decrease_deg : %li n'est pas un noeud valide
\n
"
,
elem
);
return
0
;
}
if
(
t
->
_tab_deg
[
elem
]
>=
0
)
{
unsigned
long
tmp
=
t
->
_tab_ordre
[
t
->
_tab_pos
[
elem
]];
int
deg
=
t
->
_tab_deg
[
elem
];
t
->
_tab_ordre
[
t
->
_tab_pos
[
elem
]]
=
t
->
_tab_ordre
[
t
->
_tab_first_deg
[
deg
]];
t
->
_tab_ordre
[
t
->
_tab_first_deg
[
deg
]]
=
tmp
;
t
->
_tab_first_deg
[
deg
]
++
;
t
->
_tab_deg
[
elem
]
--
;
}
return
1
;
};
int
increase_deg
(
tp2_t
t
,
unsigned
long
elem
)
{
if
(
elem
>=
t
->
_size
)
{
printf
(
"error increase_deg : %li n'est pas un noeud valide
\n
"
,
elem
);
return
0
;
}
unsigned
long
tmp
=
t
->
_tab_ordre
[
t
->
_tab_pos
[
elem
]];
int
deg
=
t
->
_tab_deg
[
elem
];
t
->
_tab_ordre
[
t
->
_tab_pos
[
elem
]]
=
t
->
_tab_ordre
[
t
->
_tab_first_deg
[
deg
+
1
]
-
1
];
t
->
_tab_ordre
[
t
->
_tab_first_deg
[
deg
+
1
]
-
1
]
=
tmp
;
t
->
_tab_first_deg
[
deg
+
1
]
--
;
t
->
_tab_deg
[
elem
]
++
;
return
1
;
};
unsigned
long
elem_min_deg
(
tp2_t
t
)
{
unsigned
long
tmp
=
t
->
_tab_first_deg
[
0
];
if
(
tmp
>=
t
->
_size
)
{
tmp
=
0
;
}
return
t
->
_tab_ordre
[
tmp
];
};
int
get_deg
(
tp2_t
t
,
unsigned
long
elem
)
{
if
(
elem
>=
t
->
_size
)
{
printf
(
"error get_deg : %li n'est pas un noeud valide
\n
"
,
elem
);
return
0
;
}
return
t
->
_tab_deg
[
elem
];
};
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