001 002 package algo; 003 004 import java.io.Serializable; 005 006 /** 007 * A Graph for an TSP Problem. 008 * @author Heinz Kredel. 009 */ 010 public class Graph implements Serializable { 011 012 protected double[][] g; 013 final static double INFINITY = Double.POSITIVE_INFINITY; 014 // = unconnected 015 016 /** 017 * Constructs an unconnected graph of given size. 018 * @param n size of the graph. 019 */ 020 public Graph(int n) { 021 g = new double[n][n]; 022 for (int i = 0; i < n; i++ ) { 023 connect(i,i,0.0); 024 for (int j = i+1; j < n; j++ ) { 025 connect(i,j,INFINITY); 026 connect(j,i,INFINITY); 027 } 028 } 029 } 030 031 032 /** 033 * Connect two nodes by defining a distance. 034 * @param i node number. 035 * @param j node number. 036 * @param d distance between the two nodes. 037 */ 038 public void connect(int i, int j, double d) { 039 g[i][j] = d; 040 } 041 042 043 /** 044 * Get the distance between two nodes. 045 * @param i node number. 046 * @param j node number. 047 * @return distance between the two nodes. 048 */ 049 public double distance(int i, int j) { 050 return g[i][j]; 051 } 052 053 054 /** 055 * @return size of the graph. 056 */ 057 public int size() { 058 return g.length; 059 } 060 061 }