感谢贝叶斯网学习笔记
问题是这样描述的:
福尔摩斯先生在他的办公室工作时接到了他邻居华生的电话。华生告诉他:他的家里可能进了窃贼,
因为他家的警铃响了被告知有窃贼闯入,福尔摩斯迅速开车回家。在路上,他听广播得知他家那里
发生了地震。地震也有可能引起警报。这样,请问福尔摩斯先生应该回家抓贼还是迅速撤离该地区
以躲避地震?
简单讲,在路上的holmes需要判断是盗贼还是地震导致警铃?如果是前者,他需要回去抓贼,若是后者,则要逃离地震区。
所以图中虽然有5个节点,地震并不100%导致警铃,警铃也不100%导致华生的信号。
但是我们在得到信号,听到警铃的情况下,可以通过计算盗贼导致警铃的概率p1,和地震导致警铃的概率pp1来进行决策,也可以计算在地震发生条件下,盗贼导致警铃的概率p2。
- P1表示在听到警铃的条件下,盗贼导致警铃响的概率
- PP1表示在听到警铃的条件下,地震导致警铃响的概率PP1
- P2,在地震发生的条件下,盗贼导致警铃发生的概率。
如果p2比p1小,说明地震E才是导致A的主要原因。
反过来,如果P2和P1相同,说明地震这个新添加的条件,对警报没有作用。
添加地震这个条件之后,还是盗贼的概率变小了,说明地震对警报是有影响的。
用用图像描述如下:
图片来源于realsa,表示感谢。
==注意:==节点的状态是自己定义的,false = state 1 true = state 2,此处与jbb0523的理解刚好相反。
以下是源代码分析
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%1、建立贝叶斯网络结构
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N = 3; %三个节点,分别是B、E、A
dag