Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 5966473
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 22, 20262026-05-22T19:48:19+00:00 2026-05-22T19:48:19+00:00

I’m implementing the A* search algorithm from this pseudo on wikipedia’s article: function A*(start,goal)

  • 0

I’m implementing the A* search algorithm from this pseudo on wikipedia’s article:

function A*(start,goal)
     closedset := the empty set    // The set of nodes already evaluated.
     openset := set containing the initial node    // The set of tentative nodes to be evaluated.
     came_from := the empty map    // The map of navigated nodes.

     g_score[start] := 0    // Cost from start along best known path.
     h_score[start] := heuristic_cost_estimate(start, goal)
     f_score[start] := h_score[start]    // Estimated total cost from start to goal through y.

     while openset is not empty
         x := the node in openset having the lowest f_score[] value
         if x = goal
             return reconstruct_path(came_from, came_from[goal])

         remove x from openset
         add x to closedset
         foreach y in neighbor_nodes(x)
             if y in closedset
                 continue
             tentative_g_score := g_score[x] + dist_between(x,y)

             if y not in openset
                 add y to openset
                 tentative_is_better := true
             else if tentative_g_score < g_score[y]
                 tentative_is_better := true
             else
                 tentative_is_better := false

             if tentative_is_better = true
                 came_from[y] := x
                 g_score[y] := tentative_g_score
                 h_score[y] := heuristic_cost_estimate(y, goal)
                 f_score[y] := g_score[y] + h_score[y]

     return failure


 function reconstruct_path(came_from, current_node)
     if came_from[current_node] is set
         p = reconstruct_path(came_from, came_from[current_node])
         return (p + current_node)
     else
         return current_node

I’m stuck on the line where I’m asked to retrive the node in openSet with the lowest f value.
When has openSet been filled? With what? Should it just have start on the first run?

I also don’t undestand the reconstruct path pseudo:

 ArrayList<Point> reconstructPath(Point cameFrom, Point current_node){

        //if came_from[current_node] is set //what does it mean "ïs set"?
        //???
        return null;

    }

How should that pseudo instructions be implemented?

 boolean AStar (Point start, Point goal){

        HashSet <Point>closedSet = new HashSet<Point>();
        HashSet <Point>openSet = new HashSet<Point>();
        HashMap <Point,Point> came_from = new HashMap<Point, Point>();

        HashMap <Point, Integer> g_score = new HashMap<Point, Integer>();
        HashMap <Point, Integer> h_score =new HashMap<Point,Integer>();
        HashMap <Point,Integer> f_score =new HashMap<Point,Integer>();

        g_score.put(start, 0);
        h_score.put(start, heuristic_cost_estimate(start,goal));
        f_score.put(start, heuristic_cost_estimate(start,goal));


        openSet.add(start);
        while(!openSet.isEmpty()){

            // x := the node in openset having the lowest f_score[] value
            //????
        }

        return false;

    }

 Integer heuristic_cost_estimate(Point start, Point goal){

        double minusI = (start.I-goal.I);
        int minusIi =(int)Math.pow(minusI,2.0D);

        double minusJ = (start.J-goal.J);
        int minusIj =(int)Math.pow(minusJ,2.0D);

        int ri = minusIj + minusIi;

        Integer result = new Integer(ri); 

        return result;


    }



ArrayList<Point> reconstructPath(Point cameFrom, Point current_node){

        //if came_from[current_node] is set //what does it mean "ïs set"?
        //???
        return null;

    }
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-22T19:48:19+00:00Added an answer on May 22, 2026 at 7:48 pm

    The open set initially contains the node that you start your search from – the starting node.

    openset := set containing the initial node    // The set of tentative nodes to be evaluated.
    

    As for the reconstruct path part – each time you process a node and find its neighbour X can be reached with a lower cost from the current node, you should set the came_from entry of X to the node you’re currently processing. Once you find the destination node, you reconstruct the path by following the came_from entries from the destination node until you reach to source node. You can implement this by modifying the Point class to have an additional field called came_from.

    The only way to extract the node with the lowest value from the hash table is to iterate through the hash table. An alternative is to additionally have a tree map which will allow you to quickly find the element with the smallest value (or have a specialized heap, e.g. binary or Fibonacci heap which additionally allows you to decrease values of elements within the heap).

    This is where I originally learned A*.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I need to clean up various Word 'smart' characters in user input, including but
We are using XSLT to translate a RIXML file to XML. Our RIXML contains
i want to parse a xhtml file and display in UITableView. what is the
public static bool CheckLogin(string Username, string Password, bool AutoLogin) { bool LoginSuccessful; // Trim

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.