资源简介
罗马尼亚问题,从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
- 上一篇:java平台基于TCP的聊天室设计
- 下一篇:jsp页面打印
相关资源
- kerberos的java实现
- java实现爬取指定网站的数据源码
- java实现自动扫描文件夹txt文档插入数
- java实现的简单的按照文件名检索文件
- R树的Java实现 可直接在eclipse下运行
- RAS算法Java实现
- 操作系统实验和课设,java实现动态内
- 操作系统课设,用java实现磁盘调度算
- 决策树算法JAVA实现包括C4.5和ID3
- 求解线性方程组的解——java实现
- java实现的highcharts与ajax结合动态实时
- JAVA实现骑士巡游马踏棋盘
- 用java实现基于文件的图书管理系统
- Java实现分词正向最大匹配和逆向最大
- java实现excel表格文件的复制
- 二维矩形装箱算法--二叉树--java实现
- BP神经网络JAVA实现源码含两套训练测
- java实现人脸注册及人脸登录!
- java实现LRU虚拟内存替换算法.zip
- Java实现读者优先与写者优先
- des加密算法java实现
- Java实现离散真值表
- Java实现Web服务器和客户端
- java实现的教学管理系统——适合jav
- Java实现音乐播放器源码
- java实现聊天的服务端
- Louvain java实现
- 用java实现2048小游戏的实验报告
- java实现录频并播放
- JAVA实现GUI计时器+贪吃蛇+扫雷
评论
共有 条评论