import org.graphstream.graph.Graph;
import org.graphstream.graph.Node;
import org.graphstream.graph.implementations.DefaultGraph;
import org.graphstream.stream.file.FileSource;
import org.graphstream.stream.file.FileSourceEdge;

import java.io.IOException;
import java.util.Arrays;


import static org.graphstream.algorithm.Toolkit.*;
import static org.graphstream.algorithm.Toolkit.averageDegree;

public class Propagation {
    public static void main(String[] args) throws IOException {
        Graph g = new DefaultGraph("g");
        FileSource fs = new FileSourceEdge();

        fs.addSink(g);

        try {
            fs.readAll("/home/bryan/IdeaProjects/TP2/src/fichier.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("Nombre de noeud : " + g.getNodeCount());
        System.out.println("Nombre de liens : " + g.getEdgeCount());
        System.out.println("Degres moyen : " + averageDegree(g));
        System.out.println("Coefficient de Clustering : " + averageClusteringCoefficient(g));

        double somme = 0.0;
        for (Node n : g){
            somme += Math.pow(n.getDegree(),2);
        }

        somme = somme/g.getNodeCount();
        double seuil = averageDegree(g)/somme;

        double b = 1.0/7.0;
        double u = 1.0/14.0;
        System.out.println("Taux de propagation de : "+b/u);
        System.out.println("Moyens des carré des degres : "+somme);
        System.out.println("Seuil de propagation dans un réseau sans échelle : "+seuil);
        System.out.println("Seuil de propagation dans un réseau aléatoire : "+ 1/(averageDegree(g)+1));
    }
}
