Diagnostic Problem Solving: Combining Heuristic, Approximate and Causal Reasoning