Date of Award

12-12-2018

Publication Type

Master Thesis

Degree Name

M.Sc.

Department

Computer Science

First Advisor

S. Goodwin

Keywords

Artificial Intelligence, A Star Algorithm, Data Structures, Optimization, Pathfinding

Rights

info:eu-repo/semantics/openAccess

Creative Commons License

Creative Commons Attribution-Noncommercial-No Derivative Works 4.0 License
This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 4.0 License.

Abstract

Pathfinding is an essential part of many applications, including video games and robot navigation. A pathfinding algorithm usually finds a path from the given starting point to the endpoint. Many different implementations of pathfinding solutions exist in the industry. One of the most known and used of these algorithms is A*. A* will find the shortest path from the starting point to the endpoint. Classic A* algorithm can guarantee the shortest path to the desired destination which was introduced in 1968 by Hart, Nilsson, and Raphael. A* is widely used in the game industry to solve the shortest path problem. The A* algorithm utilizes two data structures. A* explores the nodes in the graph from the start position one by one and assign them a value of F which is the sum of G cost and H cost. G Cost is the actual cost of exploring the node from the starting position to the current node, and H cost is the estimation of the cost of from the current node to the goal node. The Open List keeps all of the nodes that are not explored at each iteration of the algorithm. In each iteration, the algorithm removes the node with the least value of F cost and run the algorithm. If the node is not the goal, it will be added to the closed list. Interactions with the open list, which are insert (current node) and remove Min, are the costliest part of the algorithm. It is well known that using a priority queue will increase the performance of this algorithm. A number of priority queues have been used to implement A* and improve the performance of this algorithm. We propose to use a Lazy binary heap and evaluate its performance compared to other data structures. We expect that due to decreasing the size of the current open list, it will outperform other binary heaps.

Share

COinS