그래프의 2 정점 사이의 최단 경로를 찾아야합니다. 모든 가중치를 포함하는 행렬이 있습니다. 내가 어떻게 해? 현재, 나는 다음과 같은 코드를 가지고 :Dijkstra 알고리즘을 사용하여 최단 경로 찾기
private int[] Dijkstra(int start, int end)
{
bool[] done = new bool[8];
int[] parent = new int[8];
for (int i = 0; i < parent.Length; i++)
parent[i] = -1;
int[] distances = new int[8];
for (int i = 0; i < distances.Length; i++)
distances[i] = int.MaxValue;
distances[start] = 0;
int current = start;
while (!done[current])
{
done[current] = true;
for (int i = 0; i < 8; i++)
{
if (graph[current, i] != int.MaxValue)
{
int dist = graph[current, i] + distances[current];
if (dist < distances[i])
{
distances[i] = dist;
parent[i] = current;
}
}
}
int min = int.MaxValue;
for (int i = 0; i < 8; i++)
{
if (distances[i] < min&&!done[i])
{
current = i;
min = distances[i];
}
}
}
return parent;
}
그것은 그러나 내가 예 1, 3, 그것은 사이의 최단 경로를 찾을 수 있도록, 1과 같은 경로를 반환하는 방법을 모르는, 작동하지만 => 4 => 2 => 3.
미리 감사드립니다. http://quickgraph.codeplex.com/ (NuGet 통해도 가능)