Поиск кратчайшего маршрута с помощью алгоритма Дейкстры

Мне нужно найти кратчайший путь между двумя вершинами графа. У меня есть матрица, содержащая все веса. Как мне это сделать? В настоящее время у меня есть следующий код:

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.
Заранее спасибо.

11
задан SirSergio 20 May 2012 в 14:54
поделиться