• 大小: 17KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: Java
  • 标签: Java实现  

资源简介

罗马尼亚问题,从Arad到Bucharest结果,深度优先搜索(DFS);迭代加深的搜索(IDS);A*搜索;一致代价搜索(UCS);java实现

资源截图

代码片段和文件信息

package cn.lss;
import java.util.Stack;

/** A*搜索类
 * @author lss
 *
 */
public class AXing{
final static int MAX = Integer.MAX_VALUE;
int MaxWeight=MAX;//表示无穷大
Stack stack=new Stack();
/**A*搜索
 * @param g:图
 * @param H:启发式函数值
 * @param v0:初始值
 * @param end:目标值
 */
public void A_Search(Graph gint H[]int v0int end){
boolean flag=true;
int x;//表示栈顶元素
int vex;//寻找目标节点
int MinFMinVex= v0;//记录最小的f(n)和对应的节点
int[][]GHF=new int[g.path.length][3];//分别用于存储g(n)h(n)f(n)
for(int i =0; i < g.path.length; i++){
GHF[i][0]=0;
GHF[i][2]=MaxWeight;//对f(n)初始化1000表示无穷大
}
stack.push(v0);//v0入栈
GHF[v0][0]=0;//g(n)
GHF[v0][1]=H[v0];//h(n)
GHF[v0][2]=GHF[v0][0]+GHF[v0][1];//f(n)
g.mark[v0]=1;
while(flag){
MinF=MaxWeight;
x=(Integer) stack.peek();
//处理第一个子节点
vex=g.getFirstVex(x);
if(vex==end){//找到目标节点
stack.push(vex);
g.mark[vex]=1;
break;
}
if(vex!=-1){//子节点能找到,继续
if(g.mark[vex]==0){//没被访问
GHF[vex][0]=GHF[x][0]+g.path[x][vex];//节点vex的g(n)
GHF[vex][1]=H[vex];//节点vex的h(n)
GHF[vex][2]=GHF[vex][0]+GHF[vex][1];
if(GHF[vex][2] MinF=GHF[vex][2];
MinVex=vex;
}
}
//处理剩下的邻接点(宽度遍历)
while(vex!=-1){
vex=g.getNextVex(x vex);
if(vex!=-1&&g.mark[vex]==0){//有邻节点
GHF[vex][0]=GHF[x][0]+g.path[x][vex];//节点vex的g(n)
GHF[vex][1]=H[vex];//节点vex的h(n)
GHF[vex][2]=GHF[vex][0]+GHF[vex][1];
if(GHF[vex][2] MinF=GHF[vex][2];
MinVex=vex;
}
}
if(vex==-1){//没有邻接点了,此时确定最小消耗节点,并压栈
stack.push(MinVex);
g.mark[MinVex]=1;
break;
}
if(vex==end){
stack.push(vex);//压栈目标节点
g.mark[vex]=1;
flag=false;
break;
}
}
}
else{//没有子节点或者子节点被访问了,循环出栈
while(vex==-1){
stack.pop();
}
}
}
new Main().show(g stack);
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-03-20 16:10  Artificial\
     文件         301  2018-03-20 16:10  Artificial\.classpath
     文件         386  2018-03-20 16:10  Artificial\.project
     目录           0  2018-03-20 16:10  Artificial\.settings\
     文件         598  2018-03-20 16:13  Artificial\.settings\org.eclipse.jdt.core.prefs
     目录           0  2018-03-25 15:00  Artificial\bin\
     目录           0  2018-03-25 15:00  Artificial\bin\cn\
     目录           0  2018-03-25 15:00  Artificial\bin\cn\lss\
     文件        1950  2018-03-25 15:00  Artificial\bin\cn\lss\AXing.class
     文件        1279  2018-03-25 15:00  Artificial\bin\cn\lss\DFS.class
     文件        4081  2018-04-11 19:32  Artificial\bin\cn\lss\Graph.class
     文件        1602  2018-03-25 15:00  Artificial\bin\cn\lss\IDS.class
     文件        2380  2018-04-11 19:32  Artificial\bin\cn\lss\Main.class
     文件        3750  2018-03-25 15:00  Artificial\bin\cn\lss\UCS.class
     目录           0  2018-03-20 16:14  Artificial\src\
     目录           0  2018-03-20 16:14  Artificial\src\cn\
     目录           0  2018-03-20 16:40  Artificial\src\cn\lss\
     文件        2297  2018-03-20 16:56  Artificial\src\cn\lss\AXing.java
     文件         989  2018-03-20 16:56  Artificial\src\cn\lss\DFS.java
     文件        4776  2018-04-11 19:26  Artificial\src\cn\lss\Graph.java
     文件        1580  2018-03-20 16:56  Artificial\src\cn\lss\IDS.java
     文件        3293  2018-03-20 16:53  Artificial\src\cn\lss\UCS.java

评论

共有 条评论