//Get the shortest path public LinkedList <Node> getShortestPath(int sourceId, int destId) { var path = new LinkedList <Node>(); var source = getNodeByID(sourceId); var dest = getNodeByID(destId); if (weight_generated) { //Start looking for shortest path double[,] dist = Dijkstra2.Dijkstra(w_matrix, source.listPosition, num_vert); //Fill nodes fields, we may need it for (int i = 0; i < num_vert; i++) { nodes[i].distFromSource = dist[i, 0]; nodes[i].prevNode = (int)dist[i, 1]; } //Traverse the tree path = traverse(source, dest); } else { Console.WriteLine("You need to call generateWeights method first!"); } return(path); }
public int[] runDijkstra(int a, int b) { dijkstra = gameObject.GetComponent <Dijkstra2>(); //start node(a)에서 end node(b)까지 알고리즘으로 얻은 최단 경로 int[] dijkstraPaths = dijkstra.GetMinimumPath(a, b); return(dijkstraPaths); }
private void button1_Click(object sender, EventArgs e) { Dijkstra1 O = new Dijkstra1(); Node[] nodes; nodes = Graph.Nodes; int L = nodes.Length; int[][] arr = Graph.Array1(); int X = Convert.ToInt32(textBox3.Text); Stopwatch sw1 = new Stopwatch(); sw1.Start(); List <string> list = O.Result(X, L, arr); sw1.Stop(); string s1 = "От " + textBox3.Text + " "; string s = ""; for (int i = 0; i < list.Count; i++) { s = s + s1 + list[i] + Environment.NewLine; } textBox1.Text = s; Dijkstra2 D = new Dijkstra2(); s = ""; Stopwatch sw2 = new Stopwatch(); sw2.Start(); D.Result(X, L, arr); sw2.Stop(); for (int i = 0; i < D.arr1.Length; i++) { if (i == X) { s = s + s1 + "до " + i + " равно " + 0 + Environment.NewLine; } else { s = s + s1 + "до " + i + " равно " + D.arr1[X][i] + Environment.NewLine; } } textBox2.Text = s; textBox4.Text = "Время работы: " + Convert.ToString(sw1.ElapsedMilliseconds) + "мс"; textBox5.Text = "Время работы: " + Convert.ToString(sw2.ElapsedMilliseconds) + "мс"; }