This project was done as part of a homework project for the CSE 431 undergraduate course in offered in Fall 2023 by Michigan State University. The project involved implementing a Branch and Bound solution to the NP-Hard Set Cover problem. The solution was initially implemented in Python, and later converted to C++ for performance optimization.
The biggest challenge I faced in this project was finding ways to improve run-time. The most important optimizations were Branching and Bounding: Pruning branches if the ticket is as big as the current best size and if the maximum potential size of the ticket won't include all elements. Additionally, preprocessing steps such as removing redundant subsets and sorting the list of subsets further improved performance.