All Projects → Walker-TW → Algorithm Visualizer

Walker-TW / Algorithm Visualizer

Licence: mit
View Algorithms in the Browser! - Built with ReactJs

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Algorithm Visualizer

Paperbroker
An open source simulated options brokerage and UI for paper trading, algorithmic interfaces and backtesting.
Stars: ✭ 173 (-3.89%)
Mutual labels:  algorithm
Smetrics
String metrics library written in Go.
Stars: ✭ 177 (-1.67%)
Mutual labels:  algorithm
Leetcode
High-quality LeetCode solutions
Stars: ✭ 178 (-1.11%)
Mutual labels:  algorithm
Fe
前端热门文章阅读
Stars: ✭ 174 (-3.33%)
Mutual labels:  bootstrap
Leetcode Spider
用 node.js 爬你自己的 leetcode 解题源码
Stars: ✭ 176 (-2.22%)
Mutual labels:  algorithm
Awesome Bootstrap Checkbox
✔️Font Awesome Bootstrap Checkboxes & Radios. Pure css way to make inputs look prettier
Stars: ✭ 2,044 (+1035.56%)
Mutual labels:  bootstrap
Leetcode Notes
LeetCode 算法解答
Stars: ✭ 172 (-4.44%)
Mutual labels:  algorithm
Libchef
🍀 c++ standalone header-only basic library. || c++头文件实现无第三方依赖基础库
Stars: ✭ 178 (-1.11%)
Mutual labels:  algorithm
Greinerhormann
Greiner-Hormann polygon clipping algorithm. Does AND, OR, XOR. Plays nicely with Leaflet. Handles non-convex polygons and multiple clipping areas. ~3kb footprint, no dependencies
Stars: ✭ 176 (-2.22%)
Mutual labels:  algorithm
Yii2 Bootstrap
Yii 2 Bootstrap 3 Extension
Stars: ✭ 177 (-1.67%)
Mutual labels:  bootstrap
Bdialog
Extend the Bootstrap Modal features, making dialog more functions and easier to use, dialog type including modal, alert, mask and toast types
Stars: ✭ 174 (-3.33%)
Mutual labels:  bootstrap
Stellar
Stellar is completely based on the latest version of Bootstrap 4. Stellar Admin is designed to reflect the simplicity and svelte of the components and UI elements and coded to perfection with well-organized code.
Stars: ✭ 176 (-2.22%)
Mutual labels:  bootstrap
Bootstrap Input Spinner
A Bootstrap 4 / jQuery plugin to create input spinner elements for number input
Stars: ✭ 176 (-2.22%)
Mutual labels:  bootstrap
Slider
Touch swipe image slider/slideshow/gallery/carousel/banner mobile responsive bootstrap
Stars: ✭ 2,046 (+1036.67%)
Mutual labels:  bootstrap
Image Bootstrap
⛅️ Creates (chroots and) bootable virtual machine images; command line tool (Python 3)
Stars: ✭ 178 (-1.11%)
Mutual labels:  bootstrap
Win95.css
Responsive Bootstrap 4 windows 95/98 theme & landing template
Stars: ✭ 171 (-5%)
Mutual labels:  bootstrap
Unifiedtransform
A school management Software
Stars: ✭ 2,248 (+1148.89%)
Mutual labels:  bootstrap
Leetcode
LeetCode solutions, written in python and cpp(LeetCode解题报告,记录自己的leetcode成长之路)
Stars: ✭ 179 (-0.56%)
Mutual labels:  algorithm
Data Science Masters
Self-study plan to achieve mastery in data science
Stars: ✭ 179 (-0.56%)
Mutual labels:  algorithm
Anms Codes
Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution
Stars: ✭ 174 (-3.33%)
Mutual labels:  algorithm

The Algo-Visualiser

Build Status JavaScript commits Jest CSS commits Bootstrap commits reactJS commits MIT License

icon

An interactive visualiser which demonstrates the pro's and con's of various graph solving algorithms.

About The Project

The Algo-Visualiser is a web app built in ReactJS that shows how various graph traversal algorithm work. It was built by Bassel Al-Sayed and Tom Walker out of a mutual wish to understand ReactJS and GPS systems and these algorithms together.

Features

  • Users can select a maze size (which will scale with their screen/phone size).
  • Users can select a start and end point for the maze.
  • Then add fences (obstructions for the algorithm).
  • Then one of the 5 available algorithms is chosen.
  • The algorithm is then run with the nodes searched coloured in.
  • And then shortest path (found by the selected algorithm) drawn in a new colour.
  • The grid can then be reset (keeping the fences and start/end nodes) to allow comparison of algorithms.
  • Users can view benchmarking statistics for each run of an algorithm to compare against other algorithms using the same grid.

Getting Started:

  1. Clone the repo by running

    git clone https://github.com/Walker-TW/Algorithm-Visualizer.git

  2. Change into the cloned directory

    cd Algorithm-Visualizer

  3. Install dependencies

    yarn

  4. Booting the server:

    1. For hot reload during development (or quick start):
    • Boot the server with yarn start
    • Navigate to http://localhost:3000 in your browser.
      • The rendered page will update as you make changes
      • You will also see any lint errors in the console.
    1. To view the optimised build
    • run yarn build, then
    • Boot with serve -s build.
      1. You can install serve globally with yarn global add serve or npm i -g serve, it's handy to have around.

Testing

yarn test

Launches the test runner (react-scripts jest with enzyme) in the interactive watch mode.

At time of writing, jest can be buggy with coverage in watch mode so for accurate coverage run yarn test:coverage

The Algorithms

The algorithms demonstrated within the project are all graph traversal algorithms.

Dijkstra

An algorithm that is weighted and will always find the shortest path. Works by spreading out and determining the shortest 'distance' to the final node by adding up the traversed weights.

A*

An upgraded version of Dijkstra that takes the distance value of each node and combines it with a heuristic value to determine not just the distance to the finish node but the direction that it should take. Two types of heuristics are used in our project the Manhattan distance & the Euclidean distance. It will always find the shortest path when using the correct heuristic.

Euclidean

AKA 'as the crow flies' is a heuristic used in most straight line mazes. It uses the Pythagorean theorem on a triangle created from the two points that you wish to get to Point A (start point) & Point B (destination).

sqrt((x2-x1)^2 + (y2-y1)^2)

However because our grid is only traversable on horizontal or vertical vertices using this heurtistic will NOT always give the shortest path, though it will be much faster than other heuristics.

Manhattan

AKA the taxi-cab distance will only work on a grid system unlike the euclidean, this heuristic is calculated by taking the absolute values of subtracting the x & y values of two points on our triangle and then adding the result together. This allows a better relative distance.

|(x2-x1)| + |(y2-y1)|

Because Manhattan moves only in horizontal or vertical verticies it will always find the shortest path. However it will be much slower than Euclidean so if speed is an issue (especially in huge graphs) while accurancy is not choose Euclidean.

Breadth First Search

Is a graph traversal algorithm which will search all neighbour nodes (in this projects case north/east/west/south) of the main node before moving onto the next level. This will cause a spreading out effect and means that along a maze BRS will explore all diversions that it comes across. It will find the shortest path.

Depth First Search

The brother of Breadth First Search it will not explore all neighbour nodes instead exploring all along a branch before backtracking to other non-visited nodes. Depth first search is the only algorithm listed which will NOT find the shortest path.

Contact The Team

Tom Walker

LinkedIn

Bassel Al-Sayed

LinkedIn

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgements

This project was inspired by a video from Clément Mihailescu please visit his youtube channel here

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].