资源简介
我们人工智能的作业,有报告,有源码。
用Java写的,还有演示
用Java写的,还有演示
代码片段和文件信息
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
import java.util.TreeSet;
public class Search {
/**
* @param args
*/
public TreeSet open = new TreeSet();
public List closed = new ArrayList();
// 修改测试数据 1:(来源书上)
// int[] start_array = { 2 8 3 1 0 4 7 6 5 };
// int[] end_array = { 1 2 3 8 0 4 7 6 5 };
// 修改测试数据 2:(来源书上)
int[] start_array = { 8 0 3 2 1 4 7 6 5 };
int[] end_array = { 1 2 3 8 0 4 7 6 5 };
public StateNode start = new StateNode(start_array);
public StateNode end = new StateNode(end_array);
public boolean init() {
if (isAbleSearch(start end)) {
StateInvaluate.setStatevaluate(start end);
open.add(start);
return true;
} else
return false;
}
public boolean isAbleSearch(StateNode start StateNode end) {
// 初始和目标的逆序数同偶或同奇可解
int s1 = 0 s2 = 0;
for (int i = 0; i < start.blocks.length; i++) {
for (int j = i; j >= 0; j--) {
if (start.blocks[i] > start.blocks[j]
&& start.no_block_position != i
&& start.no_block_position != j)
s1++;
if (end.blocks[i] > end.blocks[j] && end.no_block_position != i
&& end.no_block_position != j)
s2++;
}
}
return (s1 % 2 == s2 % 2);
}
private void outputResult(Stack solvepath) {
// TODO Auto-generated method stub
System.out.println(“初始状态:\n“ + start);
System.out.println(“目标状态:\n“ + end);
System.out.println(“===================移动路径如下:===================\n“);
int i = 1;
while (!solvepath.isEmpty()) {
System.out.println(“第“ + (i++) + “步:“);
System.out.println(solvepath.pop());
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Search search = new Search();
// 判断是否可解
if (!search.init()) {
System.out.println(“cannot search solution!!“);
System.exit(0);
}
// 搜索解
StateNode temp = null;
while (!search.open.isEmpty()) {
temp = search.open.first();
search.open.remove(temp);
if (temp.equals(search.end))
break;
StateGenerator.setChildState(temp);
for (int i = 0; i < temp.childs.size(); i++) {
if (!search.closed.contains(temp.childs.get(i))) {
StateInvaluate.setStatevaluate(temp.childs.get(i)
search.end);
if (!search.open.contains(temp))
search.open.add(temp.childs.get(i));
}
}
search.closed.add(temp);
}
// 构建解路径
Stack solvepath = new Stack();
while (temp != null) {
solvepath.push(temp);
temp = temp.parent;
}
// 输出结果
search.outputResult(solvepath);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3106 2010-05-02 00:00 八数码\bin\Search.class
文件 1333 2010-05-02 00:00 八数码\bin\StateGenerator.class
文件 1009 2010-05-02 00:00 八数码\bin\StateInvaluate.class
文件 2057 2010-05-02 00:00 八数码\bin\StateNode.class
文件 24566 2010-05-03 10:02 八数码\IA实验报告.docx
文件 2778 2010-04-06 11:19 八数码\src\Search.java
文件 1900 2010-04-04 18:01 八数码\src\StateGenerator.java
文件 1341 2010-04-04 18:01 八数码\src\StateInvaluate.java
文件 1931 2010-04-06 11:21 八数码\src\StateNode.java
文件 433 2010-04-06 11:18 八数码\实验结果演示.bat
目录 0 2010-05-03 10:02 八数码\bin
目录 0 2010-05-03 10:02 八数码\src
目录 0 2010-05-03 10:02 八数码
----------- --------- ---------- ----- ----
40454 13
- 上一篇:android 瀑布流Demo
- 下一篇:Java航空订票系统
相关资源
- Java航空订票系统
- 数据库设备管理系统课程设计论文J
- java编写的扫描仪程序
- Java实现的聊天室,具有群聊和私聊功
- java GUI版汉诺塔源码
- jsp 学生信息管理系统设计与实现
- java实现的网络五子棋
- java编写21点游戏(附源代码)
- ATM自动取款机(JAVA课程)基本功能实
- 距离向量路由协议模拟程序(Java)
- java实现的QQ登录界面
- java词频统计
- 搜索引擎的研究与实现Java附源码
- java 原创 坦克大战 源码 带有详细注释
- 日历时钟java版实现
- java 记事本(功能较全面且界面美观)
- 内容丰富的java电子琴
- java做的世界杯程序
-
Java Jfr
ame简单聊天程序 - 飞机订票系统(java)
- 采用JAVA编写VORONOI图
- java sql2000员工管理系统数据库、文档
-
Java ba
se64编码和解码 - java笔试题汇总及答案(另附各大公司
- java版多人聊天室
- java小作业 人事管理系统
- 电话本(Java编写的在控制台上运行)
- java端口扫描程序
- java web网络通讯录
- Java课程设计(15个经典案例)
评论
共有 条评论