Example #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            EdgeWeigthDigrapth edgeWeigthDigrapth = new EdgeWeigthDigrapth(6);

            edgeWeigthDigrapth.AddEdge(new DirectedEdge(1, 5, 2));
            edgeWeigthDigrapth.AddEdge(new DirectedEdge(1, 3, 3));
            edgeWeigthDigrapth.AddEdge(new DirectedEdge(1, 2, 1));

            edgeWeigthDigrapth.AddEdge(new DirectedEdge(2, 3, 5));
            edgeWeigthDigrapth.AddEdge(new DirectedEdge(2, 4, 8));

            edgeWeigthDigrapth.AddEdge(new DirectedEdge(5, 3, 4));

            edgeWeigthDigrapth.AddEdge(new DirectedEdge(3, 4, 5));


            int startpoint = 0;
            //ShortestPath sp = new ShortestPath(edgeWeigthDigrapth, startpoint);
            //for (int i = 0; i < edgeWeigthDigrapth.Size; i++)
            //{
            //    Console.WriteLine($"Distance from{startpoint} to {i} is {sp.distTo(i)}");
            //}

            Dijkstra d = new Dijkstra(edgeWeigthDigrapth, 1);
        }
        public Dijkstra(EdgeWeigthDigrapth edgeWeigthDigrapth, int start)
        {
            this.edgeTo        = new DirectedEdge[edgeWeigthDigrapth.Size];
            this.distTo        = new double[edgeWeigthDigrapth.Size];
            this.priorityQuene = new PriorityQuene();


            for (int i = 0; i < edgeWeigthDigrapth.Size; i++)
            {
                distTo[i] = double.PositiveInfinity;
            }

            distTo[start] = 0;
            this.priorityQuene.Insert(start, 0);
            while (priorityQuene.Count > 0)
            {
                int v = priorityQuene.GetSmallestToVertexWeight();
                foreach (DirectedEdge edge in edgeWeigthDigrapth.Vertexes[v])
                {
                    Relax(edge);
                }
            }
        }