EightFigure
所属分类:人工智能/神经网络/深度学习
开发工具:Java
文件大小:2214KB
下载次数:65
上传日期:2005-07-08 15:24:06
上 传 者:
270500
说明: 自己用JAVA编的人工智能的A*算法的八数码程序
(own use JAVA series of the artificial intelligence of the A* algorithm eight digital procedures)
文件列表:
EightFigure (0, 2004-05-12)
EightFigure\EightFigure.jpx.local~ (1496, 2004-05-12)
EightFigure\EightFigure.jpx~ (0, 2004-05-12)
EightFigure\EightFigure.jpx (2354, 2004-05-18)
EightFigure\src (0, 2004-05-12)
EightFigure\src\eightfigure (0, 2004-05-12)
EightFigure\src\eightfigure\searchProcess.java~4~ (8960, 2004-05-21)
EightFigure\src\eightfigure\Frame2.java (2421, 2004-05-21)
EightFigure\src\eightfigure\Frame1.java (8974, 2004-05-21)
EightFigure\src\eightfigure\searchProcess.java (8958, 2004-05-24)
EightFigure\src\eightfigure\searchProcess.java~1~ (5791, 2004-05-14)
EightFigure\src\eightfigure\searchProcess.java~2~ (6814, 2004-05-15)
EightFigure\src\eightfigure\searchProcess.java~3~ (8484, 2004-05-17)
EightFigure\src\eightfigure\mainProcess.java (1295, 2004-05-20)
EightFigure\bak (0, 2004-05-12)
EightFigure\bak\eightfigure (0, 2004-05-12)
EightFigure\bak\eightfigure\Frame2.java~78~ (2322, 2004-05-21)
EightFigure\bak\eightfigure\Frame2.java~79~ (2446, 2004-05-21)
EightFigure\bak\eightfigure\searchProcess.java~142~ (8930, 2004-05-21)
EightFigure\bak\eightfigure\Frame2.java~81~ (2588, 2004-05-21)
EightFigure\bak\eightfigure\Frame2.java~82~ (2590, 2004-05-21)
EightFigure\bak\eightfigure\searchProcess.java~134~ (12653, 2004-05-21)
EightFigure\bak\eightfigure\searchProcess.java~140~ (8931, 2004-05-21)
EightFigure\bak\eightfigure\searchProcess.java~136~ (12112, 2004-05-21)
EightFigure\bak\eightfigure\searchProcess.java~137~ (12224, 2004-05-21)
EightFigure\bak\eightfigure\searchProcess.java~138~ (8931, 2004-05-21)
EightFigure\bak\eightfigure\searchProcess.java~139~ (8932, 2004-05-21)
EightFigure\bak\eightfigure\Frame2.java~80~ (2447, 2004-05-21)
EightFigure\bak\eightfigure\searchProcess.java~141~ (8932, 2004-05-21)
EightFigure\bak\eightfigure\Frame1.java~28~ (8974, 2004-05-21)
EightFigure\bak\eightfigure\Frame2.java~83~ (2478, 2004-05-21)
EightFigure\bak\eightfigure\Frame2.java~84~ (2474, 2004-05-21)
EightFigure\bak\eightfigure\Frame1.java~29~ (8981, 2004-05-21)
EightFigure\bak\eightfigure\Frame2.java~76~ (2323, 2004-05-21)
EightFigure\bak\eightfigure\Frame2.java~77~ (2590, 2004-05-21)
EightFigure\bak\eightfigure\searchProcess.java~135~ (12281, 2004-05-21)
EightFigure\bak\eightfigure\searchProcess.java~143~ (8932, 2004-05-21)
EightFigure\bak\eightfigure\Frame2.java~75~ (2556, 2004-05-21)
EightFigure\bak\eightfigure\Frame1.java~20~ (8729, 2004-05-19)
EightFigure\bak\eightfigure\Frame1.java~21~ (8858, 2004-05-19)
... ...
尚老师暂时我还没作出来扩展节点的显示,我先把这个发过来吧,
我尽量把扩展节点显示出来,有的地方我还没想明白,如果做出来,我再发过去。
你让我做的一些JAVA小程序,我整理一下,下周给您发过去。
说明:
本程序在JBuilder环境下运行
EightFigure 问题程序由四部分组成:
Frame1.java 显示初始界面 ,初始化,调用searchProcess和Frame2
Frame2.java 显示运行结果界面
mainProcess.java 系统自动生成的程序运行的入口,运行时右键点击此处运行
searchProcess.java 系统主要的执行过程,为本程序的主要部分。
searchProcess.java 程序的关键原码如下:
public class searchProcess {
public Vector open=new Vector();
public Vector close=new Vector();
public int pnodeId=0;
public Vector execute(int[][] Source,int[][] Dest){
boolean flag;
Node source=new Node(0,0,Source,0,0,0);
Node dest=new Node(0,0,Dest,0,0,0);
source.h=caculatemove(source,dest);
source.f=source.g+source.h;
push(source,open);
Node pnode=source;
while(flag=true){ //OPEN表为空退出
if(open.isEmpty()){
flag=false;
break;
}
pnode=pop(open);
push(pnode,close);
if (judgesame(pnode, dest)) //找到目标退出
break;
extendnode(pnode,dest);
queopen();
}
Node Father; //根据父节点找最佳路径
Vector Result=new Vector();
int k=0;
if(flag=true){
Result.add(pnode);
int m=pnode.parentid;
while(m>0){
Father=found(m,close,source);
m=Father.parentid;
Result.add(Father);
k++;
}
}
else{ //没找到标志
System.out.print("no found");
}
Result.add(source);
return Result; //即为结果
}
//////////////////////////////////////
//以下是EXECUTE实现的所有方法:
public void push(Node node,Vector ope){ //将NODE加进OPEN表
ope.add(node);
}
public Node pop(Vector ope){ //将OPEN表的第一个NODE弹出
Node firstnode=(Node)ope.get(0);
ope.removeElementAt(0);
return firstnode;
}
public Node found(int k,Vector vec,Node Source){ //在CLOSE表中ID号相同的NODE
Node result=Source;
int i;
for(i=0;i-1)
{ int[][] arr=new int[3][3];
boolean flag=true;
Node pnewnode=new Node(0,0,arr,0,0,0);
for(int i=0;i<=2;i++)
for( int j=0;j<=2;j++)
pnewnode.arr[i][j]=pnode.arr[i][j];
pnewnode.arr[m][n]=pnewnode.arr[m-1][n];
pnewnode.arr[m-1][n]=0;
int k=0;
while(k-1)
{ int[][] arr=new int[3][3];
boolean flag=false;
Node pnewnode=new Node(0,0,arr,0,0,0);
for( int i=0;i<=2;i++)
for(int j=0;j<=2;j++)
pnewnode.arr[i][j]=pnode.arr[i][j];
pnewnode.arr[m][n]=pnewnode.arr[m][n-1];
pnewnode.arr[m][n-1]=0;
int k=0;
while(k0)
nume=num;
else
nume=-num;
return nume;
}
}
class Node { //定义NODE 结构
int Id;
int[][] arr=new int[3][3];
int parentid;
int g;
int f;
int h;
public Node()
{}
public Node(int Id,int parentid,int[][] arr,int f,int g,int h) {
this.Id=Id;
this.parentid=parentid;
for(int i=0;i<=2;i++)
{for(int j=0;j<=2;j++)
this.arr[i][j]=arr[i][j];
}
this.f=f;
this.g=g;
this.h=h;
}
}
近期下载者:
相关文件:
收藏者: