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

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

?? 解剖大象的眼睛——中國象棋程序設計探索(四):啟發算法.htm

?? 象棋程序設計全資料集(介紹編寫象棋程序的方法思路)
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
  face="Times New Roman">)</FONT>記錄到<FONT 
  face="Times New Roman">KillerMoves[Ply]</FONT>。由此產生的效果,就是當親兄弟結點沒有殺手著法時,會找到堂兄弟結點的殺手著法。 

  <DT>  大多數程序會為每層分配<FONT face="Times New Roman">2</FONT>個殺手著法,并采用先進先出的方式管理,即: 
  <DD>  
  <DD>if (CutMove != KillerMoves[Ply][0]) { 
  <DD> KillerMoves[Ply][1] = KillerMoves[Ply][0]; 
  <DD> KillerMoves[Ply][0] = CutMove; 
  <DD>} 
  <DT>  
  <DT>  而搜索結點時,先搜索最近保存的殺手著法<FONT 
  face="Times New Roman">(KillerMoves[Ply][0])</FONT>,再搜索比較舊的那個<FONT 
  face="Times New Roman">(KillerMoves[Ply][1])</FONT>。 
  <DT>  
  <DT><FONT face=Arial size=4><STRONG>4.5 </STRONG></FONT><FONT face=楷體_GB2312 
  size=4><STRONG>歷史表啟發</STRONG></FONT> 
  <DT>  
  <DT>  “歷史表啟發”<FONT face="Times New Roman">(History 
  Heuristic)</FONT>是殺手著法啟發的擴展,歷史表記錄的是整個搜索樹中著法的好壞。歷史表的思想是:搜索樹中某個結點上的一個好的著法,對于其他結點可能也是好的。沒有什么非常可靠的理由來支持這個思想,但根據歷史表來排序著法,總比不排序要好得多,而且實踐證明這是一種效果非常好的啟發算法,幾乎每個程序都用到。 

  <DT>  歷史表的處理方法,在各個程序中都有所差異,主要反映在以下幾個方面: 
  <DT>  <FONT face="Times New Roman">(1) 
  </FONT>產生全部著法時,是否完全根據歷史表來排序。很多程序先產生吃子的著法,用<FONT 
  face="Times New Roman">MVV/LVA</FONT>來排序,然后產生不吃子的著法,根據歷史表來排序。目前<FONT 
  face="Times New Roman">ElephantEye</FONT>在生成不吃子的著法后就按照歷史表來排序,被排序的著法包括吃子啟發沒有搜索到的吃子著法和不吃子的著法。 

  <DT>  <FONT face="Times New Roman">(2) </FONT>找到好的著法時,在歷史表中增加多少值。<FONT 
  face="Times New Roman">ElephantEye</FONT>采用通常的<FONT 
  face="Times New Roman"><EM>n</EM><SUP>2</SUP>(<EM>n</EM></FONT>為當前結點需要搜索的深度<FONT 
  face="Times New Roman">)</FONT>的策略,而也有的程序設計師偏愛傳統的<FONT 
  face="Times New Roman">2<SUP><EM>n</EM></SUP></FONT>。如果不確定哪個更好,那么不妨試試斐波那契數列<FONT 
  face="Times New Roman">(</FONT>即<FONT face="Times New Roman">1</FONT>、<FONT 
  face="Times New Roman">2</FONT>、<FONT face="Times New Roman">3</FONT>、<FONT 
  face="Times New Roman">5</FONT>、<FONT face="Times New Roman">8</FONT>……<FONT 
  face="Times New Roman">)</FONT>。 
  <DT>  <FONT face="Times New Roman">(3) </FONT>什么樣的著法算是好的著法。<FONT 
  face="Times New Roman">ElephantEye</FONT>認為產生<FONT 
  face="Times New Roman">Beta</FONT>截斷的著法和<FONT 
  face="Times New Roman">PV</FONT>結點中最好的著法都是好的著法<FONT 
  face="Times New Roman">(</FONT>殺手著法也是這樣認定的<FONT 
  face="Times New Roman">)</FONT>,而且這兩類著法在歷史表中增加同樣多的值。也有的程序則為PV結點的最好著法增加更多的值。 
  <DT>  <FONT face="Times New Roman">(4) </FONT>歷史表應該用什么樣的結構。<FONT 
  face="Times New Roman">ElephantEye</FONT>只設立一個<FONT 
  face="Times New Roman">[256][256]</FONT>的數組,紅方和黑方的著法都記錄在這個數組中,更多的程序則是紅方著法和黑方著法分別記錄的,例如國際象棋程序<FONT 
  face="Times New Roman">Fruit</FONT>用的歷史表是<FONT 
  face="Times New Roman">[12][64]</FONT>的,前一個指標代表兵種,后一個指標代表目標格。 
  <DT>  
  <DT>  盡管歷史表處理起來非常簡單,筆者也不打算列出操作歷史表的代碼,但是歷史表中出現的問題遠不止以上這幾點。 
  <DT>  很重要的一點是:歷史表受置換表和迭代加深的影響很大。根結點做淺一層搜索時,歷史表中已經記錄了豐富的信息,因此深一層的搜索就可以充分利用這些信息來做更好的啟發。反過來,如果根結點不做迭代加深,直接開始深層次的搜索,那么歷史表啟發的效率就會大幅度下降,因此這就引發出清空歷史表的問題。 

  <DT>  思考完一個著法時是否清空置換表,各個程序有不同的做法。<FONT 
  face="Times New Roman">ElephantEye</FONT>是徹底清空置換表的,因此下一次搜索時根結點總是迭代加深的。而是否清空歷史表,則是更復雜的問題,它與是否清空置換表有關,<FONT 
  face="Times New Roman">ElephantEye</FONT>在清空置換表的同時也清空歷史表。 
  <DT>  如果每次搜索時不清空置換表,那么根結點淺層分值在置換表中已經找到,程序就直接做深層次的搜索,如果歷史表是空的,那么歷史表的啟發效率就非常低了,因此不清空置換表而去清空歷史表是不明智的做法,這樣會導致“歷史表信息丟失”。那么就不對歷史表作處理嗎?歷史表中的數據會日積月累,而大部分數據是早期搜索時留下的,有可能開局時的歷史著法信息被保留到了殘局,這樣當然更會影響歷史表啟發,導致“歷史表信息污染”。 

  <DT>  筆者提出一個“歷史表衰減”的方法,程序每次思考一個新的局面時,如果不清空置換表,那么就對歷史表中的每項數據做一個衰減,可以嘗試衰減為原來的一半或<FONT 
  face="Times New Roman">1/4</FONT>,在“歷史表信息丟失”和“歷史表信息污染”之間作一個權衡。 
  <DT>  
  <DT><FONT face=Arial size=4><STRONG>4.6 </STRONG></FONT><FONT face=楷體_GB2312 
  size=4><STRONG>總體著法順序</STRONG></FONT> 
  <DT>  
  <DT>  以上我們主要介紹了四種啟發算法,即吃子啟發、置換表啟發、殺手著法啟發和歷史表啟發。現在我們要考慮如何把這四種算法結合起來。<FONT 
  face="Times New Roman">ElephantEye</FONT>和大多數程序一樣,采用了以下的順序: 
  <DT>  <FONT face="Times New Roman">(1) </FONT>置換表啟發; 
  <DT>  <FONT face="Times New Roman">(2) </FONT>吃子啟發<FONT 
  face="Times New Roman">(</FONT>之前生成所有吃子著法<FONT 
  face="Times New Roman">)</FONT>; 
  <DT>  <FONT face="Times New Roman">(3) </FONT>殺手著法啟發; 
  <DT>  <FONT face="Times New Roman">(4) </FONT>歷史表啟發<FONT 
  face="Times New Roman">(</FONT>之前生成所有不吃子著法<FONT 
  face="Times New Roman">)</FONT>; 
  <DT>  這個順序用一個<FONT face="Times New Roman">MoveSortStruct</FONT>的結構來維護<FONT 
  face="Times New Roman">(</FONT>參閱<FONT 
  face="Times New Roman">&lt;movesort.cpp&gt;)</FONT>,使得搜索例程變得格外簡單: 
  <DD>  
  <DD>Move = MoveSort.Next(); 
  <DD>while (Move != NullMove) { 
  <DD> MakeMove(Move); 
  <DD> …… 
  <DD> Move = MoveSort.Next(); 
  <DD>} 
  <DT>  
  <DT>  我們感興趣的是<FONT face="Times New Roman">Next()</FONT>這個例程,它要求按照以上<FONT 
  face="Times New Roman">4</FONT>個不同的啟發階段來給出著法,但當某個階段沒有著法時,不跳出例程而直接進入下一個階段<FONT 
  face="Times New Roman">(</FONT>最后一個階段則直接給出<FONT 
  face="Times New Roman">NullMove)</FONT>。<FONT 
  face="Times New Roman">ElephantEye</FONT>和<FONT 
  face="Times New Roman">Crafty</FONT>、<FONT 
  face="Times New Roman">Fruit</FONT>等程序一樣,用了不帶<FONT 
  face="Times New Roman">break</FONT>的<FONT 
  face="Times New Roman">switch...case</FONT>這樣一個炫技。<FONT 
  face="Times New Roman">MoveSortStruct</FONT>中有一個稱為<FONT 
  face="Times New Roman">Phase(</FONT>階段<FONT 
  face="Times New Roman">)</FONT>的變量,記錄了當前的啟發階段,除了以上<FONT 
  face="Times New Roman">4</FONT>個階段外,還包括兩個: 
  <DT>  <FONT face="Times New Roman">(1) </FONT>在吃子啟發前,是生成吃子著法的階段; 
  <DT>  <FONT face="Times New Roman">(2) </FONT>在歷史表啟發前,是生成不吃子著法的階段。 
  <DD>  
  <DD>MoveStruct MoveSortStruct::Next(void) { 
  <DD> switch (Phase) { 
  <DD> case HASH_MOVE: 
  <DD>  Phase = GEN_CAP_MOVES; 
  <DD>  if (HashMove != NullMove) { 
  <DD>   return HashMove; 
  <DD>  } 
  <DD>  // 直接進入下一個"case",下同。 
  <DD> case GEN_CAP_MOVES: 
  <DD>  Phase = CAP_MOVES; 
  <DD>  MoveNum = GenCapMoves(MoveList); 
  <DD> case CAP_MOVES: 
  <DD>  i ++; 
  <DD>  if (i &lt; MoveNum) { 
  <DD>   return MoveList[i]; 
  <DD>  } 
  <DD> case KILLER_MOVE: 
  <DD>  Phase = GEN_NONCAP_MOVES; 
  <DD>  if (KillerMove != NullMove &amp;&amp; LegalMove(KillerMove)) { 
  <DD>   return KillerMove; 
  <DD>  } 
  <DD>  …… 
  <DD> } 
  <DD>} </DD></DL>
<DIR>
<LI>上一篇 <A 
href="http://www.elephantbase.net/computer/eleeye_search.htm">中國象棋程序設計探索<FONT 
face="Times New Roman">(</FONT>三<FONT face="Times New Roman">)</FONT>:搜索和置換表</A> 

<LI>下一篇 <A 
href="http://www.elephantbase.net/computer/eleeye_horizon.htm">中國象棋程序設計探索<FONT 
face="Times New Roman">(</FONT>五<FONT 
face="Times New Roman">)</FONT>:克服水平線效應</A> 
<LI>返 回 <A href="http://www.elephantbase.net/computer.htm">象棋百科全書——電腦象棋</A> 
</LI></DIR>
<DIV align=center>
<CENTER>
<TABLE border=0>
  <TBODY>
  <TR>
    <TD>
      <P align=center><A href="http://www.elephantbase.net/" target=_blank><IMG 
      height=31 src="解剖大象的眼睛——中國象棋程序設計探索(四):啟發算法_files/elephantbase.gif" 
      width=88 border=0></A></P></TD></TR>
  <TR>
    <TD><A href="http://www.elephantbase.net/" target=_blank><FONT face=Arial 
      size=2><STRONG>www.elephantbase.net</STRONG></FONT></A></TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
毛片av一区二区| 日韩午夜激情免费电影| 日韩欧美国产一二三区| 最近日韩中文字幕| 国产一级精品在线| 91精品国产高清一区二区三区| 国产精品私人影院| 久久精品国产色蜜蜜麻豆| 欧美日韩综合在线| 亚洲男同1069视频| 不卡的av在线播放| 国产亚洲午夜高清国产拍精品 | 欧美性大战久久久| 亚洲国产精华液网站w| 久久成人麻豆午夜电影| 在线播放91灌醉迷j高跟美女| 亚洲精选一二三| 99这里只有精品| 中文无字幕一区二区三区 | 欧美成人福利视频| 亚洲成a人v欧美综合天堂下载| av亚洲精华国产精华精华| 久久久精品人体av艺术| 国产麻豆精品视频| 久久久精品国产免大香伊| 久久国产欧美日韩精品| 日韩欧美精品三级| 国内精品视频666| 精品奇米国产一区二区三区| 免费视频最近日韩| 欧美成人a视频| 国产精品综合视频| 国产亚洲1区2区3区| 国产成人免费9x9x人网站视频| 久久久精品国产免费观看同学| 国内国产精品久久| 中文字幕第一区综合| 成人国产精品免费观看动漫| 欧美国产精品一区二区三区| 99精品国产视频| 亚洲尤物视频在线| 日韩视频一区二区| 国产成人丝袜美腿| 亚洲欧美另类小说视频| 欧美色图片你懂的| 毛片av一区二区| 国产欧美一二三区| 色婷婷一区二区| 蜜桃精品在线观看| 日本一区二区综合亚洲| 92精品国产成人观看免费| 亚洲国产成人精品视频| 精品久久久久一区| 粉嫩aⅴ一区二区三区四区五区 | 久久综合久久综合久久综合| 国产v日产∨综合v精品视频| 亚洲精品美国一| 欧美巨大另类极品videosbest| 日日摸夜夜添夜夜添亚洲女人| 欧美成人vr18sexvr| 99久久综合99久久综合网站| 亚洲成人免费视| www国产成人| 欧美这里有精品| 极品美女销魂一区二区三区免费| 中文字幕在线不卡视频| 7777精品久久久大香线蕉| 国产成人av电影在线观看| 亚洲福利一二三区| 国产欧美一区二区精品忘忧草 | 色一区在线观看| 免费久久99精品国产| 国产精品高潮呻吟久久| 欧美一区二区不卡视频| 93久久精品日日躁夜夜躁欧美| 蜜桃久久久久久久| 一区二区三区在线视频免费| 久久久久久97三级| 91精品啪在线观看国产60岁| 成人黄色av电影| 久久成人免费网| 午夜精品一区二区三区电影天堂 | 首页国产欧美日韩丝袜| 一区在线中文字幕| 精品久久国产老人久久综合| 色八戒一区二区三区| 国产成人在线视频网站| 免费在线视频一区| 夜夜精品浪潮av一区二区三区| 久久久不卡网国产精品二区| 制服丝袜成人动漫| 欧美色精品天天在线观看视频| 成人污污视频在线观看| 国产一区二区三区综合| 日韩精品免费专区| 亚洲国产视频一区| 亚洲视频在线一区观看| 亚洲国产高清在线观看视频| 日韩一区二区视频在线观看| 精品视频免费在线| 色婷婷亚洲婷婷| 91色|porny| 一本色道久久综合狠狠躁的推荐 | 国产福利不卡视频| 国内久久婷婷综合| 精品一区二区三区在线播放视频| 午夜精品福利视频网站| 日韩精品免费专区| 爽好久久久欧美精品| 日本成人中文字幕| 日日摸夜夜添夜夜添亚洲女人| 日韩精品亚洲专区| 视频一区在线视频| 奇米色一区二区| 国产真实乱对白精彩久久| 久久精品噜噜噜成人88aⅴ| 日韩国产精品91| 久久精品国产精品亚洲精品 | 91视频国产观看| 91老司机福利 在线| 91视频91自| 欧洲av在线精品| 欧美一区二区视频网站| 日韩欧美国产午夜精品| 久久久精品国产免费观看同学| 久久久www成人免费毛片麻豆| 欧美国产日韩在线观看| 国产精品你懂的| 一区二区激情小说| 午夜精品福利一区二区三区av| 免费成人在线观看视频| 国产一二精品视频| 91在线视频官网| 在线免费亚洲电影| 日韩欧美久久久| 国产精品女上位| 亚洲成人激情av| 国产真实乱对白精彩久久| 99v久久综合狠狠综合久久| 欧美日韩在线一区二区| 精品国产乱码久久久久久夜甘婷婷| 精品人伦一区二区色婷婷| 国产精品国产三级国产aⅴ中文| 一级特黄大欧美久久久| 久久99精品国产麻豆不卡| 丁香婷婷综合激情五月色| 欧美日韩免费一区二区三区视频 | 欧美日韩高清在线| 精品91自产拍在线观看一区| 国产精品国产三级国产有无不卡 | 蜜臀av一区二区在线观看| 成人晚上爱看视频| 欧美情侣在线播放| 国产视频一区在线播放| 午夜一区二区三区在线观看| 国产一区二区三区日韩| 欧美在线短视频| 欧美国产激情一区二区三区蜜月| 午夜久久电影网| 96av麻豆蜜桃一区二区| 精品国产免费久久 | 精品制服美女久久| 色婷婷亚洲综合| 国产三级精品三级| 五月天激情综合网| 99精品热视频| 国产清纯在线一区二区www| 午夜影视日本亚洲欧洲精品| 不卡一区在线观看| 久久影视一区二区| 日韩av电影一区| 欧洲一区二区三区在线| 中文成人av在线| 国产美女精品在线| 欧美一级久久久| 亚洲高清免费视频| 色婷婷精品久久二区二区蜜臂av | 久久人人超碰精品| 日韩成人精品视频| 欧美日韩电影在线| 亚洲精品国产一区二区三区四区在线 | 亚洲va中文字幕| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 26uuu成人网一区二区三区| 日本成人在线看| 在线播放中文一区| 亚洲成人资源在线| 欧美色窝79yyyycom| 亚洲综合成人在线视频| hitomi一区二区三区精品| 国产精品欧美一区喷水| 国产精品888| 国产欧美精品一区aⅴ影院| 久久成人18免费观看| 欧美成人a视频| 国产一区中文字幕| 国产日韩欧美电影| 成人在线一区二区三区| 中文字幕中文乱码欧美一区二区| 福利一区二区在线|