prog:forloeb:dijkstra_2_csharp
Opgave: Implementer Dijkstra’s algoritme i C# med en adjacency matrix
Formål: Lær at arbejde med grafer repræsenteret som adjacency matrix, og implementer Dijkstra’s algoritme til at finde korteste afstande fra en startnode til alle andre noder i grafen.
Grafen: Brug nedenstående matrix som testgraf (værdien `int.MaxValue` repræsenterer ingen direkte forbindelse):
const int INF = int.MaxValue; int[,] graph = { // A B C D E { 0, 6, INF, 1, INF}, // A { 6, 0, 5, 2, 2}, // B {INF, 5, 0, INF, 5}, // C { 1, 2, INF, 0, 1}, // D {INF, 2, 5, 1, 0} // E };
Matrice fra Analog Dijkstra opgave:
int INF = int.MaxValue; int[,] graph = { // A B C D E F { 0, 4, 2, INF, INF, INF}, // A { 4, 0, 1, 5, INF, INF}, // B { 2, 1, 0, 8, 10, INF}, // C {INF, 5, 8, 0, 2, 6 }, // D {INF, INF, 10, 2, 0, 2 }, // E {INF, INF, INF, 6, 2, 0 }, // F };
Opgavebeskrivelse
I skal implementere Dijkstra’s algoritme med følgende trin:
- Initialiser data — opret arrays til afstande (`distances`) og besøgte noder (`visited`).
- Find næste node — find den ubesøgte node med den korteste kendte afstand.
- Opdater afstande — gennemgå alle naboer til den valgte node, og opdater afstande, hvis der findes en kortere sti via den node.
- Gentag — indtil alle noder er besøgt eller ingen nye noder kan nås.
- Udskriv resultatet — vis korteste afstande fra startnode til alle andre.
Funktionsskabeloner (uden implementering)
class Dijkstra { const int INF = int.MaxValue; int nodeCount; int[,] graph; int[] distances; bool[] visited; public Dijkstra(int[,] graph) { this.graph = graph; nodeCount = graph.GetLength(0); distances = new int[nodeCount]; visited = new bool[nodeCount]; } public void InitSearch(int start) { // TODO: Initialiser distances og visited arrays } public int FindMinDistance() { // TODO: Find ubesøgt node med mindste distance og returner dens indeks return -1; // Placeholder } public void RunDijkstra(int start) { // TODO: Implementer hovedløkken for Dijkstra’s algoritme } public void PrintResults(int start) { // TODO: Udskriv korteste afstande fra startnode til alle andre } }
Hint i pseudokode
prog/forloeb/dijkstra_2_csharp.txt · Sidst ændret: af 127.0.0.1
