का उपयोग करके सबसे छोटा रास्ता ढूंढना मुझे ग्राफ के 2 कोष्ठकों के बीच सबसे छोटा मार्ग खोजने की आवश्यकता है। मेरे पास एक मैट्रिक्स है, जिसमें सभी वजन शामिल हैं। मैं यह कैसे कर सकता हूं? वर्तमान में, मैं निम्नलिखित कोड है:डिजस्ट्रा एल्गोरिदम
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 के माध्यम से भी उपलब्ध है)