博舍

人工智能的编程示例 爱因斯坦推理题 人工智能 编程

人工智能的编程示例 爱因斯坦推理题

人工智能的编程示例爱因斯坦推理题

1.在一条街上,有5座房子,喷了5种颜色。

2.每个房里住着不同国籍的人。

3.每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物。

其中:

(1)、英国人住在红色的房子里;(2)、瑞典人养狗作为宠物;(3)、丹麦人喝茶;(4)、绿房子紧挨着白房子,在白房子的左边;(5)、绿房子的主人喝咖啡;(6)、抽PallMall牌香烟的人养鸟;(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

PallMall  y1Dunhill    y2  Blends     y3BlueMaster  y4Prince          y5

狗                 a1鸟                 a2猫                 a3马                 a4鱼                 a5 

十五句汉语的逻辑的表示式如下p1=h1p2=a1p3=d1w(h2)+1=w(h3)h2=d2y1=a2h4=y2w(h?)=3=d3w(h?)=1=p4|w(y3)-w(a3)|=1|w(y2)-w(a4)|=1y4=d4y5=p5|w(p4)-w(h5)|=1|w(y3)-w(d5)|=1

从如下的顺序开始推理w(p4)=1w(h5)=2

w(h2)=4w(h3)=5w(h1)=3w(h4)=1

人工推理的过程如下图所示:

推理结束时,25个对象各自对应一个从1到5的数字,人的类别,房子的类别,饮料的类别,烟的类别以及宠物的类别,本类别内的数字不能重复,这是题面上的硬约束。

以上图为编码根据,就可以程序化地实现推理了。数据结构是一个二维的数组。大小是25*5。每一次的推理都是根据约束条件,

划去不可能的数字。约束条件的表示,经过两次的转换,才能进入程序化的推理过程,例如英国人住红房子,这句话,计算机硬件无法直接处理。第一次转换为p1与h1关联。第二次再转换为0与5关联。翻译成计算机程序能懂的语言就是二维数组的第0项与第5项的内容完全一致。

根据上述的15个逻辑关系表达式以及人工推理的列表,编写了如下的Javascript程序,实现了数理逻辑上的人工推理到程序化推理的转化

functiontest(){varresult=0;result=initArray([25],function(a){returnrange([5]);});

result=set_value_by_group(result,12,3); //setd3=3;result=copy_constraint(result,[[10,2],[11,6],[13,18]]);

result=set_value_by_group(result,3,1); //setp4=1;result=copy_constraint(result,[[0,5],[1,20],[2,10],[4,19]]);

result=set_abs_contraint_by_group(result,[[3,9]]);//result=set_value_by_group(result,9,2); //seth5=2;result=copy_constraint(result,[[5,0],[6,11],[8,16]]);

result=set_value_by_group(result,7,5);result=copy_constraint(result,[[5,0],[6,11],[8,16]]);

result=set_value_by_group(result,6,4);result=copy_constraint(result,[[5,0],[6,11],[8,16]]);

 result=set_abs_contraint_by_group(result,[[14,17],[16,23]]);  result=copy_constraint(result,[[10,2],[11,6],[13,18],[0,5],[1,20], [2,10],[4,19],[5,0],[6,11],[8,16],[18,13],[20,1],[19,4],[16,8],[15,21],[21,15]]);  result=check_unique(result);  result=set_abs_contraint_by_group(result,[[14,17]]);  result=copy_constraint(result,[[10,2],[11,6],[13,18],[0,5],[1,20], [2,10],[4,19],[5,0],[6,11],[8,16],[18,13],[20,1],[19,4],[16,8],[15,21],[21,15]]);  result=set_abs_contraint_by_group(result,[[17,22]]);  result=copy_constraint(result,[[10,2],[11,6],[13,18],[0,5],[1,20], [2,10],[4,19],[5,0],[6,11],[8,16],[18,13],[20,1],[19,4],[16,8],[15,21],[21,15]]); document.getElementById("txt3").innerText=list(result,function(a){returna;});   //list(arr,functionname)}

//set_add_by_range([1,2,5],1,[1,5]) ---->[2,3]functionset_add_by_range(set1,value,range_value_arr){varresult=[];  for(vari=0;ivarr1=set_add_by_range(x_arr,1,[1,5]);varr2=set_add_by_range(x_arr,-1,[1,5]);varr3=set_union(r1,r2);//varr4=[2,3,4,5];result=set_inter(r3,result,function(a,b){if(a==b)return1;elsereturn0;});returnresult;}

functionset_abs_contraint_by_group(result,arr){ for(vari=0;i           result=set_value_by_group(result,arr[i][1],result[arr[i][1]][0]);            }  }  returnresult;}

//d3=3set_value_by_group(result,12,3)functionset_value_by_group(result,index,value){   var index_bottom=index%5;  var index_high=(index-index_bottom)/5;  varindex_value=set_diff(range([5]),[index_bottom+1]);  for(vari=0;i         result=set_value_by_group(result,target_index,result[target_index][0]);      }  }   result[index]=[value];  returnresult;}

functioncheck_unique(result){  for(vari=0;i  var index_bottom=index%5;  var index_high=(index-index_bottom)/5;  varindex_value=set_diff(range([5]),[index_bottom+1]);  var union_arr=[];  for(vari=0;i        varvalue=set_diff(range([5]),union_arr);       result[index]=value;     }  returnresult;}

//result=copy_constraint(result,[[10,2],[11,6],[14,18]])functioncopy_constraint(result,arr){  for(vari=0;i        result=set_value_by_group(result,arr[i][1],result[arr[i][1]][0]);      }  }  returnresult;}

 

少儿人工智能编程教育培训课程

人工智能编程,面向6-18岁青少年,依托上市教育集团20年编程教育经验,研发出一套系统的少儿编程学习体系,内容涵盖图形化智能编程(ScratchJr、Scratch)和Python人工智能编程(Python、JavaScript、HTML、CSS、Java)等,培养编程思维,提高中国孩子的综合能力和素质。课程流动课堂走进全国数百所中小学公立校,受到教育界和学生家长的高度认可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇