Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 643
  • Last Modified:

Backward Chaining

Could you explain backward chaining? For example how would I handle

1 - allergies(x) => sneeze(x)

2 - cat(y) ^ allergic-to-cat(x) => allergies

3 - cat(Felix)

4 - allergic-to-cat(Lisa)

Goal: Sneeze(Lisa)
0
JCW2
Asked:
JCW2
  • 5
  • 4
1 Solution
 
TommySzalapskiCommented:
You start from the back. So in order to get Sneeze(Lisa) you select a rule that could lead you there and add it to the list of goals. In this case the only rule that does this is rule 1. So now the list of goals is just allergies(Lisa)=>Sneeze(Lisa) (replacing x with Lisa). So this is your new goal (in more complicated questions you may have multiple goals in the list at a time).

So what could get you to the new goal? Pick all the rules that could get you there and make those the goals (in this problem you'll only have one again)

If you run into a problem where you have more than one goal at some point, just do the same thing for all the goals.

What I would do is just write the goal and then draw an arrow to all the new goals and write them.
0
 
TommySzalapskiCommented:
And you just keep going until you get a goal that is given directly by a rule or by the given conditions of the problem.
0
 
JCW2Author Commented:
Can you describe how to work with this:
BC.PNG
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
TommySzalapskiCommented:
Yes. It's saying to do the same thing I said.

q = Goal

"check if q is known already"
Do you have a rule or a given statement that says q is true?

"prove by BC all premises of some rule concluding q"
Take all the rules that have q on the right hand side and add them to the goal list.
Do the last two steps for each of them.
Note that this will continue until you find a rule that directly says one of your goals is true.

"Avoid loops"
If you get ready to add a goal to the goal list and it was already there before, don't add it again.

"Avoid repeated work"
If you add a goal to the list but you already proved it true or false, don't add it. Just use true or false.
0
 
JCW2Author Commented:
I need to demonstrate use of a stack when implementing backward chaining. How should I do this?
0
 
TommySzalapskiCommented:
By each step of the process put your entire goal list (stack). So in the first step, the stack will have one goal. In the second step, two goals, etc. Of course if two rules will satisfy a goal you'll add two new goals to the stack at once.
0
 
JCW2Author Commented:
Would the stack look anything like this:
Stack.PNG
0
 
TommySzalapskiCommented:
Absolutely. The only thing I'd do differently is mark the 'active' goals (the ones that have not been satisfied by other goals).
So in steps 1 and 2, I'd put a mark by the top goal and in step 3 the top 2 goals.
0
 
JCW2Author Commented:
Thank you for your help.
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now