Strassen's Algorithm GUI
This project provides a graphical user interface (GUI) for performing matrix multiplication using Strassen's Algorithm. It is built using PyQt6 and includes features such as input validation, error handling, process display, and analytics.
Features
- Matrix Input: Enter matrices A and B for multiplication.
- Matrix Multiplication: Perform matrix multiplication using Strassen's Algorithm.
- Process Display: View the detailed steps of the calculation.
- Analytics: Compare the time complexity between conventional and Strassen's algorithms.
Getting Started
Prerequisites
- Python 3.x
- PyQt6
- NumPy
- Pandas
- Matplotlib
Installation
1. Clone the repository:
```sh
git clone https://github.com/inner-byte/strassen_algorithm_gui.git
cd strassen_algorithm_gui
- Install the required libraries:
pip install -r requirements.txt
Running the Application
-
Run the application:
python main.py
-
Enter Matrices:
- Matrix A
- Matrix B
-
Multiply Matrices:
- Click the "Multiply" button to perform the multiplication.
-
Show Process:
- Click the "Show Process" button to view the detailed steps of the calculation.
-
Show Analytics:
- Click the "Show Analytics" button to view the time complexity comparison between conventional and Strassen's algorithms.
Project Structure
strassen_algorithm_gui/
│
├── README.md
├── requirements.txt
├── user_manual.txt
├── main.py
├── data_processing.py
├── visualization.py
├── gui_elements.py
├── settings.py
├── src/
│ ├── sample_data.txt
│ └── strassen_ui.py
└── screenshot/
└── interface.png
- README.md: This file, containing an overview of the project.
- requirements.txt: Lists the Python dependencies required by the project.
- user_manual.txt: Contains user documentation or instructions for using the project.
- main.py: The primary entry point for the project, responsible for initializing and coordinating the application.
- data_processing.py: Handles data processing tasks, such as data cleaning and transformation.
- visualization.py: Contains functions for creating various types of visualizations using Matplotlib.
- gui_elements.py: Contains custom widgets and components for the GUI, built using PyQt6.
- settings.py: Configuration file that contains project-specific settings, such as file paths, API keys, and other custom configurations.
- src/: Directory containing source code and data files.
- sample_data.txt: Contains sample data used by the project.
- strassen_ui.py: Responsible for the user interface or a specific functionality within the project.
- screenshot/: Directory containing an image file, a screenshot of the project's interface and visual representation of the project's output.
Here are example matrices A and B used for multiplication:
Matrix A:
[[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]]
Matrix B:
[[16, 15, 14, 13],
[12, 11, 10, 9],
[8, 7, 6, 5],
[4, 3, 2, 1]]
This project is licensed under the MIT License. See the LICENSE file for details.
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
For any questions or suggestions, please contact aliyuahmad@gmail.com.