AlgoWiz is a Multi-Platform Application that allows users to Visualize various Data Structures and Algorithms. Data Structures included: Including Linked List, Stack, Queues, Tree, Graphs, etc. Algorithms includes: Breadth-First Search, Depth-First Search, Pre, Post, In, and Level-order Traversal(for Trees), Djikstra Shortest Path Algorithm, Prim's and Kruskal's Minimum Spanning tree Algorithm, etc.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
The Project is already packed and encrytped to include all the dependencies/prerequisites for the ease of setup and usage. After extracting the file, users will find the following items:
- AlgoWiz: The main application file to deploy/run the program. Open the file to run the application
- images: Contains the images used in the application
- source: Contains the source python code for the application
- pycache: Includes bytecode header files and library dependencies for the program
The first screen of AlgoWiz comprises of two options: Tree Algorithms and Graph Algorithms.
Here you can generate complete binary trees and perform various algorithms on it. Users should follow the following steps to visualize:
- Number of nodes/vertices in the Tree
- Number to search in the tree
- Click on the "Create" Button to Generate the graph
- Select from the list of Algorithms to perform on the Tree to visualize.
These includes:
- In-order Traversal
- Pre-order Traversal
- Post-order Traversal
- Breadth First Search
- Depth First Search
- Level Order Search
With Algowiz, you can also create Custom Data Structures.
Users can create their own custom Data Structure by providing the following input in the Text Area:
Graph with one Node/Vertex 'vertex1' , with weight 'weight1':
{vertex 1: {'weight': weight 1}}
Graph with Multiple Nodes/Vertices 'vertex 1', vertex 2',...'vertex n', with weights 'weight 1', 'weight 2',..., 'weight n':
{vertex1: {vertex2: {'weight' : weight1}}, {vertex3: {'weight' : weight2}}}
With this notation, users can find various data structures. These include:
Users can also create random Graphs by giving and perform various algorithms on it. Users should follow the following steps to visualize:
- Number of nodes/vertices in the Graph
- Number to search in the Graph
- Click on the "Create" Button to Generate the graph
- Select from the list of Algorithms to perform on the Graph to visualize.
These includes:
- Breadth First Search
- Depth First Search
- Level Order Search
- Prim's Minimum Spanning Tree
- Kruskal's Minimum Spanning Tree
- Djikstra's Shortest Path Finding between Start and End Node
Note: If there is no number entered in the search field, AlgoWiz would traverse the entire Data Structure.
- Python 3 - Programming Language
- [tkinter] (https://docs.python.org/3/library/tkinter.html) - For the GUI
- networkx - Graph Backend
- matplotlib - Graph Frontend
- [pygame] (https://www.pygame.org/) - For animation
Feel Free to contact me at [email protected] (Or just comment on my blogpost at: https://akbexpo.blogspot.com/2020/05/data-structures-and-algorithms.html) for any kind of comments, feedback, queries, explanations, critics, etc. Do checkout my other projects at http://akbexpo.blogspot.com/ I would love to hear from y'all!
- Improve the Latency: Packaging through pyinstaller is kinda sucky...
- Make a better OOP model
- Fix Switching Issues
- Adding more algorithms to it: Binary & Linear Search/ Sorting Algorithms
- Akshat Bajpai - Akbonline
- Email - [email protected]
- Portfolio - http://akbexpo.blogspot.com/
- LinkedIn - https://www.linkedin.com/in/akshat-bajpai-09/
This project is licensed under the MIT License - see the LICENSE.md file for details
- To all the amazing opensource library contributers, who have a huge hand in driving the technology innovation force forward
- Almighty Google and Lord Quora, Stackoverflow and Reddit