Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/houssemnasri/pathfindingv2

Pathfinding is a graphical Java application for simulating pathfinding algorithms
https://github.com/houssemnasri/pathfindingv2

design education hacktoberfest java javafx mvp mvp-architecture pathfinding visualization

Last synced: 27 days ago
JSON representation

Pathfinding is a graphical Java application for simulating pathfinding algorithms

Awesome Lists containing this project

README

        

# 🎯 Pathfinding
Pathfinding is a graphical Java application for simulating pathfinding algorithms backed by the Model-View-Presenter architecture pattern

### Included Algorithms

- βœ… [A*][A*]: find the shortest path in a weighted graph using an heuristic to guide the process.
- βœ… [Dijkstra][Dijkstra]: find the shortest path in a weighted graph.
- βœ… [DFS][DFS]: explore a graph by going as far as possible, then backtrack.
- [BFS][BFS]: explore nearest successors first, then widen the search.
- [Edmonds Karp][Edmonds Karp]: find the maximum flow in a weighted graph.
- [Fringe][Fringe]: find the shortest path in a weighted graph using an heuristic to guide the process.
- [IDA*][IDA*]: explore longer and longer paths in a weighted graph at the cost of multiple similar examinations.
- [IDDFS][IDDFS]: explore longer and longer paths in an unweighted graph at the cost of multiple similar examinations.

### Features
- Visualize 8 algorithms
- Switch between different themes and colors
- Add/Remove obstacles
- Relocate source and destination
- Simple Navigation
- Tweak the visualization speed easily
- Examine algorithms heuristics for each node
- Step In/Out the algorithm procedure
- [TODO] Generate perfect maze using more than 4 algorithms
- [TODO] Create custom themes easily

### Screenshots
![alt text](pathfinding-common/src/main/resources/assets/sc1_.png)
![alt text](pathfinding-common/src/main/resources/assets/sc2_.png)

### Download
See the [releases](https://github.com/HoussemNasri/PathfindingV2/releases) page for the latest build

[A*]: https://en.wikipedia.org/wiki/A*_search_algorithm
[BFS]: https://en.wikipedia.org/wiki/Breadth-first_search
[Connected components]: https://en.wikipedia.org/wiki/Connected_component_(graph_theory)
[DFS]: https://en.wikipedia.org/wiki/Depth-first_search
[Dijkstra]: https://en.wikipedia.org/wiki/Dijkstra's_algorithm
[Edmonds Karp]: https://en.wikipedia.org/wiki/Edmonds–Karp_algorithm
[Fringe]: https://en.wikipedia.org/wiki/Fringe_search
[Kruskal]: https://en.wikipedia.org/wiki/Kruskal's_algorithm
[IDA*]: https://en.wikipedia.org/wiki/Iterative_deepening_A*
[IDDFS]: https://en.wikipedia.org/wiki/Iterative_deepening_depth-first_search
[Kuhn-Munkres]: https://en.wikipedia.org/wiki/Hungarian_algorithm
[Rust]: https://rust-lang.org/
[Strongly connected components]: https://en.wikipedia.org/wiki/Strongly_connected_component
[Topological sorting]: https://en.wikipedia.org/wiki/Topological_sorting