public Dijstra(GridWorld G, int s)
        {
            world  = G;
            this.s = s;
            int V = G.VertexCount;

            marked = new bool[V];
            edgeTo = new DirectedWeightedEdge[V];
            cost   = new double[V];

            for (var i = 0; i < V; ++i)
            {
                cost[i] = double.MaxValue;
            }

            cost[s] = 0;

            pq = new IndexMinPQ <double>(V);


            pq.Insert(s, 0);

            while (!pq.IsEmpty)
            {
                var v = pq.DelMin();
                marked[v] = true;
                foreach (var e in G.Adj(v))
                {
                    Relax(G, e);
                }
            }
        }
Exemple #2
0
 public IndexMinPQEnumerator(T[] keys, int[] pq, int[] qp, int N)
 {
     this.keys = keys;
     this.pq   = pq;
     this.qp   = qp;
     this.N    = N;
     current   = new IndexMinPQ <T>(keys, pq, qp, N);
 }
Exemple #3
0
 public void Reset()
 {
     current = new IndexMinPQ <T>(keys, pq, qp, N);
 }