- 3
- 0
- 约6.59千字
- 约 9页
- 2018-11-06 发布于江苏
- 举报
人工智能实验 教士野人
人工智能实验报告
题目:求解传教士和野人问题
姓名:
班级:
学号:
学院:计算机科学与信息
专业:计算机科学与技术
指导教师:
日期:2011年12月6日
一、实验目的:
复习经典谓词演算中的归结原理,掌握人工智能程序设计语言Prolog,理解通过搜索求解问题实现人工智能的思想。
二、实验原理:
谓词演算中的消解法。
三、实验内容:
设有3个传教士和3个野人同在河的左岸,他们都要到对岸去;河里只有一条船,他们都会划船,但每次渡船至多只能乘两人;如果在任何一边河岸上,野人的数量超过传教士,野人就要吃掉传教士,问怎样才能用船将3个传教士和3个野人从左岸都渡到右岸,又不会发生传教士被吃的事件呢?通过Prolog程序,给出乘船过河的动作序列。
四、实验描述及要求:
设计该问题的状态。例如:((左岸牧师数,左岸野人数),(右岸牧师数,右岸野人数),船的位置)。
定义目标状态。这里是:((0,0),(3,3),1)
描述可能的动作。船上所能够载人的状态就是可能的操作。用谓词move/2表示。
判断合法状态
深度优先搜索
五、实验结果:
六:实验代码
#include stdafx.h
#include cstdio
#include cstdlib
#include iostream
using namespace std;
#define FAIL ((struct BOAT *)-1)
#define M 3
#define C 3
#define K 2
struct Lift
{
int m;
int c;
int b;
struct Lift *pNext;
};
struct BOAT
{
int m;
int c;
struct BOAT *pNext;
};
struct BOAT *g_pBoatSet = NULL;
int Equal(struct Lift *pLift1, struct Lift *pLift2)
{
if (pLift1-m == pLift2-m
pLift1-c == pLift2-c
pLift1-b == pLift2-b)
return 1;
else
return 0;
}
struct Lift *NewLift(int m, int c, int b)
{
struct Lift *pLift = NULL;
pLift = (Lift*)malloc(sizeof(struct Lift));
if (pLift == NULL) return NULL;
pLift-m = m;
pLift-c = c;
pLift-b = b;
pLift-pNext = NULL;
return pLift;
}
struct BOAT *NewBoat(int m, int c)
{
struct BOAT *pBoat = NULL;
pBoat = (BOAT*)malloc(sizeof(struct BOAT));
if (pBoat == NULL) return NULL;
pBoat-m = m;
pBoat-c = c;
pBoat-pNext = NULL;
return pBoat;
}
struct BOAT *InitBoats(void)
{
struct BOAT *pBoats = NULL, *pBoat = NULL;
int i, j;
for (i = 0; i = 2; i++) {
for (j = 0; j = 2; j++)
{
if(i+j=2) {
您可能关注的文档
最近下载
- 2024年黑龙江冰雪体育职业学院单招综合素质模拟试题及答案解析.docx VIP
- 战伤救护理论考试及答案.doc VIP
- 2026年春季学期幼儿园教科研工作计划--以研促教启新程,以科赋能育未来.docx
- 深度解析(2026)《GBT 29181-2024术语工作 计算机应用 术语信息置标框架》.pptx VIP
- 第三章 自然资源单元测试(A卷基础篇)(解析版)初中地理仁爱版八年级上册.doc VIP
- 2026-2027部编人教版小学2二年级语文下册(全册)教案设计.doc
- 城市公共安全第二章.ppt VIP
- 水工监测工(技师)试卷及答案.docx VIP
- 2026年甘肃省委党校在职研究生招生考试(文化学)历年参考题库含答案详解.docx VIP
- 基于STM32单片机厨房安全检测系统设计.doc VIP
原创力文档

文档评论(0)