Select Git revision
FirefighterGridTest.java
Forked from
COUETOUX Basile / FirefighterStarter
Source project has a limited visibility.
-
LABOUREL Arnaud authoredLABOUREL Arnaud authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Main.java 3.14 KiB
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class MainStub {
@SuppressWarnings("unused")
private final static Random gen = new Random();
public static ArrayList<Edge> genTree(Graph graph) {
ArrayList<Edge> randomTree;
// TOOO : modifier l'algorithme utiliser ici.
// Non-random BFS
ArrayList<Arc> randomArcTree =
BreadthFirstSearch.generateTree(graph,0);
randomTree = new ArrayList<>();
for (Arc a : randomArcTree) randomTree.add(a.support);
return randomTree;
}
public static void main(String argv[]) throws InterruptedException {
Grid grid = null;
grid = new Grid(1920/11,1080/11);
Graph graph = grid.graph;
// Graph graph = new Complete(400).graph;
// Graph graph = new ErdosRenyi(1_000, 100).graph;
// Graph graph = new Lollipop(1_000).graph;
int nbrOfSamples = 10;
int diameterSum = 0;
double eccentricitySum = 0;
long wienerSum = 0;
int degreesSum[] = {0, 0, 0, 0, 0};
int degrees[];
ArrayList<Edge> randomTree = null;
RootedTree rooted = null;
long startingTime = System.nanoTime();
for (int i = 0; i < nbrOfSamples; i++) {
randomTree= genTree(graph);
rooted = new RootedTree(randomTree,0);
// rooted.printStats();
diameterSum = diameterSum + rooted.getDiameter();
eccentricitySum = eccentricitySum + rooted.getAverageEccentricity();
wienerSum = wienerSum + rooted.getWienerIndex();
degrees = rooted.getDegreeDistribution(4);
for (int j = 1; j < 5; j++) {
degreesSum[j] = degreesSum[j] + degrees[j];
}
}
long delay = System.nanoTime() - startingTime;
System.out.println("On " + nbrOfSamples + " samples:");
System.out.println("Average eccentricity: "
+ (eccentricitySum / nbrOfSamples));
System.out.println("Average wiener index: "
+ (wienerSum / nbrOfSamples));
System.out.println("Average diameter: "
+ (diameterSum / nbrOfSamples));
System.out.println("Average number of leaves: "
+ (degreesSum[1] / nbrOfSamples));
System.out.println("Average number of degree 2 vertices: "
+ (degreesSum[2] / nbrOfSamples));
System.out.println("Average computation time: "
+ delay / (nbrOfSamples * 1_000_000) + "ms");
if (grid != null) showGrid(grid,rooted,randomTree);
}
private static void showGrid(
Grid grid,
RootedTree rooted,
ArrayList<Edge> randomTree
) throws InterruptedException {
JFrame window = new JFrame("solution");
final Labyrinth laby = new Labyrinth(grid, rooted);
laby.setStyleBalanced();
// laby.setShapeBigNodes();
// laby.setShapeSmallAndFull();
laby.setShapeSmoothSmallNodes();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.getContentPane().add(laby);
window.pack();
window.setLocationRelativeTo(null);
for (final Edge e : randomTree) {
laby.addEdge(e);
}
laby.drawLabyrinth();
window.setVisible(true);
// Pour générer un fichier image.
// try {
// laby.saveImage("resources/random.png");
// } catch (IOException e1) {
// e1.printStackTrace();
// }
}
}