-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path12_BChaining.py
43 lines (38 loc) · 998 Bytes
/
12_BChaining.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
knowledge_base = {
"rule1":{
"if":["A","B"],
"then":"C"
},
"rule2":{
"if":["D"],
"then":"A"
},
"rule3":{
"if":["E"],
"then":"B"
},
"rule4":{
"if":["F"],
"then":"D"
},
"rule5":{
"if":["G"],
"then":"E"
},
}
def backward_chaining(goal, known_facts):
if goal in known_facts:
return True
for rule, value in knowledge_base.items():
if goal in value["if"]:
all_conditions_met = all(condition in known_facts for condition in value["if"])
if all_conditions_met and backward_chaining(value["then"], known_facts):
return True
return False
if __name__ == "__main__":
goal = "C"
known_facts = ["G", "D", "E"]
if backward_chaining(goal, known_facts):
print(f"The Goal '{goal}' can be reached")
else:
print(f"The goal '{goal}' cannot be reached")