CS 3343/3341 Analysis of Algorithms Spring 2012 |
Graph of Capitals in USA
|

| Graph construction: 48 mainland US capitals. Data from file: capsdistnum.txt | |||||||||
|---|---|---|---|---|---|---|---|---|---|
// Graph.java: set up data structure for graph
// Uses adjacency list representation
import java.io.*;
import java.util.Scanner;
public class Graph {
private int count; // number of nodes
private Scanner sc; // input file name
private GraphNode[] graph;
private void err(int code) {
System.exit(code);
}
public Graph(String fileName, int ct) {
count = ct;
int num1 = 0, num2 = 0, num = 0;
graph = new GraphNode[count];
for (int i = 0; i < count; i++)
graph[i] = null;
try {
sc = new Scanner(new
File("capsdistnum.txt"));
}
catch (Exception exception ) { err(1); }
while (sc.hasNextInt()) {
num1 = sc.nextInt();
if (sc.hasNextInt())
num2 = sc.nextInt();
else err(2);
if (sc.hasNextInt())
num = sc.nextInt();
else err(3);
// carry out insertions, both directions
insert(num1, num2, num);
insert(num2, num1, num);
}
}
private void insert(int num1, int num2,
int dist) {
// patch the new node in at the start
GraphNode node = graph[num1];
if (node == null) {
GraphNode gnode = new GraphNode();
graph[num1] = gnode;
EdgeNode enode = new EdgeNode(num2, null,
dist);
graph[num1].firstEdgeNode = enode;
}
else {
EdgeNode enode = new EdgeNode(num2,
graph[num1].firstEdgeNode, dist);
graph[num1].firstEdgeNode = enode;
}
}
public void printGraph() {
for (int i = 0; i < count; i++) {
System.out.print(i + ": ");
EdgeNode node = graph[i].firstEdgeNode;
while (node != null) {
System.out.print("[" + node.vertexNum +
"," + node.edgeDist + "]");
node = node.nextEdgeNode;
if (node != null)System.out.print(",");
else System.out.print("\n");
}
}
}
}
| // GraphNode.java: node for graph's vertex
// Holds vertex info, link to adj. list
public class GraphNode {
public EdgeNode firstEdgeNode;
// other vertex info here
public GraphNode() {
firstEdgeNode = null;
// initialize other vertex info here
}
}
| ||||||||
| Complete Structure of the Internal Graph Representation (undirected graph, so each edge appears twice) | |
|---|---|
| First vertex | Second vertices of edges and distances, starting with the first vertex at the left |
0: [2.535],[1.129],[4.755] 1: [2.663],[6.541],[5.534],[4.713],[0.129] 2: [3.160],[6.441],[1.663],[0.535] 3: [6.619],[2.160] 4: [5.652],[7.476],[1.713],[0.755] 5: [6.338],[9.435],[8.488],[4.652],[1.534] 6: [10.438],[9.727],[5.338],[3.619],[2.441],[1.541] 7: [8.355],[12.585],[11.697],[4.476] 8: [9.100],[14.486],[13.536],[12.626],[7.355],[5.488] 9: [10.675],[15.455],[14.444],[8.100],[6.727],[5.435] 10: [16.624],[15.742],[9.675],[6.438] 11: [12.388],[18.504],[17.430],[7.697] 12: [13.293],[19.416],[18.337],[11.388],[8.626],[7.585] 13: [14.165],[19.204],[12.293],[8.536] 14: [15.392],[20.187],[19.343],[13.165],[9.444],[8.486] 15: [16.215],[21.404],[20.490],[14.392],[10.742],[9.455] 16: [21.435],[15.215],[10.624] 17: [18.416],[22.150],[11.430] 18: [19.340],[26.344],[22.253],[17.416],[12.337],[11.504] 19: [20.255],[23.192],[27.562],[26.453],[18.340],[14.343],[13.204],[12.416] 20: [21.244],[24.279],[23.291],[19.255],[15.490],[14.187] 21: [24.258],[20.244],[16.435],[15.404] 22: [26.392],[25.242],[18.253],[17.150] 23: [24.249],[28.190],[27.415],[20.291],[19.192] 24: [29.614],[23.249],[21.258],[20.279] 25: [26.282],[31.160],[30.205],[22.242] 26: [27.203],[32.597],[36.530],[31.255],[25.282],[22.392],[19.453],[18.344] 27: [28.145],[34.186],[33.197],[32.532],[26.203],[23.415],[19.562] 28: [29.244],[34.175],[27.145],[23.190] 29: [34.237],[28.244],[24.614] 30: [31.252],[25.205] 31: [36.434],[35.212],[30.252],[26.255],[25.160] 32: [33.302],[37.129],[36.156],[27.532],[26.597] 33: [34.160],[38.354],[37.397],[32.302],[27.197] 34: [38.425],[33.160],[29.237],[28.175],[27.186] 35: [36.200],[31.212] 36: [35.200],[32.156],[31.434],[26.530] 37: [38.103],[39.62],[33.397],[32.129] 38: [41.268],[40.127],[39.124],[37.103],[34.425],[33.354] 39: [40.108],[38.124],[37.62] 40: [41.193],[39.108],[38.127] 41: [42.153],[44.165],[43.111],[40.193],[38.268] 42: [45.106],[44.236],[41.153] 43: [44.101],[46.72],[41.111] 44: [45.68],[46.45],[43.101],[42.236],[41.165] 45: [47.139],[44.68],[42.106] 46: [44.45],[43.72] 47: [45.139] | |