From f8d92e032addcdd06fafc8be5d8192574585b810 Mon Sep 17 00:00:00 2001 From: Luigi Santocanale <luigi.santocanale@lif.univ-mrs.fr> Date: Fri, 10 Dec 2021 11:03:14 +0100 Subject: [PATCH] modified: src/GraphClasses/Complete.java modified: src/GraphClasses/Grid.java modified: src/Main.java --- src/GraphClasses/Complete.java | 26 +++-- src/GraphClasses/Grid.java | 177 +++++++++++++++++---------------- src/Main.java | 9 +- 3 files changed, 106 insertions(+), 106 deletions(-) diff --git a/src/GraphClasses/Complete.java b/src/GraphClasses/Complete.java index 8efa0d0..d9cb059 100644 --- a/src/GraphClasses/Complete.java +++ b/src/GraphClasses/Complete.java @@ -1,19 +1,17 @@ package GraphClasses; -import Graph.* ; + +import Graph.*; public class Complete { - public Graph graph; - - public Complete(int order) { - this.graph = new Graph(order); - for(int i = 0; i < order; i++) - for (int j = i+1; j < order; j++) - graph.addEdge(new Edge(i,j,0)); - - } - - - - + public Graph graph; + + public Complete(int order) { + this.graph = new Graph(order); + for (int i = 0; i < order; i++) + for (int j = i + 1; j < order; j++) + graph.addEdge(new Edge(i, j, 0)); + + } + } diff --git a/src/GraphClasses/Grid.java b/src/GraphClasses/Grid.java index b5a4e95..a0d9457 100644 --- a/src/GraphClasses/Grid.java +++ b/src/GraphClasses/Grid.java @@ -1,4 +1,5 @@ package GraphClasses; + import Graph.*; import java.util.BitSet; @@ -6,93 +7,93 @@ import java.util.BitSet; public class Grid { - int width; - int height; - int maxVertex; - - public Graph graph; - - public int abscissaOfVertex(int vertex) { - return vertex % width; - } - - public int ordinateOfVertex(int vertex) { - return vertex / width; - } - - private int vertexOfCoordinate(int abscissa, int ordinate) { - return ordinate * width + abscissa; - } - - public Grid(int width, int height) { - this.width = width; - this.height = height; - maxVertex = width * height - 1; - graph = new Graph(maxVertex); - for (int i = 0; i < width; i++) { - for (int j = 0; j < height; j++) { - if (i < width - 1) - graph.addEdge(new Edge( - vertexOfCoordinate(i,j), - vertexOfCoordinate(i+1,j), - 0.0 - )); - if (j < height - 1) - graph.addEdge(new Edge( - vertexOfCoordinate(i,j), - vertexOfCoordinate(i,j+1), - 0.0 - )); - } - } - - } - - - public boolean isHorizontal(Edge e) { - return Math.abs(e.source - e.dest) == 1; - } - - public boolean isVertical(Edge e) { - return Math.abs(e.source - e.dest) == width; - } - - - private void drawLine(int h, BitSet right) { - for (int i = 0; i < width - 1; i++) { - System.out.print("o"); - if (right.get(vertexOfCoordinate(i,h))) System.out.print("--"); - else System.out.print(" "); - } - System.out.println("o"); - } - - private void drawInterline(int h, BitSet up) { - for (int i = 0; i < width; i++) { - if (up.get(vertexOfCoordinate(i,h))) System.out.print("|"); - else System.out.print(" "); - if (i < width-1) System.out.print(" "); - } - System.out.println(); - } - - public void drawSubgrid(Iterable<Edge> edges) { - BitSet up = new BitSet(maxVertex); - BitSet right = new BitSet(maxVertex); - for (Edge e : edges) { + int width; + int height; + int maxVertex; + + public Graph graph; + + public int abscissaOfVertex(int vertex) { + return vertex % width; + } + + public int ordinateOfVertex(int vertex) { + return vertex / width; + } + + private int vertexOfCoordinate(int abscissa, int ordinate) { + return ordinate * width + abscissa; + } + + public Grid(int width, int height) { + this.width = width; + this.height = height; + maxVertex = width * height - 1; + graph = new Graph(maxVertex + 1); + for (int i = 0; i < width; i++) { + for (int j = 0; j < height; j++) { + if (i < width - 1) + graph.addEdge(new Edge( + vertexOfCoordinate(i, j), + vertexOfCoordinate(i + 1, j), + 0.0 + )); + if (j < height - 1) + graph.addEdge(new Edge( + vertexOfCoordinate(i, j), + vertexOfCoordinate(i, j + 1), + 0.0 + )); + } + } + + } + + + public boolean isHorizontal(Edge e) { + return Math.abs(e.source - e.dest) == 1; + } + + public boolean isVertical(Edge e) { + return Math.abs(e.source - e.dest) == width; + } + + + private void drawLine(int h, BitSet right) { + for (int i = 0; i < width - 1; i++) { + System.out.print("o"); + if (right.get(vertexOfCoordinate(i, h))) System.out.print("--"); + else System.out.print(" "); + } + System.out.println("o"); + } + + private void drawInterline(int h, BitSet up) { + for (int i = 0; i < width; i++) { + if (up.get(vertexOfCoordinate(i, h))) System.out.print("|"); + else System.out.print(" "); + if (i < width - 1) System.out.print(" "); + } + System.out.println(); + } + + public void drawSubgrid(Iterable<Edge> edges) { + BitSet up = new BitSet(maxVertex); + BitSet right = new BitSet(maxVertex); + for (Edge e : edges) { // System.out.println(e.fromVertex + " -- " + e.toVertex); - if (isHorizontal(e)) - right.set(Math.min(e.source,e.dest)); - if (isVertical(e)) - up.set(Math.min(e.source,e.dest)); - } - - for (int j = 0; j < height; j++) { - drawLine(j,right); - if (j < height - 1) drawInterline(j,up); - } - - } - - + if (isHorizontal(e)) + right.set(Math.min(e.source, e.dest)); + if (isVertical(e)) + up.set(Math.min(e.source, e.dest)); + } + + for (int j = 0; j < height; j++) { + drawLine(j, right); + if (j < height - 1) drawInterline(j, up); + } + + } + + } diff --git a/src/Main.java b/src/Main.java index b3b6173..d82da9d 100644 --- a/src/Main.java +++ b/src/Main.java @@ -39,10 +39,10 @@ public class Main { 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; - return grid.graph; + //Graph graph = new Complete(400).graph; + //Graph graph = new ErdosRenyi(1_000, 100).graph; + //Graph graph = new Lollipop(1_000).graph; + return graph; } public static ArrayList<Edge> genTree(Graph graph) { @@ -54,6 +54,7 @@ public class Main { // Non-random BFS ArrayList<Arc> randomArcTree = BreadthFirstSearch.generateTree(graph, 0); + randomTree = new ArrayList<>(); for (Arc a : randomArcTree) randomTree.add(a.support); return randomTree; -- GitLab