예제 #1
0
파일: Astar.cs 프로젝트: vseloved/prj-algo2
        private void Relax(DirectedWeightedEdge edge, int target)
        {
            var u = edge.To();
            var v = edge.From();

            if (distTo[u] > distTo[v] + edge.Weight())
            {
                distTo[u] = distTo[v] + edge.Weight();
                edgeTo[u] = edge;

                if (pq.Contains(u))
                {
                    pq.DecreaseKey(u, heuristic(target, u) + distTo[u]);
                }
                else
                {
                    pq.Insert(u, heuristic(target, u) + distTo[u]);
                }
            }
        }