diff --git a/src/GraphClasses/Complete.java b/src/GraphClasses/Complete.java index 8efa0d0c46d4bae9b17fbefdd684bf5df5403404..d9cb0599c2edd6d54e20c6fc7fc63ad7c4b01c8e 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 b5a4e959626a9f5f40a75250b5f183d76e4d5f6e..a0d94570ca66baf21ba3c3ee582584b5f426825c 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 b3b6173a98f3794fd6a2a6ad496ffa1e3cad2a58..d82da9de81ad64b5b1dfd7eecc0ec871d328b160 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;