人工智能实验报告1 prolog初步.docx

上传人:b****1 文档编号:3243419 上传时间:2023-05-05 格式:DOCX 页数:10 大小:252.06KB
下载 相关 举报
人工智能实验报告1 prolog初步.docx_第1页
第1页 / 共10页
人工智能实验报告1 prolog初步.docx_第2页
第2页 / 共10页
人工智能实验报告1 prolog初步.docx_第3页
第3页 / 共10页
人工智能实验报告1 prolog初步.docx_第4页
第4页 / 共10页
人工智能实验报告1 prolog初步.docx_第5页
第5页 / 共10页
人工智能实验报告1 prolog初步.docx_第6页
第6页 / 共10页
人工智能实验报告1 prolog初步.docx_第7页
第7页 / 共10页
人工智能实验报告1 prolog初步.docx_第8页
第8页 / 共10页
人工智能实验报告1 prolog初步.docx_第9页
第9页 / 共10页
人工智能实验报告1 prolog初步.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

人工智能实验报告1 prolog初步.docx

《人工智能实验报告1 prolog初步.docx》由会员分享,可在线阅读,更多相关《人工智能实验报告1 prolog初步.docx(10页珍藏版)》请在冰点文库上搜索。

人工智能实验报告1 prolog初步.docx

人工智能实验报告1prolog初步

数学与软件科学学院实验报告

学期:

2016至2017第1学期

日期:

课程名称:

人工智能概论

专业:

信息与计算机科学

实验编号:

01

实验项目:

Prolog基础

指导教师:

郭远华

学号:

姓名:

实验成绩:

一、目的要求

掌握visualprolog中的基本结构,包括域说明、谓词说明、事实和规则说明、目标说明;

掌握简单查询,变量查询,组合查询,规则查询;

熟悉递归设计,学习prolog语言与C等语言不同的思维方式;

初步掌握prolog中cut(!

)的用法。

2、实验内容

1.阅读下列prolog程序,回答问题。

DOMAINS

para=symbol

PREDICATES

nondetermroom(para)

nondetermlocation(para,para)

nondetermedible(para)

CLAUSES

room(kitchen).

room(office).

room(hall).

room("diningroom").

room(cellar).

location(desk,office).

location(apple,kitchen).

location(flashlight,desk).

location("washingmachine",cellar).

location(nani,"washingmachine").

location(broccoli,kitchen).

location(crackers,kitchen).

location(computer,office).

edible(apple).

edible(crackers).

GOAL

room(office).

(1)程序有几块?

分别是什么作用?

答:

程序中有四块。

分别是:

a.域说明部分(domains),作用是说明谓词对象的数据类型

b.谓词说明部分(predicates),作用是定义程序中除内部谓词以外的所有谓词。

c.子句部分(clauses),作用是列出全部事实和规则,也可看作是程序的静态数据。

d.在目标部分(GOAL),作用是说明程序的目标。

一个程序目标可以由多个字目标复合而成。

(2)程序运行的结果?

将GOAL部分的内容分别替换成room(pen),location(apple,kitchen),location(app,kitchen),location(Apple,kitchen),location(Apple,Kitchen)后,运行结果?

为什么?

答:

运行的结果为:

分别做替换的运行结果及原因如下:

1)room(pen):

结果:

原因:

在数据库中找不到room(pen)这样的事实。

2)location(apple,kitchen):

结果:

原因:

子句中第七句与之匹配成功。

3)location(app,kitchen):

结果:

原因:

没有子句与之匹配。

4)location(Apple,kitchen):

结果:

原因:

Apple作为变量,kitchen作为常量,子句第7、11、12句中第二个参数与kitchen匹配,Apple依次被绑定为apple、broccoli和crackers。

5)location(Apple,Kitchen):

结果:

原因:

Apple和Kitchen都作为变量,所以返回所有匹配结果。

(3)将GOAL部分的内容分别替换成edible(X),location(X,kitchen),运行结果?

并从回溯的角度分析结果产生原因。

1)edible(X)

结果:

原因:

子句中有两个edible事实,分别为apple和crackers

2)location(X,kitchen)

结果:

原因:

X作为变量,kitchen作为常量,子句中第二(location(apple,kitchen))、六(location(broccoli,kitchen))、七(location(crackers,kitchen))句与第二个参数匹配

(4)添加规则

where_food(X,Y):

-location(X,Y),edible(X).

并将GOAL的内容替换为

where_food(X,kitchen).

给出运行结果并分析结果产生原因。

答:

结果如下

原因:

混合查询厨房里能吃的东西,首先找到与location第二个参数匹配的事实(即厨房里的东西)绑定X值,再判断X是否与edible事实匹配,依次重复这两步从而得到以上结果。

(5)写一段prolog代码求解下面的问题

对于所有的X,只要X是一个人,它就属于人类。

苏格拉底(socrates)是一个人,判断苏格拉底是不是属于人类?

(谓词有2个,person(name):

name是人,moral(name):

name是人类)

答:

设计一个person事实和一个moral规则,代码及运行结果如下:

DOMAINS

name=symbol

PREDICATES

nondetermperson(name)

nondetermmoral(name)

CLAUSES

person(socrates).

moral(X):

-person(X).

GOAL

moral(socrates).

结果:

所以苏格拉底是人类。

2.

(1)写prolog程序找出下图中所有的通路?

(图中的点之间的关系要表达为事实,谓词2个,road(a,b)表示a、b连接,并接从a指向b,path(a,b)表示有从a到b的通路;规则两条,path(X,Y):

-road(X,Y).和path(X,Y):

-road(X,Z),path(Z,Y).)

答:

代码如下:

DOMAINS

node=symbol

PREDICATES

nondetermroad(node,node)

nondetermpath(node,node)

CLAUSES

road(a,b).

road(a,c).

road(b,e).

road(b,d).

road(c,d).

road(d,e).

path(X,Y):

-road(X,Y).

path(X,Y):

-road(X,Z),path(Z,Y).

GOAL

path(X,Y).

结果:

原因:

回溯,

(2)将第二条规则改成

path(X,Y):

-road(X,Z),path(Z,Y),!

.

给出运行结果并分析原因。

答:

结果:

原因:

无回溯过程,

3.下面的程序实现了正整数的累加(如3+2+1=6,4+3+2+1=10等):

DOMAINS

para=integer

PREDICATES

add(para,para)

CLAUSES

add(0,0):

-!

.

add(M,N):

-

M1=M-1,

add(M1,N1),

N=N1+M.

GOAL

add(3,X).

参考并写出实现正整数阶乘的程序(如3*2*1=6)。

答:

代码如下:

DOMAINS

para=integer

PREDICATES

mul(para,para)

CLAUSES

mul(1,1):

-!

.

mul(M,N):

-

M1=M-1,

mul(M1,N1),

N=N1*M.

GOAL

mul(3,X).

结果:

替换GOALmul(1,X)结果:

替换GOALmul(4,X)结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2