Algorithms that will systematically go through every possible option, and then determine the optimal one