• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: 其他
  • 标签:

资源简介

这是清华人工智能的一个作业,用Alpha Beta算法求解一个剪枝问题,里面有严格的文件输入和输出,以及算法实现的全过程。

资源截图

代码片段和文件信息

/**
 * 实现Inter.java接口中的函数
 * 不要添加 package语句
 */

import java.util.*;
import java.io.*;



public class AbPruning implements Inter{
/**
 * 不要定义static 的变量
 */




final int MAX_INT=32767;   //定义最大整数
final int MIN_INT=-32768; //定义最小整数
final int MAX=1; //极大层节点标志
final int MIN=0; //极小层节点标志

/**
 * 以下结构定义了树结构的一个节点。
 */
public class Node
{
private String name;  //节点名
private int value;  //节点的值,在实际博弈程序中并不需要该值,这里为了显示得到的每个节点
//的倒推值,设置了该域。
private int leval;//节点处在极大层,还是在极小层
private String pFather;//该节点的父亲名字是什么
private ArrayList pChildren;//该节点的子节点

Node(String name)
{
this.name=name;
value=-1;
pFather=new String();
pChildren=new ArrayList();
}

}


private ArrayList NodeTree;
private String jianzhi[];   //存储剪枝的结果
private int count;

public void getStrategy(String inputFile){
/**说明:
这里是你的实现,对输入文件中描述的博弈树进行alpha-beta剪枝并输出剪枝后的结果

输入输出格式见作业文档,输出用系统标准输出System.out

your code here

*/

NodeTree=new ArrayList();
jianzhi=new String[20];
count=0;
readTree(inputFile);
/*for(int i=0;i {
    System.out.print(NodeTree.get(i).name+“ “+NodeTree.get(i).value+“ “+NodeTree.get(i).pFather);
    for(int j=0;j      System.out.print(“ “+NodeTree.get(i).pChildren.get(j));
    System.out.println();
}*/
Alph_Beta(NodeTree.get(0).name);   //根节点开始用Alpha_Beta算法
//System.out.println(count);
String bestRoute=““;
for(int i=0;i {
if(NodeTree.get(0).value==NodeTree.get(search(NodeTree.get(0).pChildren.get(i))).value)
{
bestRoute=NodeTree.get(0).name+“ “+NodeTree.get(0).value+“ “+NodeTree.get(search(NodeTree.get(0).pChildren.get(i))).name;
break;
}

}
System.out.println(bestRoute);
for(int i=0;i {
System.out.println(jianzhi[i]);
}

}
void Alph_Beta(String str)     //如考参数为节点名
{
boolean flag=false;
Node nNode=NodeTree.get(search(str));
/*System.out.print(nNode.name+“ “+nNode.leval+“ “+nNode.pFather);
for(int j=0;j      System.out.print(“ “+nNode.pChildren.get(j));*/
if(nNode.leval==MAX)  //当前节点是极大点
{
for(int i=0;i {
Alph_Beta(nNode.pChildren.get(i));//递归对子节点进行算法计算
if(nNode.value {
nNode.value=NodeTree.get(search(nNode.pChildren.get(i))).value;//将子节点的值给父亲节点
if(Beta(str))//是否在极大点出执行Beta剪枝
{
//在此处执行剪枝,则该节点后面的兄弟节点都被剪去
jianzhi[count]=str+“:“;
for(int j=i+1;j {
//System.out.println(nNode.pChildren.get(j));
jianzhi[count]=jianzhi[count]+“ “+nNode.pChildren.get(j);
flag=true;
}
if(flag==true)
{
co

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7495  2009-11-25 16:06  新建文件夹\AbPruning.java

     文件        152  2009-11-11 00:59  新建文件夹\Inter.java

     文件        287  2009-11-25 16:05  新建文件夹\Test.java

     文件        472  2009-09-23 00:08  新建文件夹\tree1.txt

     文件       1187  2009-09-23 00:08  新建文件夹\tree2.txt

     目录          0  2009-11-30 19:49  新建文件夹

----------- ---------  ---------- -----  ----

                 9593                    6


评论

共有 条评论

相关资源