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

📄 stringmatchpredictor.h

📁 C人工智能游戏开发的一些实例源代码 C Game development in artificial intelligence source code of some examples
💻 H
字号:
//----------------------------------------------------------------------------------------------
// Sequential Prediction Demo: The positioning pattern
// 
// Author:  Fri Mommersteeg
// Date:    10-09-2001
// File:    StringMatchPredictor.h
//----------------------------------------------------------------------------------------------

//----------------------------------------------------------------------------------------------
// An efficient O(N) string-matching predictor (where N is the size of the window).
//----------------------------------------------------------------------------------------------

#ifndef __STRINGMATCHPREDICTOR_H
#define __STRINGMATCHPREDICTOR_H

//----------------------------------------------------------------------------------------------
// Include files
//----------------------------------------------------------------------------------------------

#include "slidingwindow.h"
#include "iteratorlist.h"
#include "array.h"
#include "predictor.h"

//----------------------------------------------------------------------------------------------
// Defines
//----------------------------------------------------------------------------------------------

#define SMP_HISTOGRAM CArray< CIteratorList< THistogramData > >
#define SMP_WINDOW CSlidingWindow <TSequenceData>

//----------------------------------------------------------------------------------------------
// THistorgramData: element in the histogram
//----------------------------------------------------------------------------------------------

struct THistogramData {
public:
	THistogramData() {}
	THistogramData(int nSequencePosition) { this->nSequencePosition = nSequencePosition; }
public:
	int	nSequencePosition;
};

//----------------------------------------------------------------------------------------------
// TSequenceData: element in the sequence
//----------------------------------------------------------------------------------------------

struct TSequenceData {
public:
	TSequenceData() {}
	TSequenceData(int Element) { this->Element = Element; }
public:
	int nMatchSize;
	int	Element;
};

//----------------------------------------------------------------------------------------------
// CStringMatchPredictor: efficient O^N string-matching predictor
//----------------------------------------------------------------------------------------------

class CStringMatchPredictor : public CPredictor {
public:
	// constructors & destructors

	CStringMatchPredictor() { m_nMaxSize = 0; m_nPrediction = 0; m_nSequenceLength = 0; m_nMinPerformance = 1; }
	~CStringMatchPredictor() {}

public:
	// override members from predictor interface
	virtual void	Update(int NextElement);
	virtual bool	GetPrediction(int &Prediction);
	virtual void	Reset();

public:
	// predictor setup method
	void			Setup(int nWindowSize, int nAlphabetSize, int nMinPerformance);

protected:
	BOOL			HasNeighbour(int iWindowPosition, int Neighbour);
	int				GetNeighbourSize(int iWindowPosition);

protected:
	SMP_HISTOGRAM	m_Histogram;
	SMP_WINDOW		m_Window;
	int				m_PrevElement;
	int				m_nWindowSize;
	int				m_nSequenceLength;
	int				m_nMaxSize;
	int				m_nMaxPosition;
	int				m_nPrediction;
	int				m_nMinPerformance;
	int				m_nAlphabetSize;
};

//----------------------------------------------------------------------------------------------
#endif // __STRINGMATCHPREDICTOR_H

⌨️ 快捷键说明

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