人工智能实验报告

更新时间:2024-05-18 14:50:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

人工智能课内实验报告

主观贝叶斯方法的研究

一、 实验题目

主观Bayes方法的研究。

二、 实验目的

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

三、 实验原理

1、 证据不确定性的表示

1. 在主观Bayes方法中,证据的不确定性用概率表示。对于证据E,由

用户根据观察S给出P(E|S),即动态强度。用P(E|S)描述证据的不确定性 (证据E不是可以直接观测的)。

2. 证据肯定存在时,P(E|S)=1;

3. 证据肯定不存在时, P(E|S)=0; 4. 证据具有不确定性时, 0

1.当证据E愈是支持H为真时,则应是使相应的LS值愈大。 若证据E对H愈是必要,则相应LN的值愈小。

2. 不能出现LS>1且LN>1的取值

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

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

3. 不能出现LS<1且LN<1的取值

因为:LS<1: 表明证据 E是对H不利的证据。

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

4. 一般情况下,取LS>1, LN<1。 3、证据不确定的情况

在现实中,证据肯定存在和肯定不存在的极端情况是不多的,更多的是介于二者之间的不确定情况。对初始证据来说,由于用户对客观事物或现象的观察不是很精确,因而所提供的证据是不确定的;另外,一条知识的证据往往来源于另一条知识推出的结论,一般也具有某种程度的不确定性。所以我们要在S对E的观察的先验概率0

进一步讨论:

P(H/S)?P(H/E)*P(E/S)?P(H/?E)*P(?E/S)

分四种情况讨论这个公式: 1. P(E/S)=1

当P(E/S)=1时,P(-E/S)=0。此时公式变成(肯定存在的情况):

P(H/S)?P(H/E)?LS*P(H)

(LS?1)*P(H)?12. P(E/S)=0

当P(E/S)=0时,P(-E/S)=1.此时公式变成(肯定不存在的情况):

P(H/S)?P(H/?E)?LN*P(H)

(LN?1)*P(H)?13. 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)

4. 当P(E/S)为其它值时,通过分段线性插值就可得到计算P(H/S)的公式:

P(H)?P(H/?E)?P(H/?E)?*P(E/S),若0?P(E/S)?P(E)?P(E)?P(H/S)???P(H)?P(H/E)?P(H)*[P(E/S)?P(E)],若P(E)?P(E/S)?1?1?P(E)?该公式称为EH公式或UED公式。

四、实验程序 ls=input('ls='); ln=input('ln='); ph=input('ph='); pe=input('pe=');

phe=(ls*ph)/((ls-1)*ph+1); phfe=(ln*ph)/((ln-1)*ph+1); phs=[]; for pes=0:0.01:1

if pes<=pe

a=phfe+(ph-phfe)/pe*pes; phs=[phs,a]; else

a=ph+(phe-ph)/(1-pe)*(pes-pe); phs=[phs,a]; end end

pes=0:0.01:1; plot(pes,phs) 五、实验结果

ls=1000 ln=0.3 ph=0.3 pe=0.3

六、试验总结

通过实验,使我更加熟悉了主观Bayes方法的实质,根据先验概率的条件不同来分析后验概率,利用它们之间的关系,更好的了解不确定性推理

利用A*算法实现重排九宫格

一、实验题目

利用A*算法实现重排九宫格

二、实验目的

熟悉启发式搜索的思想,加深对各种图搜索策略概念的理解。

三、实验原理

1搜索的一般过程

(1)把初始节点S0放入OPEN表,并建立只含S0的图,记为G。OPEN:=S0,G:=G0(G0=S0) (2)检查OPEN表是否为空,若为空则问题无解,退出。LOOP:IF(OPEN)=()THENEXIT(FAIL)

(3)把OPEN表的第一个节点取出放入CLOSE表,记该节点为节点n。N:=FIRST(OPEN),REMOVE(n,OPEN),ADD(n,CLOSE)(4)观察节点n是否为目标节点,若是,则求得问题的解,退出。IFGOAL(n)THENEXIT(SUCCESS)

(5)扩展节点n,生成一组子节点。把其中不是节点n先辈的那些子节点记作集合M,并把这些节点作为节点n的子节点加入G中。EXPAND(n)-->M(mi),G:=ADD(mi,G)针对M中子节点的不同情况,分别进行如下处理:

对于那些未曾在G中出现过的M成员设置一个指向父节点(n)的指针,并把它放入OPEN表;

对于那些先前已在G中出现过的M成员,确定是否要修改指向父节点的指针;对于那些先前已在G中出现,并且已经扩展了的M成员,确定是否需要修改其后继结点指向父节点的指针。

(6)按某种搜索策略对OPEN表中的节点进行排序(7)转第2步。2.2.2A*算法

我在实验中采用A*算法实现重排九宫格。A*算法是一种全局择优的启发式算法,可以证明它具有最优性。

A*算法可以描述为f(n)=h(n)+g(n)的形式。其中,h(n)被称作启发函数,是当前结点到目标结点的代价描述;而g(n)是代价函数,描述了起始结点到当前结点的代价;f(n)是估价函数。A*算法是不回溯的,每次都选择f值最小的路径推进。

在程序中,我按如下思路实现了A*算法。其中,启发函数h(n)我选取的是当前结点和目标结点状态不同的个数。

(1)建立一个链表,计算初始结点的估价函数f,并将初始结点入表,设置链表头和尾指针。

(2)取出头(头指针所指)结点,如果该结点是目标结点,则输出路径,程序结束。否则对结点进行扩展。

(3)检查扩展出的新结点是否与链表中的结点重复,若与不能再扩展的结点重复(位于头指针之前),则将它抛弃;若新结点与待扩展的结点重复(位于头指针之后),则比较两个结点的估价函数中g的大小,保留较小g值的结点。跳至第五步。

(4)如果扩展出的新结点与链表中的结点不重复,则按照它的估价函数f大小将它插入头结点后待扩展结点的适当位置,使它们按从小到大的顺序排列,最后更新尾指针。

(5)如果头结点还可以扩展,直接返回第二步。否则将头指针指向下一结点,再返回第二步。

node_v[index].dist = MAXNUM; }

int main() // 主函数 {

int number;

cout << \起始九宫格:\

for (int i = 0; i < ROW; i++)//输入初始的数据 for (int j = 0; j < COL; j++) { cin >> number;

src.digit[i][j] = number; }

src.index = 0; src.dep = 1;

cout << \目标九宫格:\输入目的数据 for (int m = 0; m < ROW; m++) for (int n = 0; n < COL; n++) { cin >> number;

dest.digit[m][n] = number; }

node_v.push_back(src);//在容器的尾部加一个数据 clock_t start = clock(); while (1) {

if (isEmptyOfOPEN()) {

cout << \无解!\ return -1; } else {

int loc; // the location of the minimize node最优节点的位置 loc = GetMinNode(); if(isEqual(loc, dest.digit)) {

vector rstep_v;

cout << \ 起始的九宫格为:\ cout << src << endl; PrintSteps(loc, rstep_v);

cout << \ 成功! \ break; }

else

ProcessNode(loc); } }

return 0; }

五、实验结果

六、实验总结

这次实验让我对状态空间的搜索问题有了更深刻的了解,对于学好人工智能这门课程帮助颇大

读书报告

----各种各样的知识表示方法及其应用

知识是人类进行一切活动的基础。具有相对性,不确定性,可表示性与可利用性。人类的智能活动过程是一个获取知识并运用知识的过程; 人工智能问题求解是以知识为基础; 知识的获取、知识的表示和运用知识进行推理是人工智能学科要研究的主要问题。 人工智能研究的目的是要建立一个模拟人类智能行为的系统,为达到这个目的就必须研究人类智能行为在计算机上的表示形式,只有这样才能把知识存储到计算机中去。 知识表示是研究用计算机表示知识的可能性、有效性的一般方法,是一种数据结构与控制结构的统一体,既考虑知识的存储又考虑知识的作用。 知识表示实际上就是对人类知识的一种描述,以把人类知识表示成计算机能够处理的数据结构。 对知识进行表示的过程就是把知识编码成某种数据结构的过程。

按照人们从不同角度进行探索以及对问题的不同理解,知识表示方法可分为陈述性知识表示和过程性知识表示两大类。对同一知识,一般都可以用多种方法进行表示,不同的方法对同一知识的表示效果是不一样的,有时需要把几种表示模式结合起来,作为一个整体来表示领域知识。知识的表示方法多种多样,但目前还没有哪种表示方法可以适应于一切知识系统,不同的知识表示方法各有特色,适用于不同的领域。 知识的常见表示方法有: 一、经典逻辑表示法

一阶谓词逻辑表示法 :谓词逻辑是一种知识表示方法,是到目前为止能够表达人类思维活动规律的一种最精确的形式语言;

谓词逻辑与人类的自然语言较接近,又可方便的存储到计算机中,并被计算机做精确处理。 谓词逻辑是一种最早应用于人工智能中的知识表示方法。 知识的谓词逻辑表示法 :

1、 人类的一条知识一般可以由具有完整意义的由一句话或几句话表示出来,而这些知识要用谓词表示出来,一般是一个谓词公式;

2、 谓词公式是用谓词联接符号将一些谓词联接起来所形成的公式;

3、 用谓词公式既可以表示事物的状态、属性、概念等事实性的知识,也可以表示事物间具有确定因果关系的规则性知识。

4、 对事实性知识,谓词逻辑的表示法通常是由以合取符号(∧)和析取符号(∨)联接形成的谓词公式表示。

一阶谓词逻辑是一种形式语言系统,它用数理逻辑的方法研究推理的规律,即条件和结论之间的蕴含关系。 特点是: 1)、 自然性。 2)、 适宜于精确性知识的表示,而不适宜不确定性知识的表示。 3)、 易实现。 4)、 有与谓词逻辑表示法相对应的推理方法(归结推理方法或消解法)

二、产生式表示法

“产生式”是1943年由美国数学家Post首先提出,他根据“串替代”规则提出了一种称为Post

机的计算模型,模型中的每一条规则称为一个产生式(产生式表示法又称为产生式规则表示法)。 1972年,A.Newell和Simon在研究人类的认知模型中开发了基于规则的产生式系统。 目前,产生式表示法已成为人工智能中应用最多的一种知识表示方法。

1、 可表示的知识种类

适合于表示事实性知识和规则性知识。

在表示事实性知识时又可根据知识是确定性的还是不确定性的分别进行表示。 2、产生式的基本形式

产生式通常用于表示因果关系的知识,基本形式为 P→Q 或者 IF P THEN Q

其中,P是产生式的前提,用于指出该产生式是否可用的条件; Q是一组结论或操作,用于指出前提P所指示的条件被满足时,应该得出的结论或应该执行的操作。

3、产生式与谓词逻辑中蕴含式的区别

(1) 产生式的基本形式与谓词逻辑中的蕴含式具有相同的形式。蕴含式只是产生式的一个特殊情 况。

(2) 蕴含式只能表示精确性的知识。

(3) 产生式不仅可以表示精确性的知识,而且可以表示不精确性知识。

(4) 在产生式表示知识的智能系统中,决定一条知识是否可用,只要前提条件与已知事实的相似

度达到某个指定的范围,就认为是可匹配的。

(5) 在谓词逻辑中,蕴含式前提条件的匹配总是要求精确匹配。 4、产生式系统的组成

把一组产生式放在一起,让它们互相配合,协同作用,一个产生式生成的结论可以供另一个产生式作为已知事实使用,以求得问题的解决,这样的系统称为产生式系统。 产生式系统由三个基本部分组成:规则库、综合数据库和推理机。 规则库是用于描述某领域内知识的产生式集合。 综合数据库又称为事实库,用于存放输入的事实、外部数据库输入的事实以及中间结果(事实)和最后结果的工作区 推理机是一个或一组程序,用来控制和协调规则库与综合数据库的运行,包含了推理方式和控制 策略。控制策略的作用就是确定选用什么规则或如何应用规则。 5、产生式系统推理机的推理方式有正向推理、反向推理、双向推理。

6、产生式表示的特点 (1)清晰性。产生式表示格式固定,形式简单,规则间相互较为独立。 (2)模块性。知识库与推理机是分开的。 (3)自然性。产生式表示法用“如果?,则?”的形式表示知识,是人们常用的表示因果关系的知识表示形式。产生式既可以表示确定性知识又可以表示不确定性知识,更符合人们日常见到的问题。 三、层次结构表示法 1、框架理论:

1957年美国著名的人工智能学者明斯基在其论文“A framework for representing knowledge”中提出了框架理论,并把它作为理解视觉、自然语言对话及其它复杂行为的基础。该理论认为人们对现实世界中各种事物的认识都是以一种类似于框架的结构存储在记忆中的,当面临一个新事物时,就从记忆中找出一个合适的框架,并根据实际情况对其细节加以修改、补充,从而形成对当前事物的认识。

2、框架的定义及组成

框架是一种描述所论对象的数据结构;所论的对象可以是一个事物、一个事件或者一个概念。

一个框架由若干个“槽”组成,每个“槽”又可划分为若干个“侧面”。 槽”用于描述所论及对象某一方面的属性。“侧面” 用于描述相应属性的一个方面。 槽和侧面所具有的属性值称为槽值和侧面值;槽值可以是逻辑型或数字型的,具体的值可以是 程序、条件、默认值或是一个子框架。 3框架表示知识的框架步骤: 1)、分析待表达知识中的对象及其属性,对框架中的槽进行合理设置。 2)、对各对象间的联系进行考察。 3)、对各层对象的“槽”、及“侧面”进行合理的组织安排,避免信息描述的重复。 应用举例

例 下面是一则关于地震的报道,请用框架表达这段报道。

“今天,一次强度为里氏8.5级的强烈地震袭击了下斯洛文尼亚(Low Slabovia)地区,造成25人死亡和25亿美元的财产损失。下斯洛文尼亚地区主席说:多年来,靠近萨迪壕金斯断层的重灾区一直是一个危险地区。这是本地区发生的第3号地震。” 解:第一步:确定属性—即框架的槽。

本报道中关于地震的关键属性是地震发生的地点、时间、伤亡人数、财产损失数量、地震强度的震级、断层情况。 第二步:分析本报道中各对象间的联系,由于其中只涉及地震一件事,所以本步可以省略。 下面是将本报道中有关数据填入相应槽后得到的3号地震的框架。 框架名:<地震3> 地点:Low Slabovia

时间:今天 伤亡人数:25

财产损失:250,000,000 震级:8.5

断层:萨迪壕金斯。

知识表示是人工智能的主要问题之一,也是利用人工智能求解实际问题的必经之路。

本文来源:https://www.bwwdw.com/article/d347.html

Top