人工智能的编程示例 爱因斯坦推理题
人工智能的编程示例 爱因斯坦推理题
1.在一条街上,有5座房子,喷了5种颜色。
2.每个房里住着不同国籍的人。
3.每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物。
其中:
(1)、英国人住在红色的房子里;
(2)、瑞典人养狗作为宠物;
(3)、丹麦人喝茶;
(4)、绿房子紧挨着白房子,在白房子的左边;
(5)、绿房子的主人喝咖啡;
(6)、抽Pall Mall牌香烟的人养鸟;
(7)、黄色房子里的人抽Dunhill牌香烟;
(8)、住在中间那个房子里的人喝牛奶;
(9)、挪威人住在第一个房子里面;
(10)、抽Blends牌香烟的人和养猫的人相邻;
(11)、养马的人和抽Dunhill牌香烟的人相邻;
(12)、抽BlueMaster牌香烟的人和啤酒;
(13)、德国人抽Prince牌香烟;
(14)、挪威人和住在蓝房子的人相邻;
(15)、抽Blends牌香烟的人和喝矿泉水的人相邻。
问题是:谁养鱼?
符号化表示如下:
英国人 p1
瑞典人 p2
丹麦人 p3
挪威人 p4
德国人 p5
红房 h1
绿房 h2
白房 h3
黄房 h4
蓝房 h5
房子的位置从左到右为 1,2,3,4,5
茶 d1
咖啡 d2
牛奶 d3
啤酒 d4
矿泉水 d5
Pall Mall y1
Dunhill y2
Blends y3
BlueMaster y4
Prince y5
狗 a1
鸟 a2
猫 a3
马 a4
鱼 a5
十五句汉语的逻辑的表示式如下
p1=h1
p2 =a1
p3 =d1
w(h2)+1=w(h3)
h2=d2
y1=a2
h4=y2
w(h?)=3=d3
w(h?)=1=p4
|w(y3)- w(a3)|=1
|w(y2)-w(a4)|=1
y4=d4
y5=p5
|w(p4)-w(h5)|=1
|w(y3)-w(d5)|=1
从如下的顺序开始推理
w(p4)=1
w(h5)=2
w(h2)=4
w(h3)=5
w(h1)=3
w(h4)=1
人工推理的过程如下图所示:
推理结束时,25个对象各自对应一个从1到5的数字,人的类别,房子的类别,饮料的类别,烟的类别以及宠物的类别,本类别内的数字不能重复,这是题面上的硬约束。
以上图为编码根据,就可以程序化地实现推理了。数据结构是一个二维的数组。大小是25*5。每一次的推理都是根据约束条件,
划去不可能的数字。约束条件的表示,经过两次的转换,才能进入程序化的推理过程,例如 英国人住红房子,这句话,计算机硬件无法直接处理。第一次转换为 p1与h1关联。 第二次再转换为0与5关联。翻译成计算机程序能懂的语言就是二维数组的第0项与第5项的内容完全一致。