GithubHelp home page GithubHelp logo

parallel-a-star's Introduction

Parallel A*Algorithm

In this project we are working on implementation of the Parallel A* algorithm.

For testing purposes, we developed a unique maze generation algorithm that utilizes the idea of MST to build a, well, unique maze of any size.

Then, we implemented several Best Path searching algorithms.

Currently we have:

  • A*
  • BFS
  • Bi-directional BFS
  • DFS
  • Dijkstra
  • A* Parallel (Naive approach)

Our plan is to utilize those algorithm to show the comparison in the performance of path searching algorithms compared to real Parallel A* algorithm implementation.

Our first idea was to implement a simple, naive, parallel A* algorithm by having multiple threads sharing the same memory address to the heap data structure used as an "open set" in the A*. Quite expectedly, this solution didn't prove to be useful because there are several drawbacks:

  1. Our heuristic function is very basic (we simply calculate the distance between two points), not computational heavy. As such, we don't spend much time when we "explore" potential neighbors of the current point.
  2. Due to #1, we have a high contention for a lock assigned to heap... In other words, threads spend most of their time by waiting for a lock (which they will never get because heuristic calculation takes too little time), instead of actually doing parallel exploration.

There are several solution to that problem, and we are currently reading several papers that explain different approaches that could be done to solve it.

Installation

Simply use cargo run --release command to run the code in the "release" mod. Release mod provides optimizations and therefore, code runs faster.

Maze Example

This is an example of generated maze and a path for source to destination.

License

MIT

parallel-a-star's People

Contributors

mplekunov avatar

Watchers

Alex Somwaru avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.