Welcome to the Foundations of Algorithm Repository! This repository contains implementations of various algorithms learned in the "Foundations of Algorithm" coursework. Whether you're studying algorithm design, dynamic programming, divide and conquer, or other algorithmic techniques, this repository offers a collection of implementations to aid in your learning and understanding.
The "Foundations of Algorithm" coursework covers fundamental algorithmic techniques and problem-solving strategies essential for computer science and related fields. This repository provides implementations of algorithms covered in the coursework, along with additional resources for further exploration.
Explore the repository to find implementations of the following algorithms:
- interval_partitioning_DP.py: Implementation of interval partitioning using dynamic programming.
- mergesort.py: Implementation of the merge sort algorithm using the divide and conquer approach.
- bellman_ford_algo.py: Implementation of the Bellman-Ford algorithm for finding shortest paths in a weighted graph.
- interval_partitioning_knapsack.py: Implementation of interval partitioning using the knapsack algorithm.
- interval_partitioning_memoization.py: Implementation of interval partitioning using memoization.
To get started with this repository, follow these steps:
-
Clone the Repository: Clone this repository to your local machine using the following command:
git clone https://github.com/your-username/foundations-of-algorithm.git
-
Explore the Implementations: Browse through the implementations available in the repository. Each file contains the implementation of a specific algorithm.
-
Run the Implementations: Execute the Python scripts on your local machine to test the implementations. You can run a Python script using the command:
python script_name.py
-
Experiment and Learn: Modify the implementations, experiment with different inputs, and observe the outputs. Understanding algorithms is best achieved through hands-on practice and experimentation.
Contributions to this repository are welcome! If you have implementations of additional algorithms, improvements to existing code, or bug fixes, feel free to open an issue or submit a pull request.
If you're looking for additional resources to supplement your learning of algorithms, consider exploring online courses, textbooks, and academic papers in the field of algorithm design and analysis.
Happy exploring and algorithmic journey!