Logical Problem Solving Algorithms