-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.java
More file actions
79 lines (73 loc) · 3.5 KB
/
Copy pathmain.java
File metadata and controls
79 lines (73 loc) · 3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import java.util.Map;
import java.util.Set;
import java.util.ArrayList;
public class main{
static public void main(String argv[]){
// Dijkstra
java.util.List<Graph.Vertex<Integer>> verticies = new java.util.ArrayList<Graph.Vertex<Integer>>();
Graph.Vertex<Integer> v1 = new Graph.Vertex<Integer>(1);
verticies.add(v1);
Graph.Vertex<Integer> v2 = new Graph.Vertex<Integer>(2);
verticies.add(v2);
Graph.Vertex<Integer> v3 = new Graph.Vertex<Integer>(3);
verticies.add(v3);
Graph.Vertex<Integer> v4 = new Graph.Vertex<Integer>(4);
verticies.add(v4);
Graph.Vertex<Integer> v5 = new Graph.Vertex<Integer>(5);
verticies.add(v5);
Graph.Vertex<Integer> v6 = new Graph.Vertex<Integer>(6);
verticies.add(v6);
java.util.List<Graph.Edge<Integer>> edges = new java.util.ArrayList<Graph.Edge<Integer>>();
Graph.Edge<Integer> e1_2 = new Graph.Edge<Integer>(7, v1, v2);
edges.add(e1_2);
Graph.Edge<Integer> e1_3 = new Graph.Edge<Integer>(9, v1, v3);
edges.add(e1_3);
Graph.Edge<Integer> e1_6 = new Graph.Edge<Integer>(14, v1, v6);
edges.add(e1_6);
Graph.Edge<Integer> e2_3 = new Graph.Edge<Integer>(10, v2, v3);
edges.add(e2_3);
Graph.Edge<Integer> e2_4 = new Graph.Edge<Integer>(15, v2, v4);
edges.add(e2_4);
Graph.Edge<Integer> e3_4 = new Graph.Edge<Integer>(11, v3, v4);
edges.add(e3_4);
Graph.Edge<Integer> e3_6 = new Graph.Edge<Integer>(2, v3, v6);
edges.add(e3_6);
Graph.Edge<Integer> e5_6 = new Graph.Edge<Integer>(9, v5, v6);
edges.add(e5_6);
Graph.Edge<Integer> e4_5 = new Graph.Edge<Integer>(6, v4, v5);
edges.add(e4_5);
Graph<Integer> undirected = new Graph<Integer>(verticies, edges);
Graph.Vertex<Integer> start = v1;
System.out.println("---Dijkstra---");
java.util.Map<Graph.Vertex<Integer>, Graph.CostPathPair<Integer>> map1 = Dijkstra.getShortestPaths(undirected, start);
System.out.println(getPathMapString(start, map1));
System.out.println("---BellmanFord---");
Map<Graph.Vertex<Integer>, Graph.CostPathPair<Integer>> map2 = BellmanFord.getShortestPaths(undirected, start);
System.out.println(getPathMapString(start, map2));
System.out.println("---Prim---");
Graph.CostPathPair<Integer> pair = Prim.getMinimumSpanningTree(undirected, start);
System.out.println(pair.toString());
}
private static final String getPathMapString(Graph.Vertex<Integer> start, Map<Graph.Vertex<Integer>, Graph.CostPathPair<Integer>> map) {
StringBuilder builder = new StringBuilder();
for (Graph.Vertex<Integer> v : map.keySet()) {
Graph.CostPathPair<Integer> pair = map.get(v);
builder.append("From ").append(start.getValue()).append(" to vertex=").append(v.getValue()).append("\n");
if (pair != null)
builder.append(pair.toString()).append("\n");
}
return builder.toString();
}
private static final String getPathMapString(Map<Graph.Vertex<Integer>, Map<Graph.Vertex<Integer>, Set<Graph.Edge<Integer>>>> paths) {
StringBuilder builder = new StringBuilder();
for (Graph.Vertex<Integer> v : paths.keySet()) {
Map<Graph.Vertex<Integer>, Set<Graph.Edge<Integer>>> map = paths.get(v);
for (Graph.Vertex<Integer> v2 : map.keySet()) {
builder.append("From=").append(v.getValue()).append(" to=").append(v2.getValue()).append("\n");
Set<Graph.Edge<Integer>> path = map.get(v2);
builder.append(path).append("\n");
}
}
return builder.toString();
}
}