Case-based Reasoning (CBR)
The key idea in case-based reasoning is "solve new problems by adapting -- and remembering what happens -- old solutions." A problem here might be "explain why squirrels have bushy tails" or "design a gas pump that doesn't spill when the hose is yanked out" or anything that needs thought. The claim is that CBR allows problem solving with very incomplete knowledge. Old solutions can be tweaked to make new ones, if things are close enough, without requiring enough knowledge to construct to construct those solutions from scratch.
The critical phases in CBR are finding the most appropriate old solutions to adapt, adapting them, and indexing the results for future retrieval. A case-based retrieval system just retrieves relevant cases, and leaves the adaptation up to the users. These can be very effective, because humans are quite good at adapting concrete examples to new situations, while computers are better at searching large knowledge bases.
Doing adaptation is more complex. It requires some knowledge of basic principles of the domain to recognize when differences between the retrieved case and the current situation require changes. In Kris Hammond's dissertation on case-based recipe generation, his CHEF system created a stir fry dish with chicken and broccoli by finding and adapting a stir fry dish with beef and green peppers. Adaptation meant replacing the main ingredients, adding a step to remove the bones from chicken, and lengthening the cooking time because broccoli is denser than green pepper.
If the adapted solution works, the system saves it, so that it doesn't have to do much work to solve the same or similar problems in the future. If the adapted solution fails, the system saves that too, annotated with an explanation of what to watch out for in the future.
Case-based reasoners can be implemented in many different ways, but a common approach is to use frames. Cases are represented as frames, organized in a semantic hierarchy of generalizations. A case might represent a description of a patient's symptoms, a recipe for chicken and broccoli, a chess problem, a story about a trip to the hospital, and so on.
Most research and development in applied CBR focuses on retrieval and similarity calculation. The mathematics of similarity is related to the clustering techniques in machine learning. The difference is that instead of returning a general categorization or prediction, a CBR systems returns one or more specific cases that a user or automated reasoner can compare to the current situation for insight into causal explanations or possible responses.
A case represented as a frame will usually have at least one abstraction, indicating what kind of case it is, e.g., a recipe, a patient, a chess problem. The specific features of the case will be given in the roles and fillers. The fillers may in turn be frames with their own roles and fillers. For example, a recipe may have an ingredients role that contains a list of ingredients, a cooking time role that says how long the recipe takes, and a steps role that contains a sequence of frames representing the steps in the recipe.