人工智能汉诺塔实验报告

汉诺塔实报告

一、       实验目的:

1、掌握产生式系统解决汉诺塔算法的基本思想。

2、熟悉和掌握问题规约法的原理、实质和规约过程。

3、理解规约图的表示方法。

二、实验原理:

1、在移动盘子时,每次只移动A/B/C柱子上可以移动的盘子中最大的盘子。
2、如果上一次已经移动了某个盘子,则下一次不能继续移动,即:一个盘子不能被连续移动两次。如:某次操作将1号盘子由A柱子移动到B柱子,那么在选择下一个要移动的盘子时应不在考虑1号盘。
3、当某个可以移动的盘子摆放位置不唯一时要将当前状态入栈,并选择盘子移动前所在的柱子的左侧(同理:反方向选择也可)柱子作为移动的目标柱子。
为提高程序运行过程中的空间利用率,产生式规则在汉诺塔移动过程中依据以上规则自动生成。
三、实验条件:

1、必须要有三个柱子A,B,C。

2、盘子的数量不能太多。

3、应该用自己熟悉的语言写程序。

四、实验步骤:

第一次移动之后:

第二次移动之后:

第三次移动之后:

五、实验内容:

利用c/c++语言编写汉诺塔程序,并实现盘子的移动过程。

六、实验小结:

通过本次实验我掌握了汉诺塔的算法和移动的过程,同时也更好的运用了c++的知识解决了这个问题,在做的过程中确实有不懂的地方,但是查资料还是解决了,希望自己以后会更好的利用c++/c这们高级程序编写语言。

 

第二篇:人工智能课内实验报告1

人工智能课内实验报告(一)

     

----主观贝叶斯

 

                             

一、实验目的

   1. 学习了解编程语言,掌握基本的算法实现; 

   2. 深入理解贝叶斯理论和不确定性推理理论; 

   3. 学习运用主观贝叶斯公式进行不确定推理的原理和过程。

二、实验内容

    在证据不确定的情况下,根据充分性量度LS、必要性量度LN、E的先验概率P(E)和H的先验概率P(H)作为前提条件,分析P(H/S)和P(E/S)的关系。

    具体要求如下: 

   (1) 充分考虑各种证据情况:证据肯定存在、证据肯定不存在、观察与证据

无关、其他情况; 

   (2) 考虑EH公式和CP公式两种计算后验概率的方法;

   (3) 给出EH公式的分段线性插值图。

三、实验原理

1. 知识不确定性的表示:

在主观贝叶斯方法中,知识是产生式规则表示的,具体形式为: 

IF E THEN (LS,LN) H(P(H)) 

LS是充分性度量,用于指出E对H的支持程度。其定义为: 

            LS=P(E|H)/P(E|¬H)。 

LN是必要性度量,用于指出¬E对H的支持程度。其定义为: 

            LN=P(¬E|H)/P(¬E|¬H)=(1-P(E|H))/(1-P(E|¬H)) 

2. 证据不确定性的表示 

在证据不确定的情况下,用户观察到的证据具有不确定性,即0<P(E/S)<1。此时就不能再用上面的公式计算后验概率了。而要用杜达等人在1976年证明过的如下公式来计算后验概率P(H/S):

P(H/S)=P(H/E)*P(E/S)+P(H/~E)*P(~E/S)                    (2-1)

下面分四种情况对这个公式进行讨论。

(1) P(E/S)=1

当P(E/S)=1时,P(~E/S)=0。此时,式(2-1)变成

P(H/S)=P(H/E)=                        (2-2)

这就是证据肯定存在的情况。

(2) P(E/S)=0

当P(E/S)=0时,P(~E/S)=1。此时,式(2-1)变成

P(H/S)=P(H/~E)=                       (2-3)

这就是证据肯定不存在的情况。

(3) P(E/S)=P(E)

当P(E/S)=P(E)时,表示E与S无关,则利用全概率公式可知:

   P(H/S)=P(H/E)*P(E)+P(H/~E)*P(~E)=P(H)                    (2-4)

即观察与证据无关,观察与结论无关。也就是说,该观察不影响结论,所以在该观察下,结论的概率没有变,还是原来的先验概率。

(4) 其他情况

当P(E/S)为其他值时,通过分段线性插值可计算出P(H/S)。具体公式如下:

P(H/S)= (2-5)

该公式称为EH公式或者UED公式。

3. LS和LN的性质 

(1) LS>1: 表明证据E是对H有利的证据。  

    LN>1: 表明证据¬E是对H有利的证据。 

    所以:不能出现LS>1且LN>1的取值。

(2) LS<1: 表明证据E是对H不利的证据。  

    LN<1:表明证据¬E是对H不利的证据。 

    所以:不能出现LS<1且LN<1的取值 

(3) 一般情况下,取LS>1, LN<1。

四、实验程序及运行结果

程序如下:

#include<stdio.h>

#include<graphics.h>

#include<conio.h>

float ls,ln,ph,pe,phs,pes,phne,phe;

 int main()

{

      

       printf("please input the value:");

      

       scanf("%f/n",&ls);

       scanf("%f/n",&ln);

       scanf("%f/n",&ph);

       scanf("%f/n",&pe);

       initgraph(1000, 600);

              if((pes>=0)&&(pes<=pe))

              {

                     phne=(ln*ph)/((ln-1)*ph+1);

                     phs=phne+((ph-phne)*pes/pe);

                     initgraph(1000, 600);

                     line(1000,500,0,500);

line(0,600,0,0);

                     line(0,phne*500,pe*500,ph*500);

              }

               if((pes>=pe)&&(pes<=1))

              {

            phe=(ls*ph)/((ls-1)*ph+1);

            phs=ph+(phe-ph)*(pes-pe)/(1-pe);

                     initgraph(1000, 600);

                     line(1000,500,0,500);

       line(0,600,0,0);

                     line(pe*500,ph*500,1*500,phe*500);

              }

              getch();

                     closegraph();

}

程序运行截图如下:

输入   ls=100 ln=0.1 ph=0.6 pe=0.4

五、实验体会和感想

 通过输入自己定的LS、LN、P(E)、P(H)等值,经程序计算判断出属于证据不确定的哪种情况,就可以画出EH公式的分段线性插值图。

 通过这个实验,初步了解了人工智能理论中关于不确定性算法的知识。通过分类各个情况,了解了不同情况下的的计算方法。我也更加深入地理解了主观Bayes方法的实质及其特点,根据先验概率的条件不同来分析后验概率,利用它们之间的关系,更好的了解不确定性推理方法。

相关推荐