60 likes | 198 Views
This document presents a rough-draft set of questions that aids in effective problem-solving within algorithm analysis. Authored by Eric Ringger, it focuses on problem formulation, algorithm design, analysis (theoretical and empirical), and proofs of correctness. It includes essential questions for understanding what is known and unknown, assumptions, optimization considerations, and whether problems can be reduced to familiar forms. Additionally, it encourages the organization of these inquiries into a decision tree to better guide problem-solving practices.
E N D
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
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 sub-problems? • 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?