001    
002    package algo;
003    
004    import java.io.Serializable;
005    
006    /**
007     * A 2d Graph for an TSP Problem.
008     * Totaly connected graph with euclidean distance between points / nodes.
009     * @author Heinz Kredel.
010     */
011    public class PlaneGraph extends Graph implements Serializable {
012    
013    /**
014     * @param p an array of points / cities.
015     */
016        public PlaneGraph(Point[] p) {
017            super( p.length );
018            for (int i = 0; i < p.length; i++ ) {
019                for (int j = i+1; j < p.length; j++ ) {
020                    double dist = Math.sqrt( sqr( p[i].x - p[j].x )
021                                           + sqr( p[i].y - p[j].y ) );
022                    connect(i,j,dist);
023                    connect(j,i,dist);
024                }
025            }
026        }
027    
028        final double sqr(double s) { return s*s; }
029    
030    }