Пример #1
0
        void init(DijkstraPath[] g, string s)
        {
            int i = 0;

            string[] nodes = new string[g.Length];
            foreach (DijkstraPath node in g)
            {
                bool found = false;
                foreach (string n in nodes)
                {
                    if (n == node.node)
                    {
                        found = true;
                    }
                }
                if (!found)
                {
                    nodes[i] = node.node;
                    i++;
                }
            }

            Way = new DijkstraPath[i];
            Q   = new string[i];
            for (i = 0; i < Q.Length; i++)
            {
                Way[i] = new DijkstraPath(nodes[i], null, (nodes[i] == s) ? 0 : int.MaxValue);
                Q[i]   = nodes[i];
            }
        }
Пример #2
0
        void distUpdate(string u, string v, int d)
        {
            int          alt;
            int          WayU = 0;
            int          WayV = 0;
            DijkstraPath nb   = null;

            foreach (DijkstraPath p in Way)
            {
                if (p.node == u)
                {
                    WayU = p.distance;
                }
                if (p.node == v)
                {
                    WayV = p.distance;
                    nb   = p;
                }
            }
            Debug.Assert(nb != null);
            alt = WayU + d;
            if (alt < WayV)
            {
                nb.distance     = alt;
                nb.neighborNode = u;
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
            string[] lines = System.IO.File.ReadAllLines(@"D:\Henry\Desktop/dVDijkstra.txt");
            DijkstraList     = new DijkstraPath[lines.Length * 2];
            DijkstraNodeList = new string[lines.Length * 2];
            int i = 0;

            foreach (string line in lines)
            {
                DijkstraList[i] = new DijkstraPath(DijkstraReader.readNode(line), DijkstraReader.readPrevNode(line), DijkstraReader.readDistance(line));
                i++;
                DijkstraList[i] = new DijkstraPath(DijkstraReader.readPrevNode(line), DijkstraReader.readNode(line), DijkstraReader.readDistance(line));

                /*a.setNext(DijkstraList);
                 * DijkstraList = a;*/
                i++;
            }
            Dijkstra path = new Dijkstra(DijkstraList, "KEO");

            Console.WriteLine(path.shortestDistance("MinmusIC"));
            Console.ReadKey();
        }