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

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

?? group__search.html

?? 黑白棋終局解算程序
?? HTML
?? 第 1 頁 / 共 5 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Othello Solver: Search module</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.5 --><div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div><h1>Search module</h1><table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__search.html#ga0">board_get_final_score</a> (const <a class="el" href="structBoard.html">Board</a> *board)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the final score.  <a href="#ga0"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__search.html#ga1">board_get_final_score_0</a> (const <a class="el" href="structBoard.html">Board</a> *board)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the final score.  <a href="#ga1"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__search.html#ga2">board_get_final_score_1</a> (<a class="el" href="structBoard.html">Board</a> *board)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the final score.  <a href="#ga2"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__search.html#ga3">board_get_final_score_2</a> (<a class="el" href="structBoard.html">Board</a> *board, int alpha, int beta, int passed)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the final score.  <a href="#ga3"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__search.html#ga4">alphabeta_shallow</a> (<a class="el" href="structBoard.html">Board</a> *board, int alpha, int beta, int passed)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Evaluate a position using a shallow Alphabeta.  <a href="#ga4"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__search.html#ga5">PVS_deep</a> (<a class="el" href="structBoard.html">Board</a> *board, <a class="el" href="structHashTable.html">HashTable</a> *hash_table, int alpha, int beta, int passed)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Evaluate a position with a deep Principal Variation Search algorithm.  <a href="#ga5"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__search.html#ga6">PVS_root</a> (<a class="el" href="structBoard.html">Board</a> *board, <a class="el" href="structHashTable.html">HashTable</a> *hash_table, int alpha, int beta, <a class="el" href="structMoveList.html">MoveList</a> *movelist)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Principal Variation Search algorithm at the root of the tree.  <a href="#ga6"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__search.html#ga7">solve</a> (<a class="el" href="structBoard.html">Board</a> *board, <a class="el" href="structHashTable.html">HashTable</a> *hash_table, int mode, <a class="el" href="structMove.html">Move</a> *bestmove)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Search the bestmove of a given board.  <a href="#ga7"></a><br><br></td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2>Functions that evaluate a board with different methods depending on the position in the tree search and/or that finds the best move of a given board.<p>At the end of the game, some trivial functions are used to compute the score. Optimization here is reached by maintaining a disc number record that is updated each time a move is made. At the end of the game, computing the score consists only to a simple substraction. For further optimization, the last move is not made and only the number of flipped discs is evaluated. Special and optimized functions are used when one or two empty squares remain on the board, in order to speed up the search.<p>The search of the best move is driven with the Principal Variation Search algorithm (PVS) [1], an enhanced variation of the alphabeta algorithm. The alphabeta algorithm is known to visit less nodes when the alphabeta window is reduced. PVS takes this property into account. From a set of sibling nodes, the first node is searched using a plain alpha beta window. Then the sibling nodes are only searched with minimal windows (where beta = alpha + 1), just to refute the best (first) score. In rare cases the first move is actually refuted, then the current move is re-searched a second time in order to determinate its score more accurately. On highly ordered tree, very few re-searches will be done. Moreover, thanks to the hash table, a second search is usually faster than a first search. So the seldom and fast re-searches will not impact too much the benefit of using minimal windows. Aspiration windows have been added as another improvement, so that even the first search is done with a reduced window. During the 1990s, several re-re-search algorithm based on null-window alphabeta have been proposed : SSS*ab [2], Dual*ab[2], NegaC*[3], MDT[2], negascout[4]. Some (unpublished) experimental tests I made with them did not show any significant improvement compare to the PVS algorithm with aspiration-windows used here.<p>To be efficient PVS need highly ordered tree. The following ordering have been made :<ul><li>fixed square ordering : square usually leading to a good move are visited first, ie from corner squares to X and C squares.</li><li>most stable ordering : a crude evaluation of stability at the corner (corner, X and C squares) to order the moves.</li><li>fast first ordering : the moves leading to the most reduced mobility for the opponent are played first.</li><li>best move previously found : If the position have been previously searched, the best move that was found is replayed as the first move.</li></ul><p><ol><li>Campbell MS &amp; Marsland TA (1983) A Comparison of Minimax Trees Search Algorithms. Artificial Intelligence, 20, pp. 347-367.</li><li>Plaat A. et al. (1996) Best-First Fixed Depth Minimax Algorithms. Artificial Intelligence, 84, pp. 255-293.</li><li>Weill JC. (1992) Experiments With The NegaC* Search. An alternative for Othello Endgame Search. ICCA journal, 15(1), pp. 3-7.</li><li>Reinsfeld A. (1983) An Improvement Of the Scout Tree-Search Algorithm. ICCA journal, 6(4), pp. 4-14. </li></ol><hr><h2>Function Documentation</h2><a class="anchor" name="ga4" doxytag="solver.c::alphabeta_shallow" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> int alphabeta_shallow </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top"><a class="el" href="structBoard.html">Board</a> *&nbsp;</td>          <td class="mdname" nowrap> <em>board</em>, </td>        </tr>        <tr>          <td></td>          <td></td>          <td class="md" nowrap>int&nbsp;</td>          <td class="mdname" nowrap> <em>alpha</em>, </td>        </tr>        <tr>          <td></td>          <td></td>          <td class="md" nowrap>int&nbsp;</td>          <td class="mdname" nowrap> <em>beta</em>, </td>        </tr>        <tr>          <td></td>          <td></td>          <td class="md" nowrap>int&nbsp;</td>          <td class="mdname" nowrap> <em>passed</em></td>        </tr>        <tr>          <td></td>          <td class="md">)&nbsp;</td>          <td class="md" colspan="2"></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Evaluate a position using a shallow Alphabeta. <p>This function is used when there are few empty squares on the board. Here, optimizations are in favour of speed instead of efficiency. A simple alphabeta is used because of the low branching factor that makes PVS less efficient. <dl compact><dt><b>Parameters:</b></dt><dd>  <table border="0" cellspacing="2" cellpadding="0">    <tr><td valign=top><em>board</em>&nbsp;</td><td>board. </td></tr>    <tr><td valign=top><em>alpha</em>&nbsp;</td><td>lower bound. </td></tr>    <tr><td valign=top><em>beta</em>&nbsp;</td><td>upper bound. </td></tr>    <tr><td valign=top><em>passed</em>&nbsp;</td><td>a flag indicating if previous move was a pass. </td></tr>  </table></dl><dl compact><dt><b>Returns:</b></dt><dd>the final score, as a disc difference. </dd></dl><p><div class="fragment"><pre>01822 {01823     <span class="keyword">const</span> <span class="keywordtype">char</span> p = board-&gt;<a class="code" href="structBoard.html#o1">player</a>;01824     <span class="keyword">const</span> <span class="keywordtype">char</span> o = <a class="code" href="group__mac.html#ga50">OPPONENT</a>(p);01825     <span class="keywordtype">int</span> score, bestscore = -<a class="code" href="group__mac.html#ga21">INF_SCORE</a>;01826     <a class="code" href="structSquareList.html">SquareList</a> *empties;01827     <a class="code" href="structMove.html">Move</a> move;01828 01829 <span class="preprocessor">#if PLAY_ODD_SQUARE_FIRST</span>01830 <span class="preprocessor"></span>    <span class="keywordtype">int</span> parity;01831     <span class="keywordflow">for</span> (parity = 1; parity &gt;= 0; parity--) {01832         <span class="keywordflow">for</span> (empties = board-&gt;<a class="code" href="structBoard.html#o7">empties</a>-&gt;<a class="code" href="structSquareList.html#o2">next</a>; empties-&gt;<a class="code" href="structSquareList.html#o0">position</a> != <a class="code" href="group__mac.html#gga56a56">NOMOVE</a>; empties = empties-&gt;<a class="code" href="structSquareList.html#o2">next</a>) {01833             <span class="keywordflow">if</span> (board-&gt;<a class="code" href="structBoard.html#o6">parity</a>[<a class="code" href="group__mac.html#ga1">QUADRANT_ID</a>[empties-&gt;<a class="code" href="structSquareList.html#o0">position</a>]] == parity01834              &amp;&amp; <a class="code" href="group__board.html#ga3">board_do_flip</a>(board, empties-&gt;<a class="code" href="structSquareList.html#o0">position</a>, &amp;move)) {01835 <span class="preprocessor">#else</span>01836 <span class="preprocessor"></span>        {01837         <span class="keywordflow">for</span> (empties = board-&gt;<a class="code" href="structBoard.html#o7">empties</a>-&gt;<a class="code" href="structSquareList.html#o2">next</a>; empties-&gt;<a class="code" href="structSquareList.html#o0">position</a> != <a class="code" href="group__mac.html#gga56a56">NOMOVE</a>; empties = empties-&gt;<a class="code" href="structSquareList.html#o2">next</a>) {01838             <span class="keywordflow">if</span> (<a class="code" href="group__board.html#ga3">board_do_flip</a>(board, empties-&gt;<a class="code" href="structSquareList.html#o0">position</a>, &amp;move)) {01839 <span class="preprocessor">#endif</span>01840 <span class="preprocessor"></span>                <a class="code" href="group__mac.html#ga38">BOARD_UPDATE_PLAYER</a>(board);01841                 <a class="code" href="group__mac.html#ga40">BOARD_UPDATE_DISCS</a>(board, move.<a class="code" href="structMove.html#o1">n</a>);01842                 <a class="code" href="group__mac.html#ga42">BOARD_UPDATE_PARITY</a>(board, *move.<a class="code" href="structMove.html#o0">position</a>);01843                 <a class="code" href="group__mac.html#ga44">BOARD_UPDATE_EMPTIES</a>(board, empties, *move.<a class="code" href="structMove.html#o0">position</a>);01844                 <span class="keywordflow">if</span> (board-&gt;<a class="code" href="structBoard.html#o3">n_empties</a> == 2) {01845                     score = -<a class="code" href="group__search.html#ga3">board_get_final_score_2</a>(board, -beta, -alpha, 0);01846                 } <span class="keywordflow">else</span> {01847                     score = -<a class="code" href="group__search.html#ga4">alphabeta_shallow</a>(board, -beta, -alpha, 0);01848                 }01849                 <a class="code" href="group__mac.html#ga37">BOARD_RESTORE_SQUARE</a>(board, &amp;move);01850                 <a class="code" href="group__mac.html#ga39">BOARD_RESTORE_PLAYER</a>(board);01851                 <a class="code" href="group__mac.html#ga41">BOARD_RESTORE_DISCS</a>(board, move.<a class="code" href="structMove.html#o1">n</a>);01852                 <a class="code" href="group__mac.html#ga43">BOARD_RESTORE_PARITY</a>(board, *move.<a class="code" href="structMove.html#o0">position</a>);01853                 <a class="code" href="group__mac.html#ga45">BOARD_RESTORE_EMPTIES</a>(board, empties, *move.<a class="code" href="structMove.html#o0">position</a>);01854                 <span class="keywordflow">if</span> (score &gt; bestscore) {01855                     bestscore = score;01856                     <span class="keywordflow">if</span> (bestscore &gt; alpha) {01857                         alpha = bestscore;01858                         <span class="keywordflow">if</span> (alpha &gt;= beta) <span class="keywordflow">return</span> bestscore;01859                     }01860                 }01861             }01862         }01863     }01864 01865     <span class="comment">/* no move */</span>01866     <span class="keywordflow">if</span> (bestscore == -<a class="code" href="group__mac.html#ga21">INF_SCORE</a>) {01867         <span class="keywordflow">if</span> (passed) { <span class="comment">/* game over */</span>01868             <a class="code" href="group__mac.html#ga28">BOARD_CORRECT_TERMINAL_NODES</a>();01869             bestscore = <a class="code" href="group__search.html#ga0">board_get_final_score</a>(board);01870         } <span class="keywordflow">else</span> { <span class="comment">/* pass */</span>01871             <a class="code" href="group__mac.html#ga38">BOARD_UPDATE_PLAYER</a>(board);01872             <a class="code" href="group__mac.html#ga26">BOARD_UPDATE_INTERNAL_NODES</a>();01873             bestscore = -<a class="code" href="group__search.html#ga4">alphabeta_shallow</a>(board, -beta, -alpha, 1);01874             <a class="code" href="group__mac.html#ga39">BOARD_RESTORE_PLAYER</a>(board);01875         }01876     }01877 01878     <span class="keywordflow">return</span> bestscore;01879 }</pre></div>    </td>  </tr></table><a class="anchor" name="ga0" doxytag="solver.c::board_get_final_score" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> int board_get_final_score </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">const <a class="el" href="structBoard.html">Board</a> *&nbsp;</td>          <td class="mdname1" valign="top" nowrap> <em>board</em>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区免费在线观看| 精品欧美一区二区在线观看| 福利91精品一区二区三区| 亚洲第四色夜色| 五月天中文字幕一区二区| 亚洲成人先锋电影| 亚洲成av人片在线观看| 日韩高清国产一区在线| 青青国产91久久久久久| 美女视频一区二区三区| 国产一区二区三区不卡在线观看| 国产在线视频一区二区| 成人美女在线观看| 色综合天天综合网天天看片| 欧美日韩亚洲综合一区二区三区| 欧美精品三级在线观看| 欧美一卡2卡3卡4卡| 久久精品在线免费观看| 中文字幕一区二区三区在线播放| 1区2区3区精品视频| 亚洲成人av电影在线| 美女视频免费一区| www.爱久久.com| 欧美日韩一区三区四区| 精品国产精品一区二区夜夜嗨| 久久精品欧美一区二区三区不卡 | 777亚洲妇女| 精品国产一区二区三区不卡| 国产精品福利一区| 人禽交欧美网站| 成人av电影在线| 91精品综合久久久久久| 国产日韩欧美不卡| 午夜精品在线看| 国产.欧美.日韩| 777午夜精品视频在线播放| 国产午夜一区二区三区| 亚洲chinese男男1069| 国产成人免费高清| 欧美日本一区二区| 亚洲欧美自拍偷拍色图| 伦理电影国产精品| 在线免费一区三区| 中文字幕av在线一区二区三区| 天天综合网天天综合色| jizzjizzjizz欧美| 欧美成人伊人久久综合网| 亚洲欧美日韩在线播放| 国产精品456| 91精品午夜视频| 亚洲狼人国产精品| 成人国产在线观看| 国产日韩欧美亚洲| 麻豆精品国产传媒mv男同| 91国偷自产一区二区开放时间| 欧美极品美女视频| 国产剧情一区在线| 欧美成人一区二区三区片免费| 亚洲成人午夜电影| 91国产免费看| 亚洲欧美一区二区久久| 丁香天五香天堂综合| 久久久久国产免费免费| 蜜臀av一区二区在线免费观看| 欧美日韩一区精品| 亚洲午夜私人影院| 91国偷自产一区二区三区观看| 亚洲欧美综合网| 91麻豆免费看片| 中文字幕在线不卡一区| 99re这里只有精品视频首页| 中文子幕无线码一区tr| 成人污视频在线观看| 中文成人综合网| 成人av网址在线观看| 国产精品对白交换视频| 97久久人人超碰| 亚洲综合清纯丝袜自拍| 欧美日韩国产一二三| 日本不卡视频在线| 日韩精品在线看片z| 国产一区二区三区久久久| 国产校园另类小说区| 不卡的av在线播放| 亚洲综合一区二区三区| 欧美日韩极品在线观看一区| 欧美a级理论片| 2欧美一区二区三区在线观看视频| 久久精品99国产精品| 久久久精品tv| 色爱区综合激月婷婷| 天堂蜜桃91精品| 久久亚区不卡日本| 99在线视频精品| 婷婷成人激情在线网| 欧美一级在线免费| 成人国产精品免费| 亚洲成人午夜影院| 久久午夜电影网| 色综合色综合色综合色综合色综合 | 国产高清在线精品| 一区二区在线观看免费| 日韩一区二区三区四区| 国产高清成人在线| 亚洲无人区一区| 精品国产一区二区在线观看| 成人av在线一区二区| 日本午夜精品视频在线观看| 中文字幕国产精品一区二区| 欧美午夜一区二区三区| 国产精品一区二区三区乱码| 亚洲精品乱码久久久久久| 欧美一级搡bbbb搡bbbb| 色呦呦国产精品| 国内外成人在线视频| 一区二区三区国产| 久久精品在线免费观看| 777a∨成人精品桃花网| k8久久久一区二区三区| 另类小说视频一区二区| 亚洲精品中文字幕在线观看| 久久亚洲私人国产精品va媚药| 欧美在线观看一区二区| 国产69精品久久久久毛片| 无码av中文一区二区三区桃花岛| 国产精品麻豆欧美日韩ww| 日韩精品中文字幕一区| 欧美乱妇一区二区三区不卡视频| 不卡一区二区在线| 激情五月婷婷综合网| 亚洲午夜久久久久中文字幕久| 日本一二三不卡| 日韩欧美国产精品| 欧美日韩不卡视频| 色又黄又爽网站www久久| 成人av在线网| 夫妻av一区二区| 国产成人av一区| 国产一区二区三区国产| 伦理电影国产精品| 美女视频黄 久久| 日本不卡一区二区三区| 亚洲成av人综合在线观看| 一级中文字幕一区二区| 亚洲男帅同性gay1069| 日韩一区在线播放| 中文乱码免费一区二区| 亚洲国产激情av| 欧美激情在线免费观看| 欧美日韩免费一区二区三区 | 日韩欧美激情一区| 色综合视频一区二区三区高清| www.日韩大片| 色呦呦日韩精品| 欧洲国产伦久久久久久久| 99re在线精品| 欧美日韩另类一区| 99久久精品国产毛片| 琪琪久久久久日韩精品| 日韩精品91亚洲二区在线观看| 国产精品一二二区| 欧美精品三级日韩久久| 亚洲欧美一区二区在线观看| 精品亚洲免费视频| 在线视频你懂得一区| 国产亚洲欧美日韩日本| 亚洲第一福利一区| eeuss鲁片一区二区三区在线观看| 91精品国产丝袜白色高跟鞋| 国产精品不卡视频| 国产一区二三区| 91精品国产乱码久久蜜臀| 最新热久久免费视频| 国产资源在线一区| 欧美二区三区的天堂| 亚洲三级电影网站| 国产成人综合在线观看| 日韩欧美成人一区| 亚洲bt欧美bt精品| 日本丰满少妇一区二区三区| 中文字幕不卡在线观看| 国产一区二区h| 欧美电影免费观看完整版| 亚洲第一电影网| 欧美人狂配大交3d怪物一区| 亚洲三级在线看| av一本久道久久综合久久鬼色| 久久久久国产精品厨房| 韩国成人在线视频| 欧美精品一区二区三区蜜桃视频| 日韩中文字幕一区二区三区| 欧美天天综合网| 亚洲国产日韩a在线播放| 一本久久精品一区二区| 亚洲同性同志一二三专区| jizz一区二区| 亚洲欧美另类在线| 欧美性生活久久| 亚洲图片有声小说| 在线播放中文一区|