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

restructuration

parent 1c847637
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -2,7 +2,7 @@ CC = gcc ...@@ -2,7 +2,7 @@ CC = gcc
OPTIONS = -Wall -Wextra -O9 OPTIONS = -Wall -Wextra -O9
MATH = -lm MATH = -lm
EXECUTABLE = exec EXECUTABLE = TP1 TP2 TP3
all: $(EXECUTABLE) all: $(EXECUTABLE)
...@@ -13,11 +13,19 @@ clean: ...@@ -13,11 +13,19 @@ clean:
$(EXECUTABLE): TP2.o struct_tp2.o # $(EXECUTABLE): TP2.o struct_tp2.o
# $(CC) $(OPTIONS) -o $@ $^ $(MATH) -g
TP1: TP1.o file.o
$(CC) $(OPTIONS) -o $@ $^ $(MATH) -g $(CC) $(OPTIONS) -o $@ $^ $(MATH) -g
TP2: TP2.o struct_tp2.o
$(CC) $(OPTIONS) -o $@ $^ $(MATH) -g
TP3: TP3.o
main.o: implems.c TP1.o: implems.c
TP2.o: implems.c struct_tp2.h TP2.o: implems.c struct_tp2.h
......
TP1 0 → 100755
Fichier ajouté
Fichier déplacé
TP2 0 → 100755
Fichier ajouté
TP3 0 → 100755
Fichier ajouté
#include "./implems.c"
#include "./struct_tp2.h"
#include <stdio.h>
#include <stdlib.h>
// fonction écrivant les degrés sortant de chaque noeuds dans le tableau out_res
void calc_out_deg(edgelist *g, unsigned long *out_res) {
unsigned long i;
for (i = 0; i < g->n; i += 1) {
out_res[i] = 0;
}
for (i = 0; i < g->e; i += 1) {
out_res[g->edges[i].s]++;
}
return;
}
// fonction écrivant les degrés entrant de chaque noeuds dans le tableau in_res
void calc_in_deg(edgelist *g, unsigned long *in_res) {
unsigned long i;
for (i = 0; i < g->n; i += 1) {
in_res[i] = 0;
}
for (i = 0; i < g->e; i +=1) {
in_res[g->edges[i].t]++;
}
return;
}
// fonction réalisant nb_iter itération de power pagerank
// distr_res doit être malloc et de taille g->n
int pagerank(edgelist *g, double *distr_res, double alpha, int nb_iter) {
unsigned long i, j;
unsigned long *out_deg;
double *prob_t1;
double *swap_buffer;
out_deg = (unsigned long*) malloc((g->n)*sizeof(unsigned long));
prob_t1 = (double*) malloc((g->n)*sizeof(double));
// calcul les degrés sortants
calc_out_deg(g, out_deg);
// initialisation des probas
for (i = 0; i < g->n; i += 1) {
distr_res[i] = 1/(g->n);
}
// itérations de PageRank
for (i = 0; i < nb_iter; i += 1) {
// mise à zero de prob_t1
for (j = 0; j < g->n; j += 1) {
prob_t1[j] = 0;
}
// itération sur les arêtes pour chaque quantité
for (j = 0; j < g->e; j += 1) {
prob_t1[g->edge[j].t] += (1 - alpha)*(distr_res[g->edge[j].s]/out_deg[g->edge[j].s]);
}
}
return 0;
}
int main(int argc, char **argv) {
if (argc < 2) {
printf("un argument est attendu\n");
return 1;
}
edgelist *g;
time_t t1, t2, t3;
// PARSING
t1=time(NULL);
printf("Reading edgelist from file %s\n",argv[1]);
g=el_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);
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));
// fonctions du TP3
double *p_distrib;
p_distrib = (double*) malloc((g->n)*sizeof(double));
pagerank(g, p_distrib, 0.5, 4);
printf("test %d = %d\n", (1/), p_distrib[0]);
return 0;
}
\ No newline at end of file
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