⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 searchalg.h

📁 人工智能中经典算法-宽度搜索和启发是搜索(A*算法)在VC环境下的实现代码
💻 H
字号:
// 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -