⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 searchprocess.java~1~

📁 自己用JAVA编的人工智能的A*算法的八数码程序
💻 JAVA~1~
字号:
package eightfigure;import java.io.*;import java.util.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.event.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author unascribed * @version 1.0 */class searchProcess {  Vector open=new Vector();  Vector close=new Vector();  Vector father=new Vector();  boolean flag=true;  Node source={0,Source,0,0,0};  Node dest={0,Dest,0,0,0};  public Vector execute(String Source,String Dest){    push(source,open);    Node pnode=open.firstElement();    //Boolean flag=true;    while(pnode){    Node pnode=pop(open);    caculatemove(pnode);    push(pnode,close);    //if(equal(pnode,dest)) break;    if (judgesame( pnode, desc))    {getresult(pnode);      break;    }    extendnode(pnode);    queopen();    pnode=open.firstElement();    }    if(pnode.equals(""))      System.err.print("初始到目标状态无解");  }  //////////////////////////////////////  public void push(Node node,Vector ope){    ope.add(node);  }  public Node pop(Vector ope){    return ope.firstElement();  }  public boolean judgesame(Node s1,Node s2){    for(int i=0;i<=s1.arr.length;i++){      for(int j=0;j<=s2.arr.length;j++){        if(!s1.arr[i][j]==s2.arr[i][j])          return false;      }       return true;  }  }  public void exendnode(Node pnode){   int m=0;   int n=0;   for(int i=0;i<=2;i++)    { for(int j=0;j<=2;j++)     if(pnode.arr[i][j].equals("0"))     {      m=i;      n=j;    } } if(m-1>-1) {  boolean flag=false;   Node pnewnode=new Node();   for(int i=0;i<=2;i++)    for(int j=0;j<=2;j++)       pnewnode.arr[i][j]=pnode.arr[i][j];   if(!pnewnode.arr[i][j]=dest.arr[i][j])     {     pnewnode.arr[m][n]=pnewnode.arr[m-1][n];       pnewnode.arr[m-1][n]='0';     }     pnewnode.g++;     pnewnode.h=caculatemove(pnewnode);    pnewnode.f=pnewnode.g+pnewnode.h;             k=0;             while(k<open.size())             {flag=true;             for(int i=0;i<=2;i++)             {               for(int j=0;j<=2;j++)                    if(pnewnode.arr[i][j]!=((Node)open.get(k)).arr[i][j])                       push(pnewnode,open);                    break;             }               k++;    } } if(m+1<3) {  boolean flag=false;   Node pnewnode=new Node();   for(int i=0;i<=2;i++)    for(int j=0;j<=2;j++)       pnewnode.arr[i][j]=pnode.arr[i][j];   if(!pnewnode.arr[i][j]=dest.arr[i][j])     {     pnewnode.arr[m][n]=pnewnode.arr[m+1][n];       pnewnode.arr[m+1][n]='0';     }     pnewnode.g++;     pnewnode.h=caculatemove(pnewnode);    pnewnode.f=pnewnode.g+pnewnode.h;             k=0;             while(k<open.size())             {flag=true;             for(int i=0;i<=2;i++)             {               for(int j=0;j<=2;j++)                    if(pnewnode.arr[i][j]!=((Node)open.get(k)).arr[i][j])                       push(pnewnode,open);                    break;             }               k++;    } } if(n-1>-1) {  boolean flag=false;   Node pnewnode=new Node();   for(int i=0;i<=2;i++)    for(int j=0;j<=2;j++)       pnewnode.arr[i][j]=pnode.arr[i][j];   if(!pnewnode.arr[i][j]=dest.arr[i][j])     {     pnewnode.arr[m][n]=pnewnode.arr[m][n-1];       pnewnode.arr[m][n-1]='0';     }     pnewnode.g++;     pnewnode.h=caculatemove(pnewnode);    pnewnode.f=pnewnode.g+pnewnode.h;             k=0;             while(k<open.size())             {flag=true;             for(int i=0;i<=2;i++)             {               for(int j=0;j<=2;j++)                    if(pnewnode.arr[i][j]!=((Node)open.get(k)).arr[i][j])                       push(pnewnode,open);                    break;             }               k++;    } } if(n+1<3) {  boolean flag=false;   Node pnewnode=new Node();   for(int i=0;i<=2;i++)    for(int j=0;j<=2;j++)       pnewnode.arr[i][j]=pnode.arr[i][j];   if(!pnewnode.arr[i][j]=dest.arr[i][j])     {     pnewnode.arr[m][n]=pnewnode.arr[m][n+1];       pnewnode.arr[m][n+1]='0';     }     pnewnode.g++;     pnewnode.h=caculatemove(pnewnode);    pnewnode.f=pnewnode.g+pnewnode.h;             k=0;             while(k<open.size())             {flag=true;             for(int i=0;i<=2;i++)             {               for(int j=0;j<=2;j++)                    if(pnewnode.arr[i][j]!=((Node)open.get(k)).arr[i][j])                       push(pnewnode,open);                    break;             }               k++;    } }    }   public void queopen(){     for(int i=0;i<open.size();i++){       Node min=new Node();       Node nod=new Node();       int position;       min=open.firstElement();       if((Node)open.get(i)).f<((Node)min).f)       {         position=i;         }     }     nod=open.     }   } /* public void exendnode(Node pnode){    int m=0;    int n=0;    for(int i=0;i<=2;i++)     { for(int j=0;j<=2;j++)      if(pnode.arr[i][j].equals("0"))      {       m=i;       n=j;     }  }  if(m-1>-1)  {   boolean flag=false;    Node pnewnode=new Node();    for(int i=0;i<=2;i++)     for(int j=0;j<=2;j++)        pnewnode[i][j]=pnode[i][j];        pnewnode[m][n]=pnewnode[m-1][n];        pnewnode[m-1][n]='0';    k=0;    while(k<open.size())    {flag=true;    for(int i=0;i<=2;i++)    {      for(int j=0;j<=2;j++)           if(pnewnode.arr[i][j]!=((Node)open.get(k)).arr[i][j])              { flag=false;             break;  }  if(flag=false) break;   }   if(flag=true) break;   k++;    }  if(flag=true)  {    if(costnew(pnode,pnewnode)>cost(open.get(k))  }  }*/     public int caculatemove(Node nod){     }  class Node(String[][] arr,int f,int g,Vector father)      {  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -