p.3"A
great reward awaits those who can effectively solve problems, and you can develop this talent. It begins with the proper understanding
of the purpose to be achieved. All too often, in an attempt to utilize a familiar algorithm, we change the purpose to be achieved
simply to fit the algorithm. It's as if, armed with only a hammer, we needed to screw a screw into a board: we pound
the screw into the board even though we know we'll never be able to unscrew it again. Armed with a hammer, everything looks
like a nail... Having made a judgment as to the degree of fidelity required in modeling the decision maker's purpose, the
next step is to choose a tactic that will find an optimal allocation of the available resources... Effective problem solving
requires more than a knowledge of algorithms; it requires a devotion to determining the best combination of approaches that
address the purpose to be achieved within the available time and in light of the expected reactions of others who are playing
the same game. Recognizing the complexity of real-world problems is prerequisite to their effective solution."
Creating
an evaluation function for a chess playing computer program can be a difficult task. Where do we even begin?
p.1"One
of the reasons that problem solving is often difficult is that we don't know where to begin. Once we have some sort of course
charted out in front of us, we can follow that path and hopefully arrive at a solution. But conjuring up that course to follow
is a significant challenge."
What
is actually "solved" when we solve a problem?
p.16"Every
time we solve a problem we must realize that we are in reality only finding the solution to a model of the problem. All models
are a simplification of the real world... The process of problem solving consists of two separate general steps: (1) creating
a model of the problem, and (2) using that model to generate a solution... The 'solution' is only a solution in terms of the
model. If our model has a high degree of fidelity, we can have more confidence that our solution will be meaningful."
So the
solution to the problem we have involves making a simplified model of the problem:
p.18"Let's
rephrase this discussion. There are two possible approaches [to the problem being discussed]. The first uses an approximate
model of a problem, and then finds the precise solution. The second approach uses a precise model of the problem, and then
finds an approximate solution."
But the
model is not the actual problem:
p.31"Whenever
you solve a real-world problem, you have to create a model of that problem first. It is critical to make the distinction that
the model that you work with isn't the same as the problem. Every model leaves something out. It has to - otherwise it would
be as complicated and unwieldy as the real-world itself. We always work with simplifications of how things really are. We
have to accept that. Every solution we create is, to be precise, a solution only to the model that we postulate as being a
useful representation of some real-world setting that we want to capture. The trouble with models is that every one of them
has an associated set of assumptions. The most common mistake when dealing with a model is to forget the assumptions."
Perhaps
gaining a deeper understanding to the problem is a good first step towards solving a problem:
p.35"If
we can really understand the problem, the answer will come out of it, because the answer is not separate from the problem."
What
basic concepts apply to problem solving?
p.35"Three
basic concepts are common to every algorithmic approach to problem solving. Regardless of the technique that you employ, you'll
need to specify: (1) the representation, (2) the objective, and (3) the evaluation function. The representation encodes alternative
candidate solutions for manipulation, the objective describes the purpose to be fulfilled, and the evaluation function returns
a specific value that indicates the quality of any particular solution given the representation (or minimally, it allows for
a comparison of the quality of two alternative solution)."
Let's
look at Michalewicz and Fogel's definition of an evaluation function:
p.37"The
evaluation function: The objective, however, is not the same thing as the evaluation function. The latter is most typically
a mapping from the space of possible candidate solutions under the chosen representation to a set of numbers (e.g., the reals),
where each element from the space of possible solutions is assigned a numeric value that indicates its quality. The evaluation
function allows you to compare the worth of alternate solutions to your problem as you've modeled it. Some evaluation functions
allow for discerning a ranking of all possible solutions. This is called an ordinal evaluation function. Alternatively, other
evaluation functions are numeric and tell you not only the order of the solutions in terms of their perceived quality, but
also the degree of that quality."
Unique
problems require unique solutions:
p.271"Sometimes
it's difficult to apply a general problem-solving strategy to a particular problem, as the problem at hand is simply unique
in some sense. When this happens, you have to analyze the problem and develop a method that's just right for the particular
instance you face."
Sometimes
problems must be re-solved as time passes and the initial conditions change:
p.310"Clearly,
problem solving is more than finding the one best solution. It is at once (1) defining the problem, (2) representing the possible
candidate solutions, (3) anticipating how the problem may change over time, (4) estimating the probabilities of the possible
changes, and (5) searching for solutions that are robust to those changes. Moreover, it is the action of re-solving the problem
as it changes based on the most recent available information. Problem solving is a never-ending process."
Summary
for problem solving: remember these 10 steps:
p.484"Here
are ten heuristics for problem solving that we'd like you to keep in mind as you face real-world problems.
1.Any
problem worth solving is worth thinking about.
2.Concentrate
on the essentials and don't worry about the noise.
3. Sometimes
finding a solution can be really easy. Don't make it harder on yourself than you have to.
4. Beware
of obvious solutions. They might be wrong.
5. Don't
be misled by previous experience.
6. Start
solving. Don't say 'I don't know how.' Another essential aspect is to 'play' with the problem.
7. Don't
limit yourself to the search space that's 'defined' by the problem. Expand your horizon.
8. Constraints
can be helpful.
9. Don't
be satisfied with finding a solution. Is the solution unique? Are there other possibilities?
10. Be
patient. Be persistent.
If you
keep these ten 'commandments' in mind, your problem-solving prowess will become formidable, but don't forget about the danger
of making easy generalizations."
Is there
another way to become skilled at problem solving?
p.515"The
best way to learn about problem solving is hands on. You have to experiment with different ideas, apply them to problems,
and assess the results."