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); } } }