1 |
Create a node containing the goal state node_goal |

2 |
Create a node containing the start state node_start |

3 |
Put node_start on the open list |

4 |
while the OPEN list is not empty |

5 |
{ |

6 |
Get the node off the open list with the lowest f and call it node_current |

7 |
if node_current is the same state as node_goal we have found the solution; break from the while loop |

8 |
Generate each state node_successor that can come after node_current |

9 |
for each node_successor of node_current |

10 |
{ |

11 |
Set the cost of node_successor to be the cost of node_current plus the cost to get to node_successor from node_current |

12 |
find node_successor on the OPEN list |

13 |
if node_successor is on the OPEN list but the existing one is as good or better then discard this successor and continue |

14 |
if node_successor is on the CLOSED list but the existing one is as good or better then discard this successor and continue |

15 |
Remove occurences of node_successor from OPEN and CLOSED |

16 |
Set the parent of node_successor to node_current |

17 |
Set h to be the estimated distance to node_goal (Using the heuristic function) |

18 |
Add node_successor to the OPEN list |

19 |
} |

20 |
Add node_current to the CLOSED list |

21 |
} |