public void printGraph() { Set<String> nodes = graph.getAllNodes(); System.out.println("graph data\n{"); for (String node : nodes) { List<Edge<String>> edges = graph.getEdgesFor(node); for (Edge<String> edge : edges) { if (edge.getDestination().compareTo(node) < 0) System.out.println( node + " -- " + edge.getDestination() + "[label=" + edge.getWeight() + "];"); } } System.out.println("}"); }
public Graph<String> generateConnectedGraph(int nodes, int edges, int maxWeight) { SecureRandom rand = new SecureRandom(); graph = new ConcurrentGraph<String>(); createNodes(nodes); List<String> connectedNodes = new ArrayList<String>(nodes / 2); connectedNodes.add("node0"); while (connectedNodes.size() < nodes) { String randomNode1 = getRandomConnctedNode(connectedNodes, rand.nextInt(connectedNodes.size())); String randomNode2 = "node" + connectedNodes.size(); int weight = rand.nextInt(maxWeight) + 1; if (!randomNode1.equals(randomNode2)) { graph.connect(randomNode1, randomNode2, weight); connectedNodes.add(randomNode2); } } edges -= connectedNodes.size(); while (edges > 0) { String randomNode1 = getRandomConnctedNode(connectedNodes, rand.nextInt(connectedNodes.size())); String randomNode2 = getRandomConnctedNode(connectedNodes, rand.nextInt(connectedNodes.size())); int weight = rand.nextInt(maxWeight) + 1; if (!randomNode1.equals(randomNode2)) { graph.connect(randomNode1, randomNode2, weight); connectedNodes.add(randomNode2); edges--; } } System.out.println( "Graph created with " + graph.size() + " nodes and " + graph.getNumberOfEdges() + " edges "); return graph; }
private void createNodes(int amount) { for (int i = 0; i < amount; i++) graph.add("node" + i); }