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

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

?? 基本搜索方法——置換表.htm

?? 象棋程序設計全資料集(介紹編寫象棋程序的方法思路)
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0055)http://www.elephantbase.net/computer/search_hashing.htm -->
<HTML><HEAD><TITLE>基本搜索方法——置換表</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb_2312-80">
<META content="MSHTML 6.00.3790.2817" name=GENERATOR></HEAD>
<BODY background=基本搜索方法——置換表_files/background.gif>
<DL dir=ltr>
  <DIV align=center>
  <CENTER>
  <DT>《對弈程序基本技術》專題 </CENTER></DT></DIV>
  <DIV align=center>
  <CENTER>
  <DT>  </CENTER></DT></DIV>
  <DIV align=center>
  <CENTER>
  <DT><FONT face=隸書 size=6>置換表</FONT> </CENTER></DT></DIV>
  <DIV align=center>
  <CENTER>
  <DT>  </CENTER></DT></DIV>
  <DIV align=center>
  <CENTER>
  <DT><FONT face="Times New Roman">Bruce Moreland (</FONT><A 
  href="mailto:brucemo@seanet.com"><FONT 
  face="Times New Roman">brucemo@seanet.com</FONT></A><FONT 
  face="Times New Roman">) / </FONT>文 </CENTER></DT></DIV>
  <DT>  
  <DT><FONT face=楷體_GB2312 size=5><STRONG>一個多功能的數據結構</STRONG></FONT> 
  <DT>  
  <DT>  國際象棋的搜索樹可以用圖來表示,而置換結點可以引向以前搜索過的子樹上。置換表可以用來檢測這種情況,從而避免重復勞動。如果“<FONT 
  face="Times New Roman">1. e4 d6 2. d4</FONT>”以后的局面已經搜索過了,那就沒有必要再搜索“<FONT 
  face="Times New Roman">1. d4 d6 2. e4</FONT>”以后的局面了。 
  <DT>  這個原因可能鼓舞著早期的電腦國際象棋程序的設計師們,而現在事實上這還是置換表的次要用途。在某些局面,例如在沒有通路兵的王兵殘局中,檢查到的置換的數量是驚人的,以至于搜索可以在短達時間內達到很深的深度。 

  <DT>  省去重復的工作,這是置換表的一大特色,但是在一般的中局局面里,置換表的另一個作用更為重要。每個散列項里都有局面中最好的著法,我在“<A 
  href="http://www.elephantbase.net/computer/search_iterative.htm" 
  target=_blank>迭代加深</A>”這一章里解釋過,首先搜索好的著法可以大幅度提高搜索效率。因此如果你在散列項里找到最好的著法,那么你首先搜索這個著法,這樣會改進你的著法順序,減少分枝因子,從而在短的時間內搜索得更深。 

  <DT>  
  <DT><FONT face=楷體_GB2312 size=5><STRONG>實現</STRONG></FONT> 
  <DT>  
  <DT>  主置換表是一個散列數組,每個散列項看上去像這樣: 
  <DD>  
  <DD>#define hashfEXACT 0 
  <DD>#define hashfALPHA 1 
  <DD>#define hashfBETA 2 
  <DD>typedef struct tagHASHE { 
  <DD> U64 key; 
  <DD> int depth; 
  <DD> int flags; 
  <DD> int value; 
  <DD> MOVE best; 
  <DD>} HASHE; 
  <DD>  
  <DT>  這個散列數組是以“<A 
  href="http://www.elephantbase.net/computer/struct_zobrist.htm" 
  target=_blank><FONT 
  face="Times New Roman">Zobrist</FONT>鍵值</A>”為指標的。你求得局面的鍵值,除以散列表的項數得到余數,這個散列項就代表該局面。由于很多局面都有可能跟散列表中同一項作用,因此散列項需要包含一個校驗值,它可以用來確認該項就是你要找的。通常校驗值是一個<FONT 
  face="Times New Roman">64</FONT>位的數,也就是上面那個例子的第一個域。 
  <DT>  你從搜索中得到結果后,要保存到散列表中。如果你打算用散列表來避免重復工作,那么重要的是記住搜索有多深。如果你在一個結點上搜索了<FONT 
  face="Times New Roman">3</FONT>層,后來又打算做<FONT 
  face="Times New Roman">10</FONT>層搜索,你就不能認為散列項里的信息是準確的。因此子樹的搜索深度也要記錄。 
  <DT>  在<FONT face="Times New Roman">Alpha-Beta</FONT>搜索中,你很少能得到搜索結點的準確值。<FONT 
  face="Times New Roman">Alpha</FONT>和<FONT 
  face="Times New Roman">Beta</FONT>的存在有助你裁剪掉沒有用的子樹,但是用<FONT 
  face="Times New Roman">Alpha-Beta</FONT>有個小的缺點,你通常不會知道一個結點到底有多壞或者有多好,你只是知道它足夠壞或足夠好,從而不需要浪費更多的時間。 

  <DT>  當然,這就引發了一個問題,散列項里到底要保存什么值,并且當你要獲取它時怎樣來做。答案是儲存一個值,另加一個標志來說明這個值是什么含義。在我上面的例子中,比方說你在評價域中保存了<FONT 
  face="Times New Roman">16</FONT>,并且在標志域保存了“<FONT 
  face="Times New Roman">hashfEXACT</FONT>”,這就意味著該結點的評價是準確值<FONT 
  face="Times New Roman">16</FONT>;如果你在標志域中保存了“<FONT 
  face="Times New Roman">hashfALPHA</FONT>”,那么結點的值最多是<FONT 
  face="Times New Roman">16</FONT>;如果保存了“<FONT 
  face="Times New Roman">hashfBETA</FONT>”,這個值就至少是<FONT 
  face="Times New Roman">16</FONT>。 
  <DT>  當你在搜索中遇到特定情況時,很容易決定評價和標志應該保存哪些內容。然而避免錯誤是非常重要的,散列表是非常容易犯錯誤的,而且一旦犯下錯誤就很難捕捉出來。 

  <DT>  我的散列項的最后一個域,保存著上次搜索到這個局面時的最佳著法。有時我沒有得到最佳著法,比如任何低出邊界的情況<FONT 
  face="Times New Roman">(</FONT>返回一個小于或等于<FONT 
  face="Times New Roman">Alpha</FONT>的值<FONT 
  face="Times New Roman">)</FONT>,而其他情況必定有最佳著法,比如高出邊界的情況<FONT 
  face="Times New Roman">(</FONT>返回一個大于或等于<FONT 
  face="Times New Roman">Beta</FONT>的值<FONT 
  face="Times New Roman">)</FONT>。<FONT 
  color=#0000ff>【譯注:只有葉子結點才沒有最佳著法,即便是</FONT><FONT face="Times New Roman" 
  color=#0000ff>Alpha</FONT><FONT 
  color=#0000ff>結點,所有的著法都是差的,也應該從中找一個最好的著法,它對更深一層的搜索會帶來很大的好處。】</FONT> 
  <DT>  如果找到最佳著法,那么它應該首先被搜索。 
  <DT>  下面是示范程序,是根據<FONT 
  face="Times New Roman">Alpha-Beta</FONT>函數修改的,改動的地方用醒目的字標出: 
  <DT>  
  <DD>int AlphaBeta(int depth, int alpha, int beta) { 
  <DD><FONT color=#ff0000> int hashf = hashfALPHA;</FONT> 
  <DD><FONT color=#ff0000> if ((val = ProbeHash(depth, alpha, beta)) != 
  valUNKNOWN) {</FONT> 
  <DD><FONT color=#ff0000>  // </FONT><FONT 
  color=#0000ff>【valUNKNOWN必須小于-INFINITY或大于INFINITY,否則會跟評價值混淆。】</FONT> 
  <DD>  return val; 
  <DD> } 
  <DD> if (depth == 0) { 
  <DD>  val = Evaluate(); 
  <DD><FONT color=#ff0000>  RecordHash(depth, val, hashfEXACT);</FONT> 
  <DD>  return val; 
  <DD> } 
  <DD> GenerateLegalMoves(); 
  <DD> while (MovesLeft()) { 
  <DD>  MakeNextMove(); 
  <DD>  val = -AlphaBeta(depth - 1, -beta, -alpha); 
  <DD>  UnmakeMove(); 
  <DD>  if (val &gt;= beta) { 
  <DD><FONT color=#ff0000>   RecordHash(depth, beta, hashfBETA);</FONT> 
  <DD>   return beta; 
  <DD>  } 
  <DD>  if (val &gt; alpha) { 
  <DD><FONT color=#ff0000>   hashf = hashfEXACT;</FONT> 
  <DD>   alpha = val; 
  <DD>  } 
  <DD> } 
  <DD><FONT color=#ff0000> RecordHash(depth, alpha, hashf);</FONT> 
  <DD> return alpha; 
  <DD>} 
  <DT>  
  <DT>  以下就是兩個新的函數的代碼: 
  <DD>  
  <DD>int ProbeHash(int depth, int alpha, int beta) { 
  <DD> HASHE *phashe = &amp;hash_table[ZobristKey() % TableSize()]; 
  <DD> if (phashe-&gt;key == ZobristKey()) { 
  <DD>  if (phashe-&gt;depth &gt;= depth) { 
  <DD>   if (phashe-&gt;flags == hashfEXACT) { 
  <DD>    return phashe-&gt;val; 
  <DD>   } 
  <DD>   if ((phashe-&gt;flags == hashfALPHA) &amp;&amp; (phashe-&gt;val &lt;= 
  alpha)) { 
  <DD>    return alpha; 
  <DD>   } 
  <DD>   if ((phashe-&gt;flags == hashfBETA) &amp;&amp; (phashe-&gt;val &gt;= 
  beta)) { 
  <DD>    return beta; 
  <DD>   } 
  <DD>  } 
  <DD>  RememberBestMove(); 
  <DD> } 
  <DD> return valUNKNOWN; 
  <DD>} 
  <DD>  
  <DD>void RecordHash(int depth, int val, int hashf) { 
  <DD> HASHE *phashe = &amp;hash_table[ZobristKey() % TableSize()]; 
  <DD> phashe-&gt;key = ZobristKey(); 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久99久久精品欧美| 久久超碰97人人做人人爱| 久久网这里都是精品| 欧美精品久久久久久久久老牛影院| 成av人片一区二区| 99久久伊人网影院| www.久久精品| 欧美在线高清视频| 欧美日本一区二区三区四区 | 91精品国产高清一区二区三区蜜臀| 9i看片成人免费高清| 色中色一区二区| 在线一区二区三区四区| 欧美精品日韩精品| 精品国产伦一区二区三区观看体验| 日韩亚洲欧美一区| 久久久久一区二区三区四区| 久久久国产综合精品女国产盗摄| 久久久久久久久久久电影| 久久99国产精品成人| 国产成人综合在线| 成熟亚洲日本毛茸茸凸凹| 99精品久久久久久| 欧美精品丝袜久久久中文字幕| 4438亚洲最大| 日本一区二区三区国色天香 | 国产精品99久久久久久似苏梦涵| 粉嫩嫩av羞羞动漫久久久| 一本色道亚洲精品aⅴ| 欧美电影一区二区| 国产欧美日产一区| 亚洲在线观看免费| 国产原创一区二区| 在线看一区二区| 欧美成人一区二区三区| 亚洲欧美一区二区三区极速播放| 性做久久久久久免费观看| 国产精品影音先锋| 欧美日韩亚洲另类| 国产精品国产三级国产aⅴ入口 | 久久99国产精品麻豆| 成人av资源在线| 91精品国产综合久久久久久漫画 | 日本丶国产丶欧美色综合| 日韩欧美久久久| 亚洲综合在线电影| 成人影视亚洲图片在线| 日韩午夜av电影| 亚洲精选免费视频| 高清不卡一区二区在线| 欧美一级免费大片| 一区二区在线看| 成人免费的视频| www激情久久| 日本欧美久久久久免费播放网| 99在线热播精品免费| 精品福利一二区| 奇米一区二区三区| 欧美日韩三级一区| 一区二区三区蜜桃| 99re6这里只有精品视频在线观看| 精品久久久久久最新网址| 日韩中文字幕麻豆| 欧美日韩性生活| 亚洲精品日日夜夜| av亚洲精华国产精华精| 中文字幕免费观看一区| 国产一区二区精品在线观看| 5858s免费视频成人| 午夜精品久久久久久久| 在线观看中文字幕不卡| 亚洲精品伦理在线| 色婷婷精品久久二区二区蜜臀av | 日韩国产高清影视| 欧美一区二区人人喊爽| 日本不卡免费在线视频| 51精品视频一区二区三区| 日韩电影一区二区三区四区| 欧美日韩一区二区在线观看 | 久久99国产精品成人| 日韩欧美在线影院| 精品亚洲porn| 久久久蜜臀国产一区二区| 久久福利资源站| 久久久久久久性| 国产aⅴ精品一区二区三区色成熟| 久久久久久久国产精品影院| 国产成人免费av在线| 国产亚洲欧美色| aaa亚洲精品| 亚洲国产中文字幕在线视频综合 | 久久嫩草精品久久久久| 国产成人免费视频一区| 一区二区三区中文在线| 欧美精品久久99| 激情综合色丁香一区二区| 国产亚洲美州欧州综合国| 91麻豆免费在线观看| 亚洲成人动漫在线观看| 久久综合久久鬼色中文字| caoporn国产一区二区| 亚洲成人一区二区| 久久麻豆一区二区| 色视频一区二区| 日本aⅴ亚洲精品中文乱码| 久久青草欧美一区二区三区| 一本大道久久a久久综合婷婷| 亚洲观看高清完整版在线观看| 日韩欧美激情一区| 色综合色狠狠天天综合色| 日韩av一区二区三区| 欧美韩国一区二区| 69久久99精品久久久久婷婷| 成人永久aaa| 日韩1区2区3区| 亚洲视频综合在线| 欧美成人a视频| 在线免费亚洲电影| 国产精品亚洲综合一区在线观看| 亚洲免费在线观看视频| xfplay精品久久| 欧美日韩国产小视频| www.成人网.com| 精品一区二区三区在线观看| 一区二区免费看| 国产精品视频看| 亚洲精品一区二区三区香蕉| 欧美亚洲国产一区二区三区va| 激情成人综合网| 日本亚洲最大的色成网站www| 国产精品国产三级国产专播品爱网 | 欧美精品黑人性xxxx| 一本到高清视频免费精品| 国产成人精品www牛牛影视| 日韩av一区二区三区四区| 亚洲综合在线免费观看| 国产精品久久久久久亚洲伦| 久久久影院官网| 欧美精品一区二区久久久| 欧美一级欧美一级在线播放| 欧美中文字幕一二三区视频| av中文字幕在线不卡| 粉嫩高潮美女一区二区三区| 国产精品影音先锋| 国产精品影视在线观看| 韩国一区二区三区| 精品亚洲成av人在线观看| 久久国产婷婷国产香蕉| 麻豆国产欧美日韩综合精品二区| 亚洲www啪成人一区二区麻豆 | 亚洲国产精品综合小说图片区| 国产精品久久久久天堂| 国产精品五月天| 国产精品乱人伦一区二区| 国产精品日韩精品欧美在线| 中文成人av在线| 中文在线一区二区| 一色桃子久久精品亚洲| 日韩一区欧美小说| 一区二区三区在线视频观看58| 一区二区欧美国产| 午夜欧美在线一二页| 青草国产精品久久久久久| 久久99精品国产91久久来源 | 中文在线免费一区三区高中清不卡 | 欧美日产在线观看| 91精品国产综合久久精品图片| 在线不卡欧美精品一区二区三区| 91精品国产麻豆国产自产在线| 欧美妇女性影城| 精品国产一区二区三区久久影院| 精品精品国产高清一毛片一天堂| 久久久午夜精品| 亚洲免费观看在线视频| 午夜精品一区在线观看| 久久精品国产99久久6| 国产精品1区2区3区| 91美女视频网站| 91精品国产综合久久精品麻豆| xnxx国产精品| 亚洲精品国产视频| 日韩精品乱码免费| 亚洲靠逼com| 91在线视频网址| 欧美色电影在线| 久久精品日产第一区二区三区高清版 | 欧美成人官网二区| 久久精品在线免费观看| 亚洲精品写真福利| 美女视频黄a大片欧美| 99riav久久精品riav| 欧美一二三区在线观看| 国产精品另类一区| 日本三级韩国三级欧美三级| 成人的网站免费观看| 日韩视频一区在线观看| 亚洲免费伊人电影| 国产精品一二三四区| 欧美一区二区视频在线观看2022| 国产精品免费免费|