Copyright (c) 2013 John L. Jerz

How To Solve It: Modern Heuristics (Michalewicz, Fogel, 2004)

Home
A Proposed Heuristic for a Computer Chess Program (John L. Jerz)
Problem Solving and the Gathering of Diagnostic Information (John L. Jerz)
A Concept of Strategy (John L. Jerz)
Books/Articles I am Reading
Quotes from References of Interest
Satire/ Play
Viva La Vida
Quotes on Thinking
Quotes on Planning
Quotes on Strategy
Quotes Concerning Problem Solving
Computer Chess
Chess Analysis
Early Computers/ New Computers
Problem Solving/ Creativity
Game Theory
Favorite Links
About Me
Additional Notes
The Case for Using Probabilistic Knowledge in a Computer Chess Program (John L. Jerz)
Resilience in Man and Machine

howtosolveit.jpg

This book is the only source that provides comprehensive, current, and correct information on problem solving using modern heuristics. It covers classic methods of optimization, including dynamic programming, the simplex method, and gradient techniques, as well as recent innovations such as simulated annealing, tabu search, and evolutionary computation. Integrated into the discourse is a series of problems and puzzles to challenge the reader. The book is written in a lively, engaging style and is intended for students and practitioners alike. Anyone who reads and understands the material in the book will be armed with the most powerful problem solving tools currently known.
 

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.
 
p.9 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.
 
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.
 
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.
 
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.
 
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.
 
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).
 
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.
 
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... What can we do? It seems that we have to discover something special about this problem, something that would help us move forward. This is probably the most difficult part of problem solving and there are no rules for how to do it. The only hint we can give here is that such discoveries usually come from experimentation and experience.
 
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.
 
p.484 Problem solving is an art. As with all artistic endeavors, it requires practice. One way to become really good at problem solving is to continually challenge yourself with puzzles... We recommend that you always find some new book of puzzles and brain teasers to keep your problem-solving abilities honed.. 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. Think about different way to manipulate the information that you've got at hand. Spend the time you need to think about how to best conceive and develop a useful approach.
 
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." Try something. If it doesn't work... try something else... 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.
 
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.

Enter supporting content here