资源简介

八数码问题是人工智能经典难题之一。问题是在3×3 方格盘上,放有八个数码,剩下一个为空,每一空格其上下左右的数码可移至空格。问题给定初始位置和目标位置,要求通过一系列的数码移动,将初始位置转化为目标位置。本文介绍用A星算法,采用估计值h(n)(曼哈顿距离)和g(m)(当前深度)的和作为估计函数。

资源截图

代码片段和文件信息

package MyAI;


import javax.swing.border.titledBorder;
import javax.swing.*;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;


public class Astar extends Jframe {
private JLabel label;
private static final long serialVersionUID = 1L;
private static final int DEFAULT_WIDTH=764;
private static final int DEFAULT_HEIGHT=371;
private JPanel panel;
JPanel contentPane;
JPanel jPanel1 = new JPanel();
titledBorder titledBorder1 = new titledBorder(““);
JPanel jPanel2 = new JPanel();
JButton jButton3 = new JButton();
JCheckBox jCheckBox1 = new JCheckBox();
JCheckBox jCheckBox2 = new JCheckBox();
JPanel jPanel3 = new JPanel();
titledBorder titledBorder2 = new titledBorder(““);
JButton jButton6 = new JButton();
JLabel jLabel1 = new JLabel();
JTextField jTextField1 = new JTextField();
JPanel jPanel5 = new JPanel();
JLabel jLabel2 = new JLabel();
JLabel jLabel5 = new JLabel();
JTextField jTextField5 = new JTextField();
JTextField jTextField10 = new JTextField();
JRadioButton jRadioButton3 = new JRadioButton();
JRadioButton jRadioButton4 = new JRadioButton();
JButton jButton8 = new JButton();
GridLayout gridLayout1 = new GridLayout(3 3);
JButton[][] jButtonGroup_start = new JButton[3][3];
JButton[][] jButtonGroup_end = new JButton[3][3];
java.awt.GridLayout gridLayout2 = new GridLayout(3 1);
JLabel jLabel6 = new JLabel();
JLabel jLabel7 = new JLabel();

javax.swing.Timer time;

int current_step = 0;

String change_img = “red“;

Node auto_node;
Vector vc = new Vector();

int[][] end = { { 0 1 2 } { 3 4 5 } { 6 7 8 } };
int[][] start = { { 0 1 2 } { 3 4 5 } { 6 7 8 } };

int local_x = 0;
int local_y = 0;

public Astar() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
titledBorder1 = new titledBorder(“状态设置“);
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
setSize(new Dimension(764 371));
settitle(“八数码演示程序“);

jPanel1.setBorder(titledBorder1);
jPanel1.setBounds(new Rectangle(8 16 135 256));
jPanel1.setLayout(null);
jPanel2.setBorder(BorderFactory.createEtchedBorder());
jPanel2.setBounds(new Rectangle(18 86 99 147));
jPanel2.setLayout(null);
jButton3.setBounds(new Rectangle(10 15 81 26));
jButton3.setText(“随机生成“);
jCheckBox1.setText(“起始状态“);
jCheckBox1.setBounds(new Rectangle(10 61 80 23));
jCheckBox2.setText(“目标状态“);
jCheckBox2.setBounds(new Rectangle(10 88 80 23));
jPanel3.setBorder(BorderFactory.createEtchedBorder());
jPanel3.setBounds(new Rectangle(153 52 213 191));
jPanel3.setLayout(gridLayout1);
jLabel6.setText(“初始状态:“);
jLabel6.setBounds(new Rectangle(154 15 64 25));
jLabel7.setText(“目标状态:“);
jLabel7.setBounds(new Rectangle(397 13 70 26));

for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j

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

     文件       1454  2010-04-08 20:08  人工智能之八数码问题\digits\red1.jpg

     文件       1848  2010-04-08 20:09  人工智能之八数码问题\digits\red2.jpg

     文件       1741  2010-04-08 20:10  人工智能之八数码问题\digits\red3.jpg

     文件       1557  2010-04-08 20:10  人工智能之八数码问题\digits\red4.jpg

     文件       1774  2010-04-08 20:10  人工智能之八数码问题\digits\red5.jpg

     文件       1761  2010-04-08 20:10  人工智能之八数码问题\digits\red6.jpg

     文件       1562  2010-04-08 20:11  人工智能之八数码问题\digits\red7.jpg

     文件       1878  2010-04-08 20:11  人工智能之八数码问题\digits\red8.jpg

    ..A.SH.    365056  2010-04-08 20:11  人工智能之八数码问题\digits\Thumbs.db

     文件      10103  2010-04-09 09:17  人工智能之八数码问题\MyAI\Astar.java

     文件       6175  2010-04-09 22:16  人工智能之八数码问题\MyAI\EightNumber.java

     文件        644  2010-04-08 10:33  人工智能之八数码问题\MyAI\RandomState.java

     文件      15160  2010-04-09 22:19  人工智能之八数码问题\MyAI.jar

     文件     335360  2010-04-21 23:25  人工智能之八数码问题\人工智能实验报告.doc

     目录          0  2010-04-21 23:25  人工智能之八数码问题\digits

     目录          0  2010-04-21 23:25  人工智能之八数码问题\MyAI

     目录          0  2010-04-21 23:25  人工智能之八数码问题

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

               746073                    17


评论

共有 条评论