CS 312: Algorithm Analysis

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.
CS 312: Algorithm Analysis
Lecture #39: Problem Solving
Credit: Eric Ringger
A Rough-Draft Set of Questions
for Problem Solving
Problem-Solving
 Problem Formulation
 Algorithm Design
 Algorithm Analysis
 Theoretical Analysis: classify as asymptotic
order of growth
 Empirical Analysis
 Proofs of Correctness
Questions for Problem Formulation





What do I know?
What do I not know but I want to know?
What are my assumptions?
Can I formulate the problem as a graph?
Can the problem be reduced to a familiar
problem?
 Is the problem an optimization problem?
 Is the objective linear?
 Does the problem have constraints?
 Are the constraints linear?
Questions for Algorithm Design
 Do I recognize the problem and know an algorithm
that solves this problem?
 Is the problem NP-Hard but not NP-Complete?
 Is the problem NP-complete?
 Is it in NP?
 Can I reduce a known NP-complete problem to it?
 Does the problem decompose nicely into subproblems?
 Do the sub-problems overlap?
 Does the optimality property hold?
Exercise
 Can you organize these questions (both
problem formulation and algorithm design)
into a usable decision tree to guide you in
the practice of problem-solving?