searchalg.h

来自「人工智能中经典算法-宽度搜索和启发是搜索(A*算法)在VC环境下的实现代码」· C头文件 代码 · 共 45 行

H
45
字号
// SearchAlg.h: interface for the CSearchAlg class.
//
//////////////////////////////////////////////////////////////////////

#include "NodeState.h"
#include "InitDialog.h"
//#include "InputAdvDlg.h"


#if !defined(AFX_SEARCHALG_H__0B0F0FD2_7FB5_4018_9B29_EC315F3458BE__INCLUDED_)
#define AFX_SEARCHALG_H__0B0F0FD2_7FB5_4018_9B29_EC315F3458BE__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CSearchAlg  
{
public:
	CSearchAlg();
	virtual ~CSearchAlg();
public:
	List *		GetResultListPoint();//得到搜索树树根的指针
	BOOL		LoadData(BOOL Adv=false);//载入数据
private:
	int			m_InitialState[3][3];//源状态保存
	int			m_GoalState[3][3];//目标状态保存
	List		m_NodeList;//用于存放搜索树的链表
protected:
	BOOL		FindOtherNode(int CurrentG);//回溯时在其兄弟节点中找其它的节点
	void		IsExisted(List *pList);//是否已经存在 如果已经存在则设标记为已存在
	UINT		FindBestMoveFlag(List *pList);//寻找最佳移动方式 并移动之
	int			Scan(int Desc,Position pos);//扫描 计算H值的辅助函数
	int			ComputeH(CNodeState *Item);//计算H值
	void		GenerateMoveFlag();//穷举空白位的移动方式
	UINT		GenerateChild();//生成子节点
protected:
	int			m_MoveFlagCount;//当前空白位可移动的步数计数
	int			m_CurrentG;//当前G值
	BOOL		m_MoveFlag[4];//移动方式表示
	CNodeState	*m_CurOpItem;//当前操作节点对象
};

#endif // !defined(AFX_SEARCHALG_H__0B0F0FD2_7FB5_4018_9B29_EC315F3458BE__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?