VC中利用人工智能解决八迷宫问题
日期:2007年6月7日 作者: 查看:[大字体 中字体 小字体]-
前言
随着计算机技术的发展,人工智能(Artificial intelligence,下文简称"AI")已经成为世界各国一个热门的研究方向。对于这一领域的内容,国内起步较晚,目前虽然网络上各种编程文章很多,但是关于如何编程解决人工智能问题的文章和资料少之又少。近日,笔者有幸在国外网站上发现了这一篇精彩文章,该文通过VC实例来说明如何解决及实现人工智能问题,例子程序虽然相对来说比较简单,但有一定的代表性,对有兴趣研究这一领域的朋友们有借鉴意义。
一、"八迷宫"游戏简介
在大学进行AI模块开发的时候,我就开始着手写这篇文章,目的是介绍我所了解到的一些让人感兴趣的问题。对于什么是人工智能,我想没有任何人愿意花费大量时间进行争论。
当你读到这里的时候,推荐你下源代码,因为粘贴和拷贝的代码与源代码的作用相比是远远不及的。在本文中,我将使用一个单人游戏"八迷宫"作为一个例子,这个游戏的规则如下:
有一个3X3的网格,包含1到8这几个数(因此,有一个格子是空的),最初这8个数的排列是随机的,例如,下面的排列是一种可能情况:
6 1 7 3 4 5 8 2
游戏玩家可以向东、南、西、北等方向移动这个空格,移动空格时,空格所占位置的数字将填补到原来空格的位置。例如,对于上图来说,如果向北移动空格,游戏的状态将如下图所示:
6 1 3 4 7 5 8 2
当游戏状态实现如下所示的状态时,游戏结束。
1 2 3 8 4 7 6 5
二、解决"八迷宫"问题的方法
解决上述问题的方法主要有以下几种:
1、Breadth First Search(按照"横向"原则搜索).
2、Depth First Search(按照"深度"原则搜索).
3、Heuristic Search(启发式搜索).
4、A* search.
实现这些方法的代码非常相似,但是它们工作的方式是截然不同的。所有的上述方法都要使用一个链表,而且最初的链表都只有一个成员,它对应着游戏网格的最初状态。这个成员向它所有可能的子状态进行膨胀(每种移动所产生的结果都被考虑了进去),然后所有这些子状态都被添加到链表中。这种处理将在一个循环中进行持续处理,直到实现目标状态,也就是说直到游戏结束为止。
实现"八迷宫"单人游戏的伪代码如下:Do
Current_Item = Remove_Item_From_List
Child_State_Array = EXPand (Current_State)
Add_to_List(Child_State_Array)
If child_State_Array Holds the solution then IsGameOver = true
Loop while (IsGameOver = false) - [1] [2] [3] [4] 下一页
-
- VC中利用人工智能解决八迷宫问题 相关文章:
- ·VC中利用人工智能解决八迷宫问题
- VC中利用人工智能解决八迷宫问题 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:C++/CLI实战——HELLO
精品推荐
热点TOP10
- ·C语言教程第六章:指针
- ·C/C++笔试、面试题目大汇总
- ·MSComm控件使用详解
- ·学生成绩管理系统实习
- ·飞机订票系统设计
- ·Windows下C语言网络编程快速入门
- ·c#.net连接access操作类
- ·进程调度模拟程序
- ·打字游戏
- ·C#基础概念二十五问
- ·makefile规则
- ·C语言的常用库函数使用方法分析及用途
- ·Windows编程基础 - 概述
- ·c语言中的结构(struct)和联合(union)简介
- ·C语言教程第五章:函数
- ·一个简单的链表程序
- ·GDB 的文档
- ·socket编程原理
- ·VC下调用ACM音频编程接口压缩Wave音频
- ·漫谈C++ Builder多线程编程技术
特别推荐
- ·C#基础概念二十五问
- ·利用C#远程存取Access数据库
- ·入门教程:实例详解C++友元
- ·C语言基础教程(三)输入输出函数及控制流程语句
- ·VC下调用ACM音频编程接口压缩Wave音频
- ·如何在C/C++中调用Java
- ·设计的一个计算器类的源代码,很简陋哦,请各位高手不要见笑!
- ·gSOAP中内存的使用
- ·Windows下C语言网络编程快速入门
- ·C语言教程第六章:指针
- ·漫谈C++ Builder多线程编程技术
- ·学生成绩管理系统实习
- ·用C#实现pdf文件的完整性验证
- ·将程序从托管扩展 C++ 迁移到 C++/CLI(1)
- ·链表的c语言实现(六)
- ·C语言库函数 (D类字母)
- ·用AVIFile函数制做AVI文件基本步骤
- ·利用C++实现的贪吃蛇游戏
- ·Windows API-GDI入门基础知识详解(3)
- ·C语言库函数 (C类字母)
