そこで、Zebraの作者であるGunnarさんのホームページで紹介されている、The FFO endgame test suiteを用いてbenchmarkを行うことにする。
終盤だけしかないという欠点はあるが、まだ序盤や終盤で変化するようなプログラムは作成していないので現在のところ問題ない。
ここまでの手法のbenchmarkをとってみると次のようになる。
まず、negamaxにくらべてnegaalphaが、ずっと効率が良いことが確認できる。
negaalphaでは、odd depthよりも、その次のeven depthの方がノード数が少ないときがある。internal node数や実行時間ではそのような逆転は起きていない。実行時間はマシン環境によって変化するが、最も重要な指標である。leaf node数よりも、internal node数で比較した方がよいという意見もある[?]。
> xtabs(node ~ name + test, data=data) test name end40.pos end41.pos end42.pos end43.pos end44.pos negamax2 30 126 68 84 106 negamax3 305 1193 586 578 1061 negamax4 1325 13165 4517 7297 10652 negamax5 12843 122563 37324 55434 103153 negamax6 63589 1211104 282095 625740 987883 negaalpha2 13 30 30 49 37 negaalpha3 117 289 223 77 208 negaalpha4 139 525 338 673 575 negaalpha5 866 4332 3747 1388 4023 negaalpha6 1278 6865 4063 10677 6969 test name end45.pos end46.pos end47.pos end48.pos end49.pos negamax2 88 111 86 98 116 negamax3 1112 1143 736 1127 1092 negamax4 7913 11557 8327 8756 13930 negamax5 92259 107326 70239 92677 142210 negamax6 707766 1093863 791984 727446 1635128 negaalpha2 34 25 47 29 34 negaalpha3 370 335 77 313 273 negaalpha4 329 594 788 470 494 negaalpha5 5777 10135 843 6681 2408 negaalpha6 2723 11688 14354 9337 6707 test name end50.pos end51.pos end52.pos end53.pos end54.pos negamax2 131 94 111 143 63 negamax3 1942 959 1089 1573 707 negamax4 18665 9470 10863 20035 4796 negamax5 260643 96971 104217 219668 54825 negamax6 2491678 962986 978789 2691658 415888 negaalpha2 33 59 63 43 23 negaalpha3 452 183 204 350 239 negaalpha4 626 1160 992 1214 586 negaalpha5 15963 2032 1946 11389 2323 negaalpha6 10816 31843 6498 29471 14222 test name end55.pos end56.pos end57.pos end58.pos end59.pos negamax2 143 134 85 193 66 negamax3 1990 1319 758 2448 760 negamax4 21662 18921 7733 35050 5828 negamax5 283164 191384 74328 442133 65369 negamax6 3175727 2631485 745547 6005655 562206 negaalpha2 49 56 38 55 18 negaalpha3 322 148 289 828 240 negaalpha4 841 1532 458 904 210 negaalpha5 5657 2013 5651 15508 3747 negaalpha6 20688 26438 4485 15619 2592 > xtabs(inode ~ name + test, data=data) test name end40.pos end41.pos end42.pos end43.pos end44.pos negamax2 11 11 10 7 11 negamax3 41 137 78 91 117 negamax4 346 1330 664 669 1178 negamax5 1671 14495 5181 7966 11830 negamax6 14514 137058 42505 63400 114983 negaalpha2 11 11 10 7 11 negaalpha3 23 71 49 36 50 negaalpha4 132 190 189 141 252 negaalpha5 223 1358 979 729 1181 negaalpha6 1302 2769 2491 2416 3143 test name end45.pos end46.pos end47.pos end48.pos end49.pos negamax2 15 13 9 14 9 negamax3 103 124 95 112 125 negamax4 1215 1267 831 1239 1217 negamax5 9128 12824 9158 9995 15147 negamax6 101387 120150 79397 102672 157357 negaalpha2 15 13 9 14 9 negaalpha3 56 64 23 51 67 negaalpha4 251 287 220 256 150 negaalpha5 1126 2781 241 1412 752 negaalpha6 2685 5602 4855 5112 2270 test name end50.pos end51.pos end52.pos end53.pos end54.pos negamax2 16 11 11 12 11 negamax3 147 105 122 155 74 negamax4 2089 1064 1211 1728 781 negamax5 20754 10534 12074 21763 5577 negamax6 281397 107505 116291 241431 60402 negaalpha2 16 11 11 12 11 negaalpha3 58 41 50 73 44 negaalpha4 357 305 273 358 251 negaalpha5 2672 607 686 2355 509 negaalpha6 6816 8116 2085 8971 5509 test name end55.pos end56.pos end57.pos end58.pos end59.pos negamax2 15 10 9 14 12 negamax3 158 144 94 207 78 negamax4 2148 1463 852 2655 838 negamax5 23810 20384 8585 37705 6666 negamax6 306974 211768 82913 479838 72035 negaalpha2 15 10 9 14 12 negaalpha3 55 45 52 143 40 negaalpha4 350 291 167 290 192 negaalpha5 1157 818 1505 3752 735 negaalpha6 8782 5578 1911 5514 2643 > xtabs(time ~ name + test, data=data) test name end40.pos end41.pos end42.pos end43.pos end44.pos negamax2 162 212 183 190 221 negamax3 386 671 520 545 625 negamax4 794 1755 1229 1400 1773 negamax5 2035 11600 4724 6012 8419 negamax6 6909 79483 21643 40787 73706 negaalpha2 148 166 166 172 187 negaalpha3 278 446 405 326 382 negaalpha4 467 600 569 614 689 negaalpha5 689 1651 1463 1106 1514 negaalpha6 1201 2089 1835 2181 2389 test name end45.pos end46.pos end47.pos end48.pos end49.pos negamax2 231 238 204 217 217 negamax3 613 641 581 649 672 negamax4 1648 1846 1521 1605 1851 negamax5 7495 8294 6351 9081 11898 negamax6 58783 84254 57276 56096 103962 negaalpha2 202 200 186 188 175 negaalpha3 437 436 261 433 442 negaalpha4 649 741 715 662 580 negaalpha5 1544 2261 778 1909 1202 negaalpha6 1950 3732 3420 2964 2204 test name end50.pos end51.pos end52.pos end53.pos end54.pos negamax2 237 226 222 252 201 negamax3 771 641 668 741 538 negamax4 2292 1779 1805 2269 1359 negamax5 18820 7853 10665 16513 5537 negamax6 157724 75202 66660 171968 37524 negaalpha2 197 208 200 208 177 negaalpha3 469 356 404 485 388 negaalpha4 762 858 751 862 704 negaalpha5 2648 1105 1207 2321 1065 negaalpha6 3720 5664 1937 5738 3626 test name end55.pos end56.pos end57.pos end58.pos end59.pos negamax2 266 229 200 285 205 negamax3 807 697 570 896 616 negamax4 2642 2161 1473 3234 1425 negamax5 19360 16159 7499 32512 6098 negamax6 227045 167510 48530 366104 46530 negaalpha2 225 203 187 239 174 negaalpha3 434 370 428 669 379 negaalpha4 837 857 592 811 602 negaalpha5 1641 1281 1814 3272 1327 negaalpha6 5587 4255 1793 4273 2051
nagealphaとkiller heuristic, history heuristic, transposition tableの比較は次の通り。
多くの盤面でkiller heuristicとtransposition tableの組み合わせが最もよい成績を収めている。
> xtabs(node ~ name + test, data=data) test name end40.pos end41.pos end42.pos end43.pos end44.pos negaalpha6 1278 6865 4063 10677 6969 killer6_32 1259 4463 2894 3733 4865 history6 1445 6983 3980 3720 7391 transposition6 1205 5159 3818 9939 6347 transposition_k6 1220 3338 2695 3327 4397 transposition_h6 1329 5744 3669 3511 6947 test name end45.pos end46.pos end47.pos end48.pos end49.pos negaalpha6 2723 11688 14354 9337 6707 killer6_32 2491 6313 8238 6105 6608 history6 2902 6068 16889 6299 9535 transposition6 2120 10377 12686 8672 5633 transposition_k6 2035 5122 7778 5599 5928 transposition_h6 2179 5533 14725 6113 8294 test name end50.pos end51.pos end52.pos end53.pos end54.pos negaalpha6 10816 31843 6498 29471 14222 killer6_32 8119 11697 3956 13370 4067 history6 6781 19981 8367 13158 4789 transposition6 9222 29411 5734 25134 12567 transposition_k6 6826 11206 3598 11054 3530 transposition_h6 5375 20090 8070 11771 4416 test name end55.pos end56.pos end57.pos end58.pos end59.pos negaalpha6 20688 26438 4485 15619 2592 killer6_32 13649 6337 4357 12740 2370 history6 30422 7353 5982 12378 2264 transposition6 19080 22952 4152 14000 2248 transposition_k6 12423 5298 4193 10983 2127 transposition_h6 27967 6018 5387 10597 2062 > xtabs(inode ~ name + test, data=data) test name end40.pos end41.pos end42.pos end43.pos end44.pos negaalpha6 1302 2769 2491 2416 3143 killer6_32 1277 2255 2170 1186 2595 history6 1459 2849 2504 1151 3245 transposition6 1302 2338 2446 2306 3017 transposition_k6 1277 1988 2151 1118 2429 transposition_h6 1430 2592 2439 1124 3287 test name end45.pos end46.pos end47.pos end48.pos end49.pos negaalpha6 2685 5602 4855 5112 2270 killer6_32 2683 3511 2781 4105 1901 history6 2927 3243 4742 3879 2924 transposition6 2581 5307 4504 5037 2040 transposition_k6 2578 3368 2682 4026 1765 transposition_h6 2461 3127 4395 3947 2646 test name end50.pos end51.pos end52.pos end53.pos end54.pos negaalpha6 6816 8116 2085 8971 5509 history6 4578 5938 2701 4077 3167 killer6_32 6011 4977 2069 4757 3260 transposition6 6376 7878 1990 8316 5345 transposition_k6 5750 4947 1940 4282 3038 transposition_h6 4142 6099 2649 3764 3046 test name end55.pos end56.pos end57.pos end58.pos end59.pos negaalpha6 8782 5578 1911 5514 2643 killer6_32 6394 2333 1810 3845 2562 history6 11729 2467 2252 3589 2374 transposition6 8537 5139 1839 5233 2529 transposition_k6 6183 2109 1759 3691 2485 transposition_h6 11182 2267 2100 3325 2300 > xtabs(time ~ name + test, data=data) test name end40.pos end41.pos end42.pos end43.pos end44.pos negaalpha6 1201 2089 1835 2181 2389 killer6_32 1236 1871 1672 1489 2107 history6 1272 2244 1812 1382 2538 transposition6 1227 1951 1890 2198 2426 transposition_k6 1308 1740 1822 1470 2123 transposition_h6 1387 2220 2041 1514 2712 test name end45.pos end46.pos end47.pos end48.pos end49.pos negamax6 58783 84254 57276 56096 103962 killer6_32 1971 2809 2460 2640 2095 history6 2091 2592 3613 2470 2483 transposition6 1859 3714 3293 3026 2061 transposition_k6 1939 2698 2497 2691 2005 transposition_h6 2026 2714 3627 2730 2532 test name end50.pos end51.pos end52.pos end53.pos end54.pos negaalpha6 3720 5664 1937 5738 3626 killer6_32 3410 3707 1849 3680 2527 history6 2797 4391 2313 3294 2521 transposition6 3542 5527 1928 5426 3566 transposition_k6 3335 3733 1824 3418 2431 transposition_h6 2708 4745 2521 3297 2670 test name end55.pos end56.pos end57.pos end58.pos end59.pos negaalpha6 5587 4255 1793 4273 2051 killer6_32 4559 2274 1807 3399 1981 history6 7623 2309 1972 3188 1853 transposition6 5498 4029 1893 4106 1991 transposition_k6 4437 2232 1820 3298 2069 transposition_h6 7493 2321 2116 3143 1963
These usually require gamers to wager the amount of the bonus a specified 메리트카지노 variety of occasions. That can vary from 1x all finest way|the method in which} as much as} 40x the bonus quantity. These are just some examples of in style sidebet options. Typically another sidebets can be comparable as they pay at varied odds for various combos of playing cards from the unique deal. Besides variations, we also have facet bets which were added to encourage and attract extra gamers to try the game. These wagers are usually not advantageous for gamers and serve principally to enhance the house’s margins.
返信削除