資源簡介
使用java語言寫的八數碼問題,僅供參考。其中用到了啟發式搜索算法
代碼片段和文件信息
package?com.ai.eightPuzzle;
import?java.util.ArrayList;
import?java.util.Arrays;
import?java.util.linkedList;
import?java.util.List;
import?java.util.Queue;
import?java.util.Scanner;
/**
?*?八數碼問題求解
?*?
?*?@author?kaiser
?*
?*/
public?class?EightPuzzle?{
/**
?*?啟發式搜索,選擇最優希望的節點加以擴展估價函數為f(n)=d(n)+W(n)?;d(n)為搜索樹中節點n的深度;W(n)為位置錯誤的個數
?*?
?*?@param?node1
?*????????????初始狀態節點
?*?@param?node2
?*????????????目標狀態節點
?*/
public?void?heuristicSearch(int[]?node1?int[]?node2)?{
List?open?=?new?ArrayList();//?存放待擴展的結點
List?close?=?new?ArrayList();//?存放已經訪問擴展過的結點
int?d?=?0;?//?節點n的深度
int?w?=?0;?//?錯放位置數
int?f?=?0;
int?swap;
int?index?=?0;//?自加標記
for?(int?i?=?0;?i? if?(node1[i]?!=?node2[i
評論
共有 條評論