1 class NearestNeighbour
{
4 protected int[][] NearestNeighbour
;
6 NearestNeighbour(Graph graph
) {
8 this.NearestNeighbour
=
9 new int[graph
.getNumOfCities()][graph
.getNearestNeighboursDepth()];
11 for (int i
= 0; i
< graph
.getNumOfCities(); i
++) {
12 for (int j
= 0; j
< graph
.getNearestNeighboursDepth(); j
++) {
13 setNearestNeighbour(i
, j
, -1);
18 public void computeNearestNeighbours() {
19 for (int City
= 0; City
< graph
.getNumOfCities(); City
++) {
20 for (int Neighbour
= 0; Neighbour
< graph
.getNumOfCities(); Neighbour
++) {
22 if (City
== Neighbour
) {
26 for (int d
= 0; d
< graph
.getNearestNeighboursDepth(); d
++) {
28 /* if there is no entry yet, then assign */
29 if (getNearestNeighbour(City
,d
) == -1) {
30 setNearestNeighbour(City
,d
, Neighbour
);
33 /* if distance from city to neighbour is smaller
34 * than distance from city to neighbour from list */
35 if (graph
.getDistance(City
,Neighbour
) <
36 graph
.getDistance(City
, getNearestNeighbour(City
,d
))) {
38 /* copy element n-1 to n; right shift so to say; until elem d is reached */
39 for (int c
= graph
.getNearestNeighboursDepth() - 1; c
> d
; c
--) {
40 setNearestNeighbour(City
,c
, getNearestNeighbour(City
,c
-1));
42 setNearestNeighbour(City
,d
, Neighbour
);
53 public int[][] getNearestNeighbour() {
54 return this.NearestNeighbour
;
57 public int getNearestNeighbour(int x
, int y
) {
58 return this.NearestNeighbour
[x
][y
];
61 public void setNearestNeighbour(int[][] NearestNeighbour
) {
62 this.NearestNeighbour
= NearestNeighbour
;
65 public void setNearestNeighbour(int x
, int y
, int NearestNeighbour
) {
66 this.NearestNeighbour
[x
][y
] = NearestNeighbour
;