资源简介

我们人工智能的作业,有报告,有源码。
用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


评论

共有 条评论