In the previous post, we discussed some informed search algorithms and the idea of using heuristics to guide the search process. It’s time to look under the hood to understand what these heuristics are, their properties and how to design one for a problem at hand.
In the previous post, we discussed some uninformed search algorithms. The reason they performed so inefficiently is, well unsurprisingly, because they were uninformed. They used no knowledge about features of the search space. It’s frustrating and sometimes hilarious to see your agent running around the entire search space, always missing a goal node nearby. For most problems, we always have some indication of which nodes are better than others; which nodes are closer to a solution and which are not, and it would be nice if we could inject this knowledge in our agent so that it can direct its search towards more promising paths and find a solution more efficiently while exploring as little of the search space as possible.