I notice that some of the "hard" combinatorial problems I come across can be cast in terms of some type of tree search like alpha-beta pruning, or beam search, or a similar algorithm. However, programming them seems like repetitively coding the same things and it is also pretty easy to make mistakes. It seems to me there should be a library that implements these algorithms, and all I should be asked to write is
- a coding for the solution, i.e., how to get a more specific solution from an incomplete solution. This will give the tree/graph structure.
- Given a partial solution, how to get the maximum/minimum cost, and perhaps an estimate of the cost.
- An Initial solution/partial solution.
- Maybe some sort of a verification solution.
I am sorry I haven't given any specific code, but I think I have explained the problem. If I can write code for the functions described above, shouldn't I be able to run a number of tree/graph search algorithms easily? Is there any user friendly library/framework that supports this easily? I'd love it to be in Python or C/C++, but would be interested to hear any suggestions.
Edit: To be more precise, I am talking about informed tree search algorithms.