Hi, hab die Aufgabe einen Nächsten-Nachbar-Algorithmus zu implementieren. Will wissen, wie ich mit diesem Algorithmus 4 Knoten durchlaufen muss. Habe dazu 4 Funktionen gebaut:
Eine Main mit einer Beispielinstanz, die...
..die Funktion NearestNeighbor aufruft,welche den nächsten Nachbar zurückgeben soll, indem sie ...
..die Funktion minwert aufruft, welche den Index des Minimums eines Arrays zurückgibt und...
...die Funktion Routentest aufruft,welche testen soll,ob der nächste Nachbar schon auf der Route liegt.
Die Funktion Routentest will allerdings nicht wirklich und in meiner Route kommen Orte doppelt vor, was nicht sein soll.
Könnte mir da jemand helfen
Hier mein Code:
Eine Main mit einer Beispielinstanz, die...
..die Funktion NearestNeighbor aufruft,welche den nächsten Nachbar zurückgeben soll, indem sie ...
..die Funktion minwert aufruft, welche den Index des Minimums eines Arrays zurückgibt und...
...die Funktion Routentest aufruft,welche testen soll,ob der nächste Nachbar schon auf der Route liegt.
Die Funktion Routentest will allerdings nicht wirklich und in meiner Route kommen Orte doppelt vor, was nicht sein soll.
Könnte mir da jemand helfen
Hier mein Code:
Java:
public class Nachbar {
private static int stadt =0;
private static int route[]=new int[5];
public static void main(String []args){
//Beispielinstanz
int array[][]=new int[4][4];
int start= 0;
array[0][0] = 9999;
array[0][1] = 4;
array[0][2] = 3;
array[0][3] = 7;
array[1][0] = 4;
array[1][1] = 9999;
array[1][2] = 5;
array[1][3] = 9;
array[2][0] = 3;
array[2][1] = 5;
array[2][2] = 9999;
array[2][3] = 1;
array[3][0] = 7;
array[3][1] = 9;
array[3][2] = 1;
array[3][3] = 9999;
route[0]= start;
System.out.println(route[0]);
for(int i =1;i<route.length-1;i++){
route[i]=NearestNeighbor(array);
System.out.println(route[i]);
}
}
//Gibt nächsten Nachbar zurück
public static int NearestNeighbor(int matrix[][]){
int naechstestadt= Minwert(matrix[stadt]);
stadt = naechstestadt;
return stadt;
}
//Berechnet das Minimum eines Arrays und gibt dessen Index zurück
public static int Minwert(int[] arrays)
{
int minwertindex = 0;
for( int i = 0; i < arrays.length; i++ )
{
if ( arrays[minwertindex] > arrays [ i ] && Routentest(route,i)==false )
{
minwertindex = i;
}
}
return minwertindex;
}
//Routentest gibt an, ob sich eine Stadt bereits auf dem Weg befindet
public static boolean Routentest(int[] route, int x) {
for(int i = 0; i < route.length; i++) {
if(route[i] == x) {
return true;
}
}
return false;
}
}