Probabilistic Problem Solving