Newer
Older
Liza Ait Braham
a validé
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package tpri;
import java.io.IOException;
import org.graphstream.algorithm.Toolkit;
import org.graphstream.algorithm.generator.BarabasiAlbertGenerator;
import org.graphstream.algorithm.generator.RandomGenerator;
import org.graphstream.graph.Graph;
import org.graphstream.graph.implementations.SingleGraph;
import org.graphstream.stream.file.FileSourceEdge;
public class ErdosEtBarbasi {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
System.setProperty("org.graphstream.ui", "swing"); // utile si tu visualises
String filename = "com-dblp.ungraph.txt";
Graph graph = new SingleGraph("DBLP");
FileSourceEdge fs = new FileSourceEdge();
fs.addSink(graph);
try {
fs.readAll(filename); // <-- méthode FileSourceEdge
} finally {
fs.removeSink(graph);
}
double avgDegree = Toolkit.averageDegree(graph);
int n = 317080; // Nombre de nœuds
// Récupérer le degré moyen DBLP
double kER = avgDegree; // RandomGenerator crée k arêtes par nouveau nœud
int mBA = (int) avgDegree / 2 ; // Arêtes par nouveau nœud pour BA
// ==== Réseau aléatoire ER ====
System.out.println("\n=== Réseau Aléatoire ER ===");
Graph erGraph = new SingleGraph("Random");
RandomGenerator erGen = new RandomGenerator(kER);
erGen.addSink(erGraph);
erGen.begin();
for(int i = 0; i < n; i++) erGen.nextEvents();
erGen.end();
// erGraph.display(); // visualisation optionnelle
measureGraph(erGraph, "ER");
// ==== Réseau Barabasi-Albert ====
System.out.println("\n=== Réseau Barabasi-Albert ===");
Graph baGraph = new SingleGraph("Barabasi-Albert");
BarabasiAlbertGenerator baGen = new BarabasiAlbertGenerator(mBA);
baGen.addSink(baGraph);
baGen.begin();
for(int i = 0; i < n; i++) baGen.nextEvents();
baGen.end();
// baGraph.display(); // visualisation optionnelle
measureGraph(baGraph, "BA");
}
// Mesure des caractéristiques
public static void measureGraph(Graph g, String name) throws IOException {
int n = g.getNodeCount();
int m = g.getEdgeCount();
double avgDegree = Toolkit.averageDegree(g);
double clustering = Toolkit.averageClusteringCoefficient(g);
double p = avgDegree / (n - 1);
double clusteringRandom = p;
System.out.println("Nombre de nœuds : " + n);
System.out.println("Nombre d'arêtes : " + m);
System.out.printf("Degré moyen : %.6f%n", avgDegree);
System.out.printf("Clustering coefficient : %.6f%n", clustering);
System.out.printf("Clustering réseau aléatoire (même n et degré moyen) : %.10f%n", clusteringRandom);
}
}