最初のノードと最後のノードの間の最短パスを取得しようとしています。問題は、私のコードが常に 0 を返すことです。これは、最初のノードと最初のノードの間の距離を計算しているためだと感じていますが、これはゼロになりますが、100% ではありません。コードが常に 0 を返すのはなぜですか?
adj 行列は [10][10] で、すべてのノードが接続されており、g.network[][] が行列です。
private static int dijkstras(Graph g) {
// Dijkstra's Algorithm
int[] best = new int[g.network.length];
boolean[] visited = new boolean[g.network.length];
int max = 10000; // Infinity equivalent.
for (int i = 0; i < g.network.length; i++)
{
best[i] = max;
visited[i] = false;
}
best[0] = 0;
for(int i = 0; i < g.network.length; i++)
{
int min = max;
int currentNode = 0;
for (int j = 0; j < g.network.length; j++)
{
if (!visited[j] && best[j] < min)
{
currentNode = j;
min = best[j];
}
}
visited[currentNode] = true;
for (int j = 0; j < g.network.length; j++)
{
if (g.network[currentNode][j] < max && best[currentNode] + g.network[currentNode][j] < best[j])
{
best[j] = best[currentNode] + g.network[currentNode][j];
}
}
}
return best[g.network.length - 2];
}