50,350
社区成员




import java.util.Vector;
public class GraphServiceImpl implements GraphService {
public Graph generateRandomGraph(int n) {
//Firstly: to create a empty graph model
Graph graph = new Graph();
//Secondly, to confirm the list of vertex based on the parameter 'n'
String[] vertexArray = new String[n];
for(int i = 0; i < vertexArray.length; i++) {
vertexArray[i] = "V" + i;
}
graph.setVertex(vertexArray);
Vector<Edge> edges = new Vector<Edge>();
//Finally, to confirm the adjacency Matrix
int[][] adjacencyMatrix = new int[vertexArray.length][vertexArray.length];
String vextexFrom;
String vextexTo;
int weight;
for(int i = 0; i < vertexArray.length; i++) {
for(int j = 0; j < vertexArray.length; j++) {
if(i == j) { //G.w(j,i) = 0 if i == j
adjacencyMatrix[i][j] = 0;
} else if(adjacencyMatrix[j][i] > 0) { //if randomGraph[j][i] existence, then randomGraph[i][j] = randomGraph[j][i]
adjacencyMatrix[i][j] = adjacencyMatrix[j][i]; //G.w(i,j) = G.w(j,i)
} else {
//randomly set the city distance between 1 and 1000
adjacencyMatrix[i][j] = 1+((int)(Math.random()*1000)); //G.w(i,j) > 0 if i != j
vextexFrom = vertexArray[i];
vextexTo = vertexArray[j];
weight = adjacencyMatrix[i][j];
edges.addElement(new Edge(vextexFrom, vextexTo, weight));
}
}
}
graph.setAdjacencyMatrix(adjacencyMatrix);
graph.setEdges(edges);
return graph;
}
public void printGraphMatrix(Graph graph) {
for(int i = 0; i < graph.getVertex().length; i++) {
System.out.print("\t" + graph.getVertex()[i]);
}
System.out.println();
for(int i = 0; i < graph.getVertex().length; i++) {
System.out.print(graph.getVertex()[i]);
for(int j = 0; j < graph.getVertex().length; j++) {
System.out.print("\t" + graph.getAdjacencyMatrix()[i][j]);
}
System.out.println();
}
}
public void printGraphEdges(Graph graph) {
Vector<Edge> edges = graph.getEdges();
for(Edge edge : edges) {
System.out.println(edge.getVertexFrom() + "\t" + edge.getVertexTo() + "\t" + edge.getWeight());
}
}
}
public class Edge {
private String vertexFrom;
private String vertexTo;
private int weight;
public Edge(String vertexFrom, String vertexTo, int weight) {
this.vertexFrom = vertexFrom;
this.vertexTo = vertexTo;
this.weight = weight;
}
public int compareToEdgeWeigt(Edge edge) {
return this.weight - edge.weight;
}
public String getVertexFrom() {
return vertexFrom;
}
public void setVertexFrom(String vertexFrom) {
this.vertexFrom = vertexFrom;
}
public String getVertexTo() {
return vertexTo;
}
public void setVertexTo(String vertexTo) {
this.vertexTo = vertexTo;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
}
import java.util.Vector;
public class Graph {
private String[] vertexArray;
private int[][] adjacencyMatrix;
private Vector<Edge> edges;
public Vector<Edge> getEdges() {
return edges;
}
public void setEdges(Vector<Edge> edges) {
this.edges = edges;
}
public String[] getVertex() {
return vertexArray;
}
public void setVertex(String[] vertexArray) {
this.vertexArray = vertexArray;
}
public int[][] getAdjacencyMatrix() {
return adjacencyMatrix;
}
public void setAdjacencyMatrix(int[][] adjacencyMatrix) {
this.adjacencyMatrix = adjacencyMatrix;
}
}