# problem solving Flashcards

well-defined problems

problems that are clear to understand and the solution has defined expectations.

ill-defined problems

messy problems which are not clear how to solve.

Stages of problem solving

- Understand the problem
- Devise a plan
- carry out the plan
- Review your work

- understand the problem

- do you have all the data?
- is the problem unsolvable?
- do you have to solve the whole problem?
- is it possible to divide the problem?

- Devise a plan

- are the patterns?
- can maths help?
- are the any similar problems that have already been solved?

- Carry out the plan

solve the problem continuously checking youre doing it right

- Review your work

- can the solution be improved?
- is any of the solution reusable?
- is it effectively solved?

Why do algorithms help

- helps understand the problem
- executed more quickly
- possible to resort to trial and error

problem recognition

The ability to recognize and acknowledge that an issue exists or that a situation needs attention in an existing process or program. The ability to define a problem and know exactly what it is.

Computable

a problem is computable is we can come up with an algorithm that will solve every instance of the problem in a finite number of steps

intractable problem

a problem which cannot be completely solved.

problem decomposition

the process of taking a big problem and breaking it down into smaller problems until you fully explored the problems. Each of these smaller problems translate into one task which is more easily programmable as an individual module, function or procedure.

Top-down Problem solving

an approach to solve a problem that involves breaking down the main problem into sub-problems.

divide and conquer

a technique based around reducing the size of a problem with successive iterations. You look at a problem, apply some rules and discard any data that does not match then repeat the process with any information which is left. E.g. binary search.

divide and conquer advantages

- efficient

- short runtime