给定初始工作记忆 WM={(lista e b a c d e a) (lista1 a c a d e e f g)} 和规则 R1,显示最终 WM 的状态
Given the initial working memory WM={(lista e b a c d e a) (lista1 a c a d e e f g)} and the rule R1, show the state of the final WM
(defrule R1
?f <‐ (lista $?x ?a $?y)
(lista1 $?p ?a $?q ?a $?r)
=>
(retract ?f)
(assert (lista $?x $?y)))
一个。 {(lista e b a c d f g) (lista1 a c a d e e f g)}
B. {(lista b) (lista1 a c a d e e f g) }
C。 {(lista b c d) (lista1 a c a d e f g)}
D. {(lista e b a c d) (lista1)}
我明白lista1没有变,但是为什么b,c,d留在lista?
在模式中多次出现的变量必须具有相同的值才能匹配规则。变量 ?a 在第一个模式中出现一次,在第二个模式中出现两次。多字段变量 $?x, $?y, $?p, $?q 和 $?r 都各出现一次,因此由于它们的定位,它们将绑定到与 [=13= 不匹配的模式中的任何剩余值]?a。然后规则的操作将删除在 lista1 和 lista.
中至少两次找到的任何值
CLIPS (6.4 2/9/21)
CLIPS>
(defrule R1
?f <- (lista $?x ?a $?y)
(lista1 $?p ?a $?q ?a $?r)
=>
(retract ?f)
(assert (lista $?x $?y)))
CLIPS> (watch facts)
CLIPS> (assert (lista e b a c d e a) (lista1 a c a d e e f g))
==> f-1 (lista e b a c d e a)
==> f-2 (lista1 a c a d e e f g)
<Fact-2>
CLIPS> (run)
<== f-1 (lista e b a c d e a)
==> f-3 (lista e b a c d e)
<== f-3 (lista e b a c d e)
==> f-4 (lista b a c d e)
<== f-4 (lista b a c d e)
==> f-5 (lista b c d e)
<== f-5 (lista b c d e)
==> f-6 (lista b c d)
CLIPS>
(defrule R1
?f <‐ (lista $?x ?a $?y)
(lista1 $?p ?a $?q ?a $?r)
=>
(retract ?f)
(assert (lista $?x $?y)))
一个。 {(lista e b a c d f g) (lista1 a c a d e e f g)}
B. {(lista b) (lista1 a c a d e e f g) }
C。 {(lista b c d) (lista1 a c a d e f g)}
D. {(lista e b a c d) (lista1)}
我明白lista1没有变,但是为什么b,c,d留在lista?
在模式中多次出现的变量必须具有相同的值才能匹配规则。变量 ?a 在第一个模式中出现一次,在第二个模式中出现两次。多字段变量 $?x, $?y, $?p, $?q 和 $?r 都各出现一次,因此由于它们的定位,它们将绑定到与 [=13= 不匹配的模式中的任何剩余值]?a。然后规则的操作将删除在 lista1 和 lista.
中至少两次找到的任何值 CLIPS (6.4 2/9/21)
CLIPS>
(defrule R1
?f <- (lista $?x ?a $?y)
(lista1 $?p ?a $?q ?a $?r)
=>
(retract ?f)
(assert (lista $?x $?y)))
CLIPS> (watch facts)
CLIPS> (assert (lista e b a c d e a) (lista1 a c a d e e f g))
==> f-1 (lista e b a c d e a)
==> f-2 (lista1 a c a d e e f g)
<Fact-2>
CLIPS> (run)
<== f-1 (lista e b a c d e a)
==> f-3 (lista e b a c d e)
<== f-3 (lista e b a c d e)
==> f-4 (lista b a c d e)
<== f-4 (lista b a c d e)
==> f-5 (lista b c d e)
<== f-5 (lista b c d e)
==> f-6 (lista b c d)
CLIPS>