亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? transpositiontable.cpp

?? 一個象棋AI的源代碼,帶游戲界面,其中可選擇多種AI引擎,從最基礎的深度跌代極大極小值搜索到使用開局庫,歷史啟發(fā)的極小窗搜索,具有很高的學習研究價值.
?? CPP
字號:
// TranspositionTable.cpp: implementation of the CTranspositionTable class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "TranspositionTable.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CTranspositionTable::CTranspositionTable()
{
	InitializeHashKey();//建立哈希表,創(chuàng)建隨機數(shù)組
}

CTranspositionTable::~CTranspositionTable()
{
	//釋放哈希表所用空間
	delete m_pTT[0];
	delete m_pTT[1];
}

void CTranspositionTable::CalculateInitHashKey(BYTE CurPosition[][9])
{
	int j,k,nChessType;

	m_HashKey32=0;
	m_HashKey32=0;
	//將所有棋子對應的哈希數(shù)加總
	for(j=0;j<10;j++)
		for(k=0;k<9;k++)
		{
			nChessType=CurPosition[j][k];
			if(nChessType!=NOCHESS)
			{
				m_HashKey32=m_HashKey32^m_nHashKey32[nChessType][j][k]; 
				m_HashKey64=m_HashKey64^m_ulHashKey64[nChessType][j][k]; 
			}
		}
}

void CTranspositionTable::Hash_MakeMove(CHESSMOVE *move, BYTE CurPosition[][9])
{
	BYTE nToID,nFromID;

	nFromID=CurPosition[move->From.y][move->From.x];
	nToID=CurPosition[move->To.y][move->To.x];

	//將要移動的棋子從中去除
	m_HashKey32=m_HashKey32^m_nHashKey32[nFromID][move->From.y][move->From.x]; 
	m_HashKey64=m_HashKey64^m_ulHashKey64[nFromID][move->From.y][move->From.x]; 

	if(nToID!=NOCHESS)//目標位置有棋子,也要從中去除
	{
		m_HashKey32=m_HashKey32^m_nHashKey32[nToID][move->To.y][move->To.x]; 
		m_HashKey64=m_HashKey64^m_ulHashKey64[nToID][move->To.y][move->To.x]; 
	}
	
	//將移動的棋子在目標位置的隨機數(shù)添入
	m_HashKey32=m_HashKey32^m_nHashKey32[nFromID][move->To.y][move->To.x]; 
	m_HashKey64=m_HashKey64^m_ulHashKey64[nFromID][move->To.y][move->To.x];
}

void CTranspositionTable::Hash_UnMakeMove(CHESSMOVE *move, BYTE nChessID, BYTE CurPosition[][9])
{
	BYTE nToID;

	nToID=CurPosition[move->To.y][move->To.x];
	
	//將移動棋子在移動前位置上的隨機數(shù)添入
	m_HashKey32=m_HashKey32^m_nHashKey32[nToID][move->From.y][move->From.x]; 
	m_HashKey64=m_HashKey64^m_ulHashKey64[nToID][move->From.y][move->From.x]; 

	//將移動棋子在現(xiàn)位置上的隨機數(shù)從哈希值當中去除
	m_HashKey32=m_HashKey32^m_nHashKey32[nToID][move->To.y][move->To.x]; 
	m_HashKey64=m_HashKey64^m_ulHashKey64[nToID][move->To.y][move->To.x]; 
	
	if(nChessID)
	{
		//將被吃掉的棋子所對應的隨機數(shù)恢復進哈希值
		m_HashKey32=m_HashKey32^m_nHashKey32[nChessID][move->To.y][move->To.x]; 
		m_HashKey64=m_HashKey64^m_ulHashKey64[nChessID][move->To.y][move->To.x]; 
	}
}

int CTranspositionTable::LookUpHashTable(int alpha, int beta, int depth, int TableNo)
{
	int x;
	HashItem* pht;

	//計算二十位哈希地址,如果讀者設定的哈希表大小不是1M*2的,
	//而是TableSize*2,TableSize為讀者設定的大小
	//則需要修改這一句為m_HashKey32%TableSize
	//下一個函數(shù)中這一句也一樣
	x=m_HashKey32 & 0xFFFFF;
	pht=&m_pTT[TableNo][x];//取到具體的表項指針

    if(pht->depth>=depth && pht->checksum==m_HashKey64)
	{
		switch(pht->entry_type)//判斷數(shù)據(jù)類型
		{
		case exact://確切值
			return pht->eval;

		case lower_bound://下邊界
			if(pht->eval>=beta)
				return pht->eval;

			break;

		case upper_bound://上邊界
			if (pht->eval<=alpha)
				return pht->eval;

			break;
        }
	}

	return 66666;
}

void CTranspositionTable::EnterHashTable(ENTRY_TYPE entry_type, short eval, short depth, int TableNo)
{
	int x;
	HashItem* pht;

	x=m_HashKey32 & 0xFFFFF;//計算二十位哈希地址
	pht=&m_pTT[TableNo][x]; //取到具體的表項指針

	//將數(shù)據(jù)寫入哈希表
	pht->checksum=m_HashKey64; //64位校驗碼
	pht->entry_type=entry_type;//表項類型
	pht->eval=eval;			   //要保存的值
	pht->depth=depth;		   //層次
}

void CTranspositionTable::InitializeHashKey()
{
	int i,j,k;
	
	srand((unsigned)time(NULL));
	
	//填充隨機數(shù)組
	for(i=0;i<15;i++)
		for(j=0;j<10;j++)
			for(k=0;k<9;k++)
			{
				m_nHashKey32[i][j][k]=Rand32();
				m_ulHashKey64[i][j][k]=Rand64();
			}

	//申請置換表所用空間。1M*2個條目,讀者也可指定其他大小
	m_pTT[0]=new HashItem[1024*1024];//用于存放取極大值的節(jié)點數(shù)據(jù)
	m_pTT[1]=new HashItem[1024*1024];//用于存放取極小值的節(jié)點數(shù)據(jù)
}

//生成64位隨機數(shù)
LONGLONG CTranspositionTable::Rand64()
{
    return rand()^((LONGLONG)rand()<<15)^((LONGLONG)rand()<<30)^
		((LONGLONG)rand()<<45)^((LONGLONG)rand()<<60);
}

//生成32位隨機數(shù)
LONG CTranspositionTable::Rand32()
{
    return rand()^((LONG)rand()<<15)^((LONG)rand()<<30);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩亚州综合| 久久av中文字幕片| 日韩中文字幕区一区有砖一区 | 亚洲欧洲日韩一区二区三区| 亚洲成av人影院| 99久久综合狠狠综合久久| 欧美一区二区三区不卡| 一区二区三区高清不卡| av中文字幕一区| 国产欧美精品日韩区二区麻豆天美| 亚洲国产精品影院| 91亚洲精华国产精华精华液| 2020日本不卡一区二区视频| 天堂成人免费av电影一区| 91香蕉国产在线观看软件| 国产精品网站在线| 国产一区二区精品在线观看| 欧美一级免费观看| 亚洲成人av一区二区三区| 91小视频免费观看| 亚洲视频一区二区在线观看| 国产高清不卡二三区| 精品国产乱码久久久久久图片| 亚洲一区视频在线| 在线免费观看日本一区| 亚洲欧美一区二区三区极速播放| 一本久道久久综合中文字幕| 久久亚区不卡日本| 激情综合网天天干| 精品国产91亚洲一区二区三区婷婷 | 精品成人免费观看| 久久99国产精品麻豆| 日韩欧美成人午夜| 韩国一区二区在线观看| 欧美精品一区二| 黑人精品欧美一区二区蜜桃| 久久精品夜夜夜夜久久| 国产美女视频一区| 国产精品久久久久三级| 99综合影院在线| 亚洲精品国产成人久久av盗摄| 91日韩精品一区| 亚洲欧美日韩人成在线播放| 91久久免费观看| 亚洲大片免费看| 欧美一区二区日韩一区二区| 麻豆成人免费电影| 国产三级欧美三级日产三级99| 成人免费毛片app| 一区二区不卡在线播放| 欧美另类久久久品| 国产一区二区三区香蕉| 国产亚洲成av人在线观看导航| 成人永久aaa| 亚洲国产另类精品专区| 欧美zozozo| a级高清视频欧美日韩| 亚洲一卡二卡三卡四卡无卡久久| 欧美一卡2卡3卡4卡| 国产91精品一区二区麻豆亚洲| 亚洲天堂精品在线观看| 日韩一区二区三免费高清| 国产精品1区二区.| 亚洲资源在线观看| 2017欧美狠狠色| 欧美亚洲综合一区| 久久精品国产亚洲5555| 最新不卡av在线| 欧美成人精品福利| 91麻豆swag| 国产一区二区导航在线播放| 亚洲欧美经典视频| 精品精品国产高清a毛片牛牛| 成人app网站| 日韩专区欧美专区| 亚洲欧美日韩电影| 久久婷婷成人综合色| 欧美日免费三级在线| 国产传媒久久文化传媒| 婷婷久久综合九色综合伊人色| 国产精品入口麻豆九色| 7777精品伊人久久久大香线蕉的 | 亚洲成av人片一区二区三区| 中文字幕一区三区| 精品少妇一区二区| 在线免费观看日本欧美| 床上的激情91.| 麻豆精品国产91久久久久久 | 久久久精品2019中文字幕之3| 欧美在线综合视频| av在线这里只有精品| 国产一区二区三区美女| 午夜欧美一区二区三区在线播放| 国产欧美视频在线观看| 精品久久国产字幕高潮| 欧美日韩免费不卡视频一区二区三区 | 91麻豆福利精品推荐| 国产成人综合在线| 狠狠色丁香婷综合久久| 日本一区中文字幕| 亚洲一区二区3| 一区二区三区欧美| 亚洲视频香蕉人妖| 国产日本一区二区| 久久久久久久综合色一本| 91精品在线观看入口| 欧美日本一区二区在线观看| 91久久精品一区二区三| 色婷婷亚洲婷婷| 91女人视频在线观看| av一本久道久久综合久久鬼色| 国产91富婆露脸刺激对白| 狠狠色狠狠色综合日日91app| 久久精品国产亚洲a| 麻豆国产欧美日韩综合精品二区 | 亚洲精品一区二区三区四区高清| 538在线一区二区精品国产| 欧美日本乱大交xxxxx| 欧美人妇做爰xxxⅹ性高电影| 精品视频免费看| 777午夜精品视频在线播放| 884aa四虎影成人精品一区| 欧美日韩一区精品| 欧美精品一卡二卡| 日韩欧美精品在线视频| 久久久久9999亚洲精品| 国产精品视频一二三区| 自拍视频在线观看一区二区| 亚洲乱码精品一二三四区日韩在线| 亚洲免费电影在线| 亚洲成人黄色小说| 久久aⅴ国产欧美74aaa| 成熟亚洲日本毛茸茸凸凹| av网站一区二区三区| 欧美日韩视频第一区| 精品日韩在线观看| 久久久国产精华| 综合婷婷亚洲小说| 同产精品九九九| 国产精品一区二区在线看| 91在线精品秘密一区二区| 欧美亚洲综合另类| 精品国精品国产| 亚洲少妇中出一区| 日韩av电影免费观看高清完整版 | 五月天一区二区| 久久99精品国产麻豆不卡| 成人的网站免费观看| 欧美性videosxxxxx| 久久亚洲一区二区三区明星换脸| 中文字幕视频一区二区三区久| 亚洲午夜羞羞片| 国产成人在线网站| 337p亚洲精品色噜噜噜| 中文字幕成人网| 日本欧美在线看| 91在线观看成人| 2023国产精华国产精品| 一区二区三区免费看视频| 久久97超碰色| 欧美吞精做爰啪啪高潮| 国产精品视频一二三区| 日本成人在线不卡视频| 91免费视频观看| 久久久不卡影院| 日韩av一区二区三区| 91偷拍与自偷拍精品| 精品国产凹凸成av人网站| 亚洲自拍偷拍九九九| 成人黄页毛片网站| 日韩精品一区在线观看| 午夜视黄欧洲亚洲| 一本到不卡免费一区二区| 国产性色一区二区| 麻豆国产91在线播放| 欧美日韩一区精品| 一区二区不卡在线播放 | 亚洲黄色小说网站| 成人免费看黄yyy456| 久久众筹精品私拍模特| 青青草91视频| 欧美美女bb生活片| 亚洲女同一区二区| 91最新地址在线播放| 亚洲国产精品成人久久综合一区| 免费在线成人网| 4hu四虎永久在线影院成人| 一区二区三区美女视频| av在线播放成人| 中文字幕亚洲精品在线观看 | 欧美日韩综合不卡| 亚洲专区一二三| 欧洲一区二区三区在线| 亚洲三级电影网站| 色婷婷亚洲婷婷| 亚洲成人免费av| 欧美久久久久久久久| 视频一区二区三区在线| 欧美喷潮久久久xxxxx| 日韩av在线播放中文字幕|