コード例 #1
0
ファイル: Graph.cs プロジェクト: akollaki/SCRAP-R
            //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);
            }
コード例 #2
0
    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);
    }
コード例 #3
0
ファイル: Form1.cs プロジェクト: Dans56Lukin/Lab20
        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) + "мс";
        }