作业要求: 对加权图(tinyEWD.txt,mediumEWD.txt),计算从顶点0出发到其他顶点的最短路径,要求输出其从顶点0到每个顶点的路径,以及相应的路径距离。类名:GraphDijkstra。
请参考:DijkstraSP ,相关介绍:BFS (还有其他关联代码相信大家能刨出来吧), 代码如下:
public class DijkstraSP {
private double[] distTo; // distTo[v] = distance of shortest s->v path
private DirectedEdge[] edgeTo; // edgeTo[v] = last edge on shortest s->v path
private IndexMinPQ<Double> pq; // priority queue of vertices
/**
* Computes a shortest paths tree from <tt>s</tt> to every other vertex in
* the edge-weighted digraph <tt>G</tt>.
* @param G the edge-weighted digraph
* @param s the source vertex
* @throws IllegalArgumentException if an edge weight is negative
* @throws IllegalArgumentException unless 0 ≤ <tt>s</tt> ≤ <tt>V</tt> - 1
*/
public DijkstraSP(EdgeWeightedDigraph G, int s) {
for (DirectedEdge e : G.edges()) {
if (e.weight() < 0)
throw new IllegalArgumentException("edge " + e + " has negative weight");
}
distTo = new double[G.V()];
edgeTo = new DirectedEdge[G.V()];
for (int v = 0; v < G.V(); v++)
distTo[v] = Double.POSITIVE_INFINITY;
distTo[s] = 0.0;
// relax vertices in order of distance from s
pq = new IndexMinPQ<Double>(G.V());
pq.insert(s, distTo[s]);
while (!pq.isEmpty()) {
int v = pq.delMin();
for (DirectedEdge e : G.adj(v))
relax(e);
}
// check optimality conditions
assert check(G, s);
}
// relax edge e and update pq if changed
private void relax(DirectedEdge e) {
int v = e.from(), w = e.to();
if (distTo[w] > distTo[v] + e.weight()) {
distTo[w] = distTo[v] + e.weight();
edgeTo[w] = e;
if (pq.contains(w)) pq.decreaseKey(w, distTo[w]);
else pq.insert(w, distTo[w]);
}
}
/**
* Returns the length of a shortest path from the source vertex <tt>s</tt> to vertex <tt>v</tt>.
* @param v the destination vertex
* @return the length of a shortest path from the source vertex <tt>s</tt> to vertex <tt>v</tt>;
* <tt>Double.POSITIVE_INFINITY</tt> if no such path
*/
public double distTo(int v) {
return distTo[v];
}
/**
* Is there a path from the source vertex <tt>s</tt> to vertex <tt>v</tt>?
* @param v the destination vertex
* @return <tt>true</tt> if there is a path from the source vertex
* <tt>s</tt> to vertex <tt>v</tt>, and <tt>false</tt> otherwise
*/
public boolean hasPathTo(int v) {
return distTo[v] < Double.POSITIVE_INFINITY;
}
/**
* Returns a shortest path from the source vertex <tt>s</tt> to vertex <tt>v</tt>.
* @param v the destination vertex
* @return a shortest path from the source vertex <tt>s</tt> to vertex <tt>v</tt>
* as an iterable of edges, and <tt>null</tt> if no such path
*/
public Iterable<DirectedEdge> pathTo(int v) {
if (!hasPathTo(v)) return null;
Stack<DirectedEdge> path = new Stack<DirectedEdge>();
for (DirectedEdge e = edgeTo[v]; e != null; e = edgeTo[e.from()]) {
path.push(e);
}
return path;
}
// check optimality conditions:
// (i) for all edges e: distTo[e.to()] <= distTo[e.from()] + e.weight()
// (ii) for all edge e on the SPT: distTo[e.to()] == distTo[e.from()] + e.weight()
private boolean check(EdgeWeightedDigraph G, int s) {
// check that edge weights are nonnegative
for (DirectedEdge e : G.edges()) {
if (e.weight() < 0) {
System.err.println("negative edge weight detected");
return false;
}
}
// check that distTo[v] and edgeTo[v] are consistent
if (distTo[s] != 0.0 || edgeTo[s] != null) {
System.err.println("distTo[s] and edgeTo[s] inconsistent");
return false;
}
for (int v = 0; v < G.V(); v++) {
if (v == s) continue;
if (edgeTo[v] == null && distTo[v] != Double.POSITIVE_INFINITY) {
System.err.println("distTo[] and edgeTo[] inconsistent");
return false;
}
}
// check that all edges e = v->w satisfy distTo[w] <= distTo[v] + e.weight()
for (int v = 0; v < G.V(); v++) {
for (DirectedEdge e : G.adj(v)) {
int w = e.to();
if (distTo[v] + e.weight() < distTo[w]) {
System.err.println("edge " + e + " not relaxed");
return false;
}
}
}
// check that all edges e = v->w on SPT satisfy distTo[w] == distTo[v] + e.weight()
for (int w = 0; w < G.V(); w++) {
if (edgeTo[w] == null) continue;
DirectedEdge e = edgeTo[w];
int v = e.from();
if (w != e.to()) return false;
if (distTo[v] + e.weight() != distTo[w]) {
System.err.println("edge " + e + " on shortest path not tight");
return false;
}
}
return true;
}
}
测试代码:
/**
* Unit tests the <tt>DijkstraSP</tt> data type.
*/
public static void main(String[] args) {
//In in = new In(args[0]);
In in = new In("D:/graph/tinyEWD.txt");
EdgeWeightedDigraph G = new EdgeWeightedDigraph(in);
//int s = Integer.parseInt(args[1]);
int s = 0;
// compute shortest paths
DijkstraSP sp = new DijkstraSP(G, s);
// print shortest path
for (int t = 0; t < G.V(); t++) {
if (sp.hasPathTo(t)) {
StdOut.printf("%d to %d (%.2f) ", s, t, sp.distTo(t));
if (sp.hasPathTo(t)) {
for (DirectedEdge e : sp.pathTo(t)) {
StdOut.print(e + " ");
}
}
StdOut.println();
}
else {
StdOut.printf("%d to %d no path\n", s, t);
}
}
}
运行结果:
对加权图(tinyEWD.txt):
0 to 0 (0.00)
0 to 1 (1.05) 5->1 0.32 4->5 0.35 0->4 0.38
0 to 2 (0.26) 0->2 0.26
0 to 3 (0.99) 7->3 0.39 2->7 0.34 0->2 0.26
0 to 4 (0.38) 0->4 0.38
0 to 5 (0.73) 4->5 0.35 0->4 0.38
0 to 6 (1.51) 3->6 0.52 7->3 0.39 2->7 0.34 0->2 0.26
0 to 7 (0.60) 2->7 0.34 0->2 0.26
对加权图(mediumEWD.txt):
0 to 0 (0.00)
0 to 1 (0.71) 107->1 0.07 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 2 (0.65) 42->2 0.11 181->42 0.07 65->181 0.11 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 3 (0.46) 45->3 0.12 104->45 0.11 248->104 0.07 97->248 0.09 0->97 0.08
0 to 4 (0.42) 77->4 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 5 (0.32) 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 6 (0.87) 166->6 0.07 14->166 0.08 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 7 (0.43) 197->7 0.07 118->197 0.07 165->118 0.08 191->165 0.11 0->191 0.11
0 to 8 (0.71) 210->8 0.11 205->210 0.08 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 9 (0.20) 58->9 0.10 0->58 0.10
0 to 10 (0.90) 246->10 0.10 152->246 0.10 210->152 0.11 205->210 0.08 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 11 (0.74) 207->11 0.11 205->207 0.11 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 12 (0.72) 242->12 0.08 90->242 0.10 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 13 (0.84) 100->13 0.03 70->100 0.11 214->70 0.11 205->214 0.07 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 14 (0.72) 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 15 (0.06) 0->15 0.06
0 to 16 (0.92) 166->16 0.11 14->166 0.08 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 17 (0.80) 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 18 (0.66) 86->18 0.03 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 19 (0.77) 70->19 0.07 214->70 0.11 205->214 0.07 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 20 (0.81) 194->20 0.09 87->194 0.08 136->87 0.10 55->136 0.10 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 21 (0.44) 65->21 0.08 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 22 (0.98) 120->22 0.06 229->120 0.08 170->229 0.11 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 23 (0.17) 58->23 0.07 0->58 0.10
0 to 24 (0.10) 0->24 0.10
0 to 25 (0.79) 111->25 0.05 61->111 0.07 234->61 0.11 112->234 0.08 55->112 0.05 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 26 (0.34) 102->26 0.04 32->102 0.09 93->32 0.07 44->93 0.07 0->44 0.06
0 to 27 (0.43) 138->27 0.08 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 28 (0.66) 242->28 0.03 90->242 0.10 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 29 (1.04) 227->29 0.10 81->227 0.08 17->81 0.06 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 30 (0.68) 219->30 0.11 205->219 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 31 (0.58) 37->31 0.09 76->37 0.03 45->76 0.11 104->45 0.11 248->104 0.07 97->248 0.09 0->97 0.08
0 to 32 (0.21) 93->32 0.07 44->93 0.07 0->44 0.06
0 to 33 (0.18) 114->33 0.09 0->114 0.10
0 to 34 (1.01) 120->34 0.09 229->120 0.08 170->229 0.11 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 35 (0.71) 141->35 0.11 135->141 0.07 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 36 (0.79) 35->36 0.09 141->35 0.11 135->141 0.07 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 37 (0.48) 76->37 0.03 45->76 0.11 104->45 0.11 248->104 0.07 97->248 0.09 0->97 0.08
0 to 38 (1.15) 109->38 0.09 146->109 0.08 134->146 0.07 17->134 0.10 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 39 (0.15) 15->39 0.09 0->15 0.06
0 to 40 (0.82) 194->40 0.11 87->194 0.08 136->87 0.10 55->136 0.10 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 41 (0.77) 198->41 0.10 242->198 0.03 90->242 0.10 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 42 (0.54) 181->42 0.07 65->181 0.11 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 43 (0.65) 221->43 0.04 205->221 0.09 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 44 (0.06) 0->44 0.06
0 to 45 (0.34) 104->45 0.11 248->104 0.07 97->248 0.09 0->97 0.08
0 to 46 (0.92) 186->46 0.08 72->186 0.09 107->72 0.12 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 47 (1.06) 218->47 0.03 227->218 0.09 81->227 0.08 17->81 0.06 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 48 (0.25) 50->48 0.10 59->50 0.04 0->59 0.11
0 to 49 (0.05) 0->49 0.05
0 to 50 (0.15) 59->50 0.04 0->59 0.11
0 to 51 (0.69) 110->51 0.11 205->110 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 52 (0.23) 93->52 0.10 44->93 0.07 0->44 0.06
0 to 53 (0.93) 229->53 0.09 170->229 0.11 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 54 (0.98) 147->54 0.07 129->147 0.09 14->129 0.11 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 55 (0.43) 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 56 (0.97) 120->56 0.05 229->120 0.08 170->229 0.11 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 57 (0.37) 208->57 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 58 (0.10) 0->58 0.10
0 to 59 (0.11) 0->59 0.11
0 to 60 (0.82) 111->60 0.09 61->111 0.07 234->61 0.11 112->234 0.08 55->112 0.05 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 61 (0.66) 234->61 0.11 112->234 0.08 55->112 0.05 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 62 (0.45) 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 63 (0.88) 25->63 0.09 111->25 0.05 61->111 0.07 234->61 0.11 112->234 0.08 55->112 0.05 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 64 (1.00) 134->64 0.09 17->134 0.10 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 65 (0.36) 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 66 (0.17) 149->66 0.08 0->149 0.10
0 to 67 (0.37) 217->67 0.05 104->217 0.10 248->104 0.07 97->248 0.09 0->97 0.08
0 to 68 (0.12) 0->68 0.12
0 to 69 (0.58) 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 70 (0.70) 214->70 0.11 205->214 0.07 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 71 (0.43) 65->71 0.07 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 72 (0.75) 107->72 0.12 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 73 (1.03) 120->73 0.11 229->120 0.08 170->229 0.11 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 74 (1.15) 183->74 0.05 64->183 0.10 134->64 0.09 17->134 0.10 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 75 (0.78) 194->75 0.06 87->194 0.08 136->87 0.10 55->136 0.10 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 76 (0.45) 45->76 0.11 104->45 0.11 248->104 0.07 97->248 0.09 0->97 0.08
0 to 77 (0.32) 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 78 (0.43) 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 79 (0.69) 214->79 0.09 205->214 0.07 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 80 (0.07) 0->80 0.07
0 to 81 (0.86) 17->81 0.06 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 82 (0.73) 207->82 0.10 205->207 0.11 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 83 (0.31) 104->83 0.09 248->104 0.07 97->248 0.09 0->97 0.08
0 to 84 (0.78) 70->84 0.08 214->70 0.11 205->214 0.07 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 85 (0.77) 82->85 0.04 207->82 0.10 205->207 0.11 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 86 (0.63) 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 87 (0.63) 136->87 0.10 55->136 0.10 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 88 (0.78) 35->88 0.07 141->35 0.11 135->141 0.07 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 89 (0.76) 61->89 0.09 234->61 0.11 112->234 0.08 55->112 0.05 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 90 (0.54) 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 91 (1.00) 134->91 0.10 17->134 0.10 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 92 (0.41) 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 93 (0.13) 44->93 0.07 0->44 0.06
0 to 94 (0.67) 141->94 0.08 135->141 0.07 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 95 (0.43) 83->95 0.12 104->83 0.09 248->104 0.07 97->248 0.09 0->97 0.08
0 to 96 (0.87) 25->96 0.09 111->25 0.05 61->111 0.07 234->61 0.11 112->234 0.08 55->112 0.05 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 97 (0.08) 0->97 0.08
0 to 98 (0.86) 88->98 0.09 35->88 0.07 141->35 0.11 135->141 0.07 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 99 (0.94) 129->99 0.11 14->129 0.11 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 100 (0.82) 70->100 0.11 214->70 0.11 205->214 0.07 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 101 (0.53) 125->101 0.11 197->125 0.06 118->197 0.07 165->118 0.08 191->165 0.11 0->191 0.11
0 to 102 (0.30) 32->102 0.09 93->32 0.07 44->93 0.07 0->44 0.06
0 to 103 (0.82) 19->103 0.05 70->19 0.07 214->70 0.11 205->214 0.07 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 104 (0.23) 248->104 0.07 97->248 0.09 0->97 0.08
0 to 105 (0.84) 143->105 0.07 30->143 0.09 219->30 0.11 205->219 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 106 (0.84) 143->106 0.07 30->143 0.09 219->30 0.11 205->219 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 107 (0.64) 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 108 (0.58) 181->108 0.11 65->181 0.11 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 109 (1.06) 146->109 0.08 134->146 0.07 17->134 0.10 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 110 (0.58) 205->110 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 111 (0.73) 61->111 0.07 234->61 0.11 112->234 0.08 55->112 0.05 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 112 (0.47) 55->112 0.05 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 113 (0.65) 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 114 (0.10) 0->114 0.10
0 to 115 (0.49) 76->115 0.04 45->76 0.11 104->45 0.11 248->104 0.07 97->248 0.09 0->97 0.08
0 to 116 (0.80) 194->116 0.09 87->194 0.08 136->87 0.10 55->136 0.10 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 117 (0.96) 6->117 0.09 166->6 0.07 14->166 0.08 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 118 (0.30) 165->118 0.08 191->165 0.11 0->191 0.11
0 to 119 (0.94) 81->119 0.08 17->81 0.06 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 120 (0.92) 229->120 0.08 170->229 0.11 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 121 (0.71) 113->121 0.05 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 122 (0.52) 92->122 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 123 (0.91) 246->123 0.10 152->246 0.10 210->152 0.11 205->210 0.08 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 124 (0.27) 165->124 0.05 191->165 0.11 0->191 0.11
0 to 125 (0.42) 197->125 0.06 118->197 0.07 165->118 0.08 191->165 0.11 0->191 0.11
0 to 126 (1.15) 109->126 0.09 146->109 0.08 134->146 0.07 17->134 0.10 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 127 (0.86) 89->127 0.11 61->89 0.09 234->61 0.11 112->234 0.08 55->112 0.05 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 128 (0.46) 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 129 (0.83) 14->129 0.11 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 130 (0.67) 87->130 0.04 136->87 0.10 55->136 0.10 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 131 (0.83) 143->131 0.06 30->143 0.09 219->30 0.11 205->219 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 132 (0.41) 171->132 0.07 165->171 0.12 191->165 0.11 0->191 0.11
0 to 133 (0.79) 14->133 0.07 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 134 (0.91) 17->134 0.10 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 135 (0.53) 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 136 (0.53) 55->136 0.10 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 137 (1.01) 134->137 0.10 17->134 0.10 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 138 (0.36) 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 139 (0.52) 92->139 0.11 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 140 (0.96) 147->140 0.05 129->147 0.09 14->129 0.11 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 141 (0.59) 135->141 0.07 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 142 (0.26) 165->142 0.05 191->165 0.11 0->191 0.11
0 to 143 (0.77) 30->143 0.09 219->30 0.11 205->219 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 144 (0.15) 97->144 0.07 0->97 0.08
0 to 145 (1.00) 119->145 0.05 81->119 0.08 17->81 0.06 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 146 (0.97) 134->146 0.07 17->134 0.10 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 147 (0.91) 129->147 0.09 14->129 0.11 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 148 (0.43) 57->148 0.06 208->57 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 149 (0.10) 0->149 0.10
0 to 150 (0.82) 1->150 0.11 107->1 0.07 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 151 (0.26) 231->151 0.09 44->231 0.10 0->44 0.06
0 to 152 (0.71) 210->152 0.11 205->210 0.08 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 153 (0.50) 76->153 0.04 45->76 0.11 104->45 0.11 248->104 0.07 97->248 0.09 0->97 0.08
0 to 154 (0.36) 195->154 0.11 9->195 0.05 58->9 0.10 0->58 0.10
0 to 155 (0.26) 165->155 0.05 191->165 0.11 0->191 0.11
0 to 156 (0.57) 205->156 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 157 (0.43) 57->157 0.07 208->57 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 158 (0.75) 113->158 0.10 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 159 (0.51) 55->159 0.08 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 160 (0.12) 0->160 0.12
0 to 161 (0.89) 177->161 0.07 72->177 0.06 107->72 0.12 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 162 (0.96) 192->162 0.09 19->192 0.09 70->19 0.07 214->70 0.11 205->214 0.07 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 163 (0.09) 0->163 0.09
0 to 164 (0.79) 194->164 0.07 87->194 0.08 136->87 0.10 55->136 0.10 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 165 (0.21) 191->165 0.11 0->191 0.11
0 to 166 (0.80) 14->166 0.08 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 167 (1.05) 117->167 0.09 6->117 0.09 166->6 0.07 14->166 0.08 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 168 (0.17) 44->168 0.10 0->44 0.06
0 to 169 (0.88) 189->169 0.09 72->189 0.04 107->72 0.12 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 170 (0.73) 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 171 (0.33) 165->171 0.12 191->165 0.11 0->191 0.11
0 to 172 (0.31) 165->172 0.10 191->165 0.11 0->191 0.11
0 to 173 (0.58) 128->173 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 174 (0.79) 70->174 0.09 214->70 0.11 205->214 0.07 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 175 (0.84) 11->175 0.10 207->11 0.11 205->207 0.11 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 176 (0.09) 0->176 0.09
0 to 177 (0.82) 72->177 0.06 107->72 0.12 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 178 (0.92) 98->178 0.05 88->98 0.09 35->88 0.07 141->35 0.11 135->141 0.07 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 179 (0.75) 212->179 0.09 219->212 0.08 205->219 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 180 (0.23) 165->180 0.02 191->165 0.11 0->191 0.11
0 to 181 (0.47) 65->181 0.11 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 182 (0.74) 113->182 0.09 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 183 (1.10) 64->183 0.10 134->64 0.09 17->134 0.10 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 184 (0.40) 57->184 0.03 208->57 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 185 (0.15) 97->185 0.08 0->97 0.08
0 to 186 (0.85) 72->186 0.09 107->72 0.12 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 187 (0.21) 93->187 0.08 44->93 0.07 0->44 0.06
0 to 188 (0.40) 65->188 0.04 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 189 (0.79) 72->189 0.04 107->72 0.12 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 190 (0.86) 164->190 0.07 194->164 0.07 87->194 0.08 136->87 0.10 55->136 0.10 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 191 (0.11) 0->191 0.11
0 to 192 (0.86) 19->192 0.09 70->19 0.07 214->70 0.11 205->214 0.07 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 193 (0.84) 143->193 0.07 30->143 0.09 219->30 0.11 205->219 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 194 (0.72) 87->194 0.08 136->87 0.10 55->136 0.10 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 195 (0.25) 9->195 0.05 58->9 0.10 0->58 0.10
0 to 196 (0.56) 101->196 0.03 125->101 0.11 197->125 0.06 118->197 0.07 165->118 0.08 191->165 0.11 0->191 0.11
0 to 197 (0.36) 118->197 0.07 165->118 0.08 191->165 0.11 0->191 0.11
0 to 198 (0.67) 242->198 0.03 90->242 0.10 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 199 (0.86) 25->199 0.08 111->25 0.05 61->111 0.07 234->61 0.11 112->234 0.08 55->112 0.05 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 200 (0.72) 107->200 0.08 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 201 (0.22) 185->201 0.07 97->185 0.08 0->97 0.08
0 to 202 (0.05) 0->202 0.05
0 to 203 (0.75) 107->203 0.12 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 204 (0.05) 0->204 0.05
0 to 205 (0.52) 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 206 (0.20) 24->206 0.10 0->24 0.10
0 to 207 (0.63) 205->207 0.11 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 208 (0.26) 231->208 0.09 44->231 0.10 0->44 0.06
0 to 209 (0.10) 0->209 0.10
0 to 210 (0.60) 205->210 0.08 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 211 (0.08) 0->211 0.08
0 to 212 (0.65) 219->212 0.08 205->219 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 213 (0.26) 165->213 0.05 191->165 0.11 0->191 0.11
0 to 214 (0.59) 205->214 0.07 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 215 (1.11) 64->215 0.11 134->64 0.09 17->134 0.10 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 216 (0.32) 48->216 0.08 50->48 0.10 59->50 0.04 0->59 0.11
0 to 217 (0.33) 104->217 0.10 248->104 0.07 97->248 0.09 0->97 0.08
0 to 218 (1.03) 227->218 0.09 81->227 0.08 17->81 0.06 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 219 (0.57) 205->219 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 220 (0.82) 1->220 0.10 107->1 0.07 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 221 (0.61) 205->221 0.09 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 222 (0.08) 0->222 0.08
0 to 223 (0.70) 113->223 0.05 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 224 (1.07) 29->224 0.03 227->29 0.10 81->227 0.08 17->81 0.06 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 225 (0.02) 0->225 0.02
0 to 226 (0.24) 93->226 0.11 44->93 0.07 0->44 0.06
0 to 227 (0.94) 81->227 0.08 17->81 0.06 170->17 0.08 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 228 (0.54) 3->228 0.08 45->3 0.12 104->45 0.11 248->104 0.07 97->248 0.09 0->97 0.08
0 to 229 (0.84) 170->229 0.11 113->170 0.07 90->113 0.12 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 230 (0.41) 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 231 (0.17) 44->231 0.10 0->44 0.06
0 to 232 (0.26) 185->232 0.10 97->185 0.08 0->97 0.08
0 to 233 (0.45) 138->233 0.10 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 234 (0.55) 112->234 0.08 55->112 0.05 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 235 (0.36) 213->235 0.09 165->213 0.05 191->165 0.11 0->191 0.11
0 to 236 (0.90) 166->236 0.09 14->166 0.08 86->14 0.09 135->86 0.10 230->135 0.11 65->230 0.05 208->65 0.11 231->208 0.09 44->231 0.10 0->44 0.06
0 to 237 (0.93) 63->237 0.05 25->63 0.09 111->25 0.05 61->111 0.07 234->61 0.11 112->234 0.08 55->112 0.05 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 238 (0.36) 195->238 0.11 9->195 0.05 58->9 0.10 0->58 0.10
0 to 239 (0.45) 78->239 0.02 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06
0 to 240 (0.38) 138->240 0.02 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 241 (0.53) 3->241 0.07 45->3 0.12 104->45 0.11 248->104 0.07 97->248 0.09 0->97 0.08
0 to 242 (0.64) 90->242 0.10 62->90 0.09 138->62 0.09 226->138 0.11 93->226 0.11 44->93 0.07 0->44 0.06
0 to 243 (0.86) 84->243 0.07 70->84 0.08 214->70 0.11 205->214 0.07 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 244 (0.70) 212->244 0.04 219->212 0.08 205->219 0.05 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 245 (0.34) 195->245 0.09 9->195 0.05 58->9 0.10 0->58 0.10
0 to 246 (0.80) 152->246 0.10 210->152 0.11 205->210 0.08 92->205 0.12 172->92 0.09 165->172 0.10 191->165 0.11 0->191 0.11
0 to 247 (0.88) 116->247 0.08 194->116 0.09 87->194 0.08 136->87 0.10 55->136 0.10 5->55 0.11 32->5 0.11 93->32 0.07 44->93 0.07 0->44 0.06
0 to 248 (0.16) 97->248 0.09 0->97 0.08
0 to 249 (0.78) 200->249 0.06 107->200 0.08 69->107 0.06 128->69 0.12 78->128 0.04 77->78 0.11 187->77 0.11 93->187 0.08 44->93 0.07 0->44 0.06