class GraphBuilder { public ArrayList vertices; public ArrayList edges; private PFont label; private int numOfVertices; GraphBuilder(int n) { numOfVertices = n; label = loadFont("mono12.vlw"); vertices = new ArrayList(); edges = new ArrayList(); textFont(label, 12); } public void build() { int currentVertex = 0; for(int i = 0; i < numOfVertices; i++) { vertices.add(new Vertex(random(20, width-20), random(20, height-20), "V"+i)); Vertex v = (Vertex) vertices.get(i); } while(currentVertex < numOfVertices) //first measure n weights, then n-1 weights and so on. { for(int i = currentVertex; i < numOfVertices-1; i++) { Edge e = new Edge((Vertex)vertices.get(currentVertex), (Vertex)vertices.get(i+1)); edges.add(e); } currentVertex++; } Collections.sort(edges); //sort the edges so edges with smaller weights are first } public String toString() { return "Vertices: " + vertices.size() + "\nEdges: " + edges.size(); } public void drawGraph() { smooth(); fill(255, 255, 255, 50); stroke(255, 255, 255, 50); strokeWeight(3); if(edges.size() > 0) { for(int i = 0; i < numOfVertices; i++) { Vertex v = (Vertex) vertices.get(i); ellipse(v.x, v.y, 5, 4); fill(255, 255, 255, 255); text("V"+i, v.x-5, v.y-5); } for(int j = 0; j < edges.size(); j++) { Edge e = (Edge)edges.get(j); stroke(255, 255, 255, 10); strokeWeight(0.5); line(e.v0.x, e.v0.y, e.v1.x, e.v1.y); } } } }