2011/07/10

MTD(f)

ScoutのTest関数およびNegaScoutのnull-window searchは各ノードの真のminmax値を求めることはせずに、ある閾値より大きいか小さいかだけを調べることで多くのcut-offを引き起こし、その結果、高速な探索を実現している。しかし、Test関数が失敗した場合、すなわち、そのノードの探索を省略することができないことが分かったとき、ScoutおよびNegaScoutは通常のαβ探索を行う。

Plaatらによって考案されたMTD [1]はScoutおよびNegaScoutのその問題点を解決する。MTDは通常のαβ探索は一切行わず、Test関数のみを用いる。現在、αβ探索から派生した探索手法の中では最も高速な探索として知られている。

MTDにおけるTest関数はMemory-enhanced Test (MT)とよぶ。これは、NegaScoutのnull-window searchにTransposition tableを加えたものと考えてよい。(現論文ではスコアに実数値を使っているところが違うという記述があるが、そこは本質的な差ではないと思う。むしろ、alpha cut、beta cutの際に実際の値を返すところに差がある。)

def mt(node: N, gamma: Int, depth: Int): (Move, Int) = {
    if (depth == 0 || node.isTerminal) {
      return (Move.empty, score(node))
    }

    // check transposition table
    val (recordedMove, recordedScore) = probeNode(node, depth, gamma - 1, gamma)
    
    var moves = node.possibleMoves().toList

    // use the recorded move if it is available
    if (recordedMove != Move.empty && (moves contains recordedMove)) {
      moves = recordedMove :: (moves filterNot {_ == recordedMove})
    }

    var bestMove = Move.empty
    var g = Int.MinValue + 1
    for (m <- moves) {
      val n = node.play(m).get
      val (_, s) = mt(n, -gamma + 1, depth - 1)
      if (-s >= gamma) {
        // record transpositon table
        recordNode(node, depth, -s, TranspositionTable.BETA, m)
        return (m, -s)
      }
      if (-s > g) {
        bestMove = m
        g = -s
      }
    }
    if (g < gamma)
      recordNode(node, depth, g, TranspositionTable.ALPHA, bestMove)
    (bestMove, g)
  }
そして、MTを使う、MT Driver関数が次のようになる。これは、最初、解の上限upperと下限lowerをそれぞれ+∞、-∞に設定し、適当な値fからMTを用いて解の探索を行い、upperとlowerが一致したとき、それが求めるminmax値になるというものである。
def mtd(node: N, f: Int, depth: Int): (Move, Int) = {
    var g = f
    var bestMove = Move.empty
    var upper = Int.MaxValue
    var lower = Int.MinValue + 1
    while (lower < upper) {
      val bound = if (g == lower) g + 1 else g
      val (m, s) = mt(node, bound, depth)
      g = s
      bestMove = m
      if (g < bound) {
        upper = g
      } else {
        lower = g
      }
    }
    return (bestMove, g)
  }

ベンチマーク結果のNegaScoutとの比較は次のようになった。

端末ノード数
xtabs(node ~ name + depth + test, data=data)
, , test = end40.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          13      118      150      869     1426     6877    11739    50161   107685
  negascout_k        13      118      141      902     1324     7883    10528    65640    88274
  negascout_t        13      118      144      825     1217     5736     8835    36378    72029
  negascout_kt       13      118      141      875     1138     7226    10083    53044    73327
  mtdf               29      234      201     1173     1302     7735     9647    52626    63001

, , test = end41.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          30      277      498     3942     5522    38672    51316   637813   507317
  negascout_k        26      205      328     2391     3854    21961    29935   379585   282423
  negascout_t        30      255      423     3607     4750    34045    33459   504176   278609
  negascout_kt       26      187      325     2184     3832    19717    25478   334212   205353
  mtdf               26      210      280     2038     3523    23302    32603   182267   263264

, , test = end42.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          30      177      375     2436     3176    25612    42839   248198   549411
  negascout_k        30      114      325     1181     2374     8101    27187    64654   213624
  negascout_t        30      169      351     2638     3081    22922    36559   204722   367558
  negascout_kt       30      114      310     1176     2352     8224    22283    57193   170565
  mtdf               38      210      290     2563     2279    21173    17029   163380   125509

, , test = end43.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          49       64      455     1241     5358    13714    74902   246768  1342957
  negascout_k        48       59      300      936     3259     8122    34030    82466   697031
  negascout_t        49       64      452     1121     4794    11178    66526   159512   873095
  negascout_kt       48       59      300     1122     2793     6589    28902    77931   833684
  mtdf               78      103      795     1278     4137     9855    62631    83677   626759

, , test = end44.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          37      163      718     2376     6146    31217    41518   382253   369021
  negascout_k        31      154      553     1903     4252    19442    32793   193691   250324
  negascout_t        37      145      661     1978     5712    26938    35992   307232   271322
  negascout_kt       31      134      526     1690     3977    19028    28238   198876   188543
  mtdf               33      133      479     1493     3613    16429    20386   106444   138136

, , test = end45.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          34      341      307     5106     2720    48033    26628   663943   243477
  negascout_k        24      263      246     4243     2446    42004    26254   542838   293315
  negascout_t        34      350      293     4548     2435    44768    18250   507703   154510
  negascout_kt       24      266      236     3649     2189    39254    24296   414675   204045
  mtdf               26      348      197     3686     1771    32145    15908   357230   111041

, , test = end46.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          25      374      485     9812     9666   120794   121581   867828  1146500
  negascout_k        24      239      412     4179     5676    34681    53114   199289   393103
  negascout_t        25      346      440     8225     9262    92633   105958   674553   820007
  negascout_kt       24      221      399     4038     5138    34552    50520   157812   320921
  mtdf               28      331      337     2732     2064    25001    25891   206345   289721

, , test = end47.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          47       77      742      709    12574     6465   147226    35518   647303
  negascout_k        36       76      661      635     7067     6277    95607    39140   374661
  negascout_t        47       77      735      507    12231     4950   117537    20431   415691
  negascout_kt       36       76      626      454    10148     4509    86232    17140   273479
  mtdf               31       78      376      598     4341     3657    54517    20163   137717

, , test = end48.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          29      237      487     4048     8711    47471   101834   447611  1157189
  negascout_k        28      215      426     2508     5893    27912    54901   234412   535168
  negascout_t        29      225      435     3325     7348    38797    92198   342054   921632
  negascout_kt       28      215      378     2523     5536    23540    57060   212023   430229
  mtdf               46      260      452     2665     4791    21272    76293   188805  1262584

, , test = end49.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          34      278      539     1791     6544    15755   119662   171897  1286707
  negascout_k        34      178      556     1283     7316    10730    84280   187484   469384
  negascout_t        34      253      526     1578     5643    12621    96787   130468   741520
  negascout_kt       34      170      523     1182     7096     9134    93741   147926   399412
  mtdf               39      116      478     1031     6895     8009    67221   119862   584316

, , test = end50.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          33      323      675    12049    10445   311521   165628  8331136  2730443
  negascout_k        33      307      540     5224     6775    77991    95550  1070570  1200398
  negascout_t        33      323      604    10528     8292   248164   121633        0  1549757
  negascout_kt       33      307      511     5195     5647    71885    70762   877446   783511
  mtdf               39      362      454     6862     5704    58813    58077   580193   530472

, , test = end51.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          59      202     1030     1938    19853    24097   375925   327750  8490980
  negascout_k        59      155      712     1635     9593    20397    82927   222009   969788
  negascout_t        59      205     1005     2013    18482    20749   303961   247261        0
  negascout_kt       59      145      661     1583     9301    19182    81196   146625   912394
  mtdf               47      124      546     1780     7955    13778    59771   111734   458086

, , test = end52.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          63      180      902     1709     5654    19288    81468   195141  1277140
  negascout_k        37      162      353     1527     3548    16149    44295   148178   676770
  negascout_t        63      173      860     1687     4917    15049    67976   134405   922381
  negascout_kt       37      163      327     1608     3252    13121    47402   111351   550509
  mtdf              100      229     1386     2256     8565    17936    80934   139339  1002842

, , test = end53.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          43      349     1278    10972    25288   247619   274617 10298036  3186665
  negascout_k        35      279      855     4318    11674    31320   158313   327077  1444664
  negascout_t        43      320     1146    10194    22327   204413   250846        0  2293979
  negascout_kt       35      271      782     4716    10903    29281   164489   260376  1312628
  mtdf               42      198      583     2503     7333    22081    94618   190844   782647

, , test = end54.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          23      216      371     2194     5870    26600    92194   287651   927408
  negascout_k        24      189      262     1950     2957    22626    34695   273318   345191
  negascout_t        23      216      371     2066     5222    20270    70386   218128   615772
  negascout_kt       24      181      261     1593     2659    18939    27884   212148   244200
  mtdf               25      246      249     1644     2675    15708    20004   189045   172175

, , test = end55.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          49      295      857     4616    20627    59091   189197  1009661  3447413
  negascout_k        46      281      784     3663    12208    42926   157864   535946  1913433
  negascout_t        49      290      782     3765    19311    49978   174816   684694  2790214
  negascout_kt       46      281      743     3258    13625    42493   152997   394130  1709642
  mtdf               29      219      583     3210     8008    35739   102432   674335   894445

, , test = end56.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          56      120     1326     1596    14771    21502   222253   230785  6013316
  negascout_k        54      111      825     1349     5028    14212    63928   147220  1852309
  negascout_t        56      120     1226     1463    12164    18036   180860   163746  4371241
  negascout_kt       54      111      768     1262     3992    11816    48671   105271  1901167
  mtdf               39      130      849     1716     6891    12869   108870   105432  1541331

, , test = end57.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          38      237      507     4475     4477    61001    30822   849439   392082
  negascout_k        37      161      480     2561     4497    16136    32622   163275   394994
  negascout_t        38      237      496     4291     4445    52345    31573   716148   306181
  negascout_kt       37      161      451     2463     4398    15841    36980   157818   383875
  mtdf               46      283      390     2681     3991    26394    32885   212230   320514

, , test = end58.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          55      547      863    14095    16348   194209   211595  2727903  2286834
  negascout_k        55      407      830     4674    13645    56220   170146   811251  1984559
  negascout_t        55      498      847    11013    16801   159529   187444  2205883  1854687
  negascout_kt       55      323      821     4154    15337    53196   183057   755832  1836974
  mtdf               63      235      877     3600    10648    36041   106170   381251  1121595

, , test = end59.pos

              depth
name                  2        3        4        5        6        7        8        9       10
  negascout          18      214      209     2844     2643    58239    30403  1008983   216835
  negascout_k        18      197      205     2070     2262    36733    23426   345174   193849
  negascout_t        18      217      204     2730     2126    46808    21839   489119   134627
  negascout_kt       18      208      199     1969     2081    33587    19116   256418   137030
  mtdf               24      225      243     2609     2325    27312    19056   241424   147367

内部ノード数
xtabs(inode ~ name + depth + test, data=data)
, , test = end40.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         11      25     146     228    1486    2075   12348   17988  110404
  negascout_k       11      25     136     229    1365    2139   11491   19991   99489
  negascout_t       11      25     144     228    1345    1922    9857   14867   78863
  negascout_kt      11      25     136     229    1257    2011   11958   17234   87156
  mtdf              51      84     444     474    2569    2858   14480   19742   87419

, , test = end41.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         11      99     187    1437    2399   15724   23784  276227  263413
  negascout_k       11      81     171    1109    1951   11428   16272  209894  169736
  negascout_t       11      99     187    1464    2427   14722   17715  260280  178906
  negascout_kt      11      80     171    1067    2238   10939   14737  215444  136676
  mtdf              14      92     372    1205    4666   16123   42790  112425  341222

, , test = end42.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         10      59     221     933    2237    9461   30490   93282  386576
  negascout_k       10      46     193     579    1931    3864   23020   29194  181507
  negascout_t       10      59     222    1011    2311    9476   27946   84480  286373
  negascout_kt      10      46     197     590    2012    4532   20312   27993  158697
  mtdf              28     232     475    2670    3482   20447   23804  150417  165449

, , test = end43.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout          7      36     137     817    1623    9972   23253  175405  490033
  negascout_k        7      31     110     662    1038    6449   10930   71533  227741
  negascout_t        7      36     137     847    1515    9055   21982  133849  335105
  negascout_kt       7      31     110     815     946    5840    9931   78039  271967
  mtdf              75     162     995    2208    6432   19594   63710  192235  576167

, , test = end44.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         11      56     289    1066    2970   16492   22113  202603  199765
  negascout_k       11      47     238     682    2221    9250   20116  100449  145518
  negascout_t       11      52     289    1005    2982   14577   19810  172924  150666
  negascout_kt      11      43     255     736    2183    9696   17478  104399  109212
  mtdf              38      79     520     923    4652    9742   15219   75605   94409

, , test = end45.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         15      69     244    1148    2709   11993   28158  196678  275525
  negascout_k       15      63     242     998    2675   10515   30380  159167  345525
  negascout_t       15      69     244    1099    2825   12641   23895  169888  201339
  negascout_kt      15      63     242     950    2745   11038   31767  149743  277033
  mtdf              32     151     237    1421    2790   11477   23465  140888  163771

, , test = end46.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         13      85     283    3247    5509   45549   60467  352518  506864
  negascout_k       13      80     238    1790    3208   16933   30125   93203  198553
  negascout_t       13      85     259    3102    5496   38485   53279  307404  383787
  negascout_kt      13      70     237    1962    3074   17963   28074   95152  170354
  mtdf              54     327     779    3835    4706   40256   61445  342364  741716

, , test = end47.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout          9      23     233     242    4412    2907   50354   16539  265864
  negascout_k        9      23     237     218    2495    2557   35508   14928  170292
  negascout_t        9      23     253     213    4536    2650   44470   11196  189768
  negascout_kt       9      23     236     196    3402    2486   32863    9442  131268
  mtdf              24      35     194     872    1816    7573   22351   40556   70613

, , test = end48.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         14      54     269    1162    4806   15760   57034  161902  590192
  negascout_k       14      48     268     748    3740    8510   40008   78939  392969
  negascout_t       14      53     246    1094    4298   14212   54275  136782  508642
  negascout_kt      14      48     245     807    3636    7758   41386   76328  347276
  mtdf             115     174    3686    1565   33706   11014  318696   87909 3335746

, , test = end49.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout          9      87     175     665    2430    6695   50796   96831  633869
  negascout_k        9      76     170     487    2145    5294   30454   89221  199667
  negascout_t        9      87     174     656    2332    6067   45934   82621  411842
  negascout_kt       9      74     173     486    2280    4719   35268   76532  185430
  mtdf              18      59     398     425    4388    5808   43475   52318  436428

, , test = end50.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         16      58     381    2252    6548   61806  113884 1698516 2008267
  negascout_k       16      59     318    1260    4729   18750   74147  278057 1047587
  negascout_t       16      58     367    2221    5535   53573   90114       0 1304914
  negascout_kt      16      59     319    1399    4528   17254   60574  237079  790573
  mtdf              35     107     521    1606    5981   14810   61181  153408  602477

, , test = end51.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         11      52     300     652    5511    8643  101866  120491 2358758
  negascout_k       11      51     272     577    3892    6765   42186   76838  473081
  negascout_t       11      52     298     751    5326    9104   90639  110583       0
  negascout_kt      11      51     262     579    3906    8330   40806   69717  430606
  mtdf              26      47     300    1139    3389    8412   31932   77393  248831

, , test = end52.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         11      59     253     683    1842    8098   26735   85174  439938
  negascout_k       11      50     168     640    1745    7181   21864   71238  303779
  negascout_t       11      59     253     709    1704    7328   24112   69626  346116
  negascout_kt      11      50     168     670    1638    6773   22229   62285  266658
  mtdf              98     239    2778    2591   22377   21733  207041  177547 2162716

, , test = end53.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         12      89     346    2509    7090   55204   88090 2234507 1190850
  negascout_k       12      86     308    1784    4077   13542   59671  148293  549581
  negascout_t       12      88     319    2624    6861   52306   86502       0  961771
  negascout_kt      12      84     283    2052    4077   15441   58487  147603  537028
  mtdf              26      77     329    1186    3397   11747   43672  108713  424288

, , test = end54.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         11      50     175     531    2409    7285   37752   83641  392862
  negascout_k       11      52     179     490    2438    6557   31799   79308  340974
  negascout_t       11      50     175     514    2314    6773   33036   73678  301036
  negascout_kt      11      51     179     427    2273    6603   28324   71890  267328
  mtdf              13     129     186     663    2258    6736   21495   77638  198195

, , test = end55.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         15      65     404    1248    9188   19798   92140  392794 1662603
  negascout_k       15      61     358     953    5513   12038   80770  157799  951606
  negascout_t       15      65     408    1148    9117   17778   87351  304024 1364431
  negascout_kt      15      61     360     905    6644   12260   78871  147038  837889
  mtdf              26      62     425    1455    4854   17477   65316  379933  615088

, , test = end56.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         10      45     311     757    3912   12865   57796  140488 1530114
  negascout_k       10      37     252     541    2067    8742   25142   94894  492491
  negascout_t       10      45     317     742    3509   12036   51373  113677 1235365
  negascout_kt      10      37     247     534    1841    8398   21623   80730  545025
  mtdf              56     108     877    1530    8107   14727  110192  142411 1358622

, , test = end57.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout          9      52     173    1432    1739   19135   13780  285120  168055
  negascout_k        9      38     175    1049    1675    7488   14165   98433  164247
  negascout_t        9      52     173    1530    1940   17446   14387  266146  140052
  negascout_kt       9      38     172    1163    1844    7637   15122  104688  154033
  mtdf              31     160     344    1521    2993   13571   26000  131647  242334

, , test = end58.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         14     172     303    4253    6287   61713   81874  882182  893434
  negascout_k       14     111     262    1723    3872   25178   44528  357158  573485
  negascout_t       14     172     303    3644    6467   55475   71662  784289  733810
  negascout_kt      14      98     262    1657    4426   23251   49307  364851  532404
  mtdf              34      85     426    2009    4704   28404   48100  333251  561307

, , test = end59.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout         12      46     199     653    2777   14461   34540  261477  252083
  negascout_k       12      47     197     541    2509    9757   27143   89008  225199
  negascout_t       12      46     199     644    2475   12611   27142  141370  173857
  negascout_kt      12      47     197     539    2396    9869   24011   73875  177330
  mtdf              32     120     403    1202    3382   12808   27145  102514  201141

実行時間
xtabs(time ~ name + depth + test, data=data)
, , test = end40.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        146     290     496     725    1261    1963    5291    8146   33362
  negascout_k      162     294     495     725    1244    1993    4737    9275   29403
  negascout_t      181     301     496     709    1262    1836    4309    6832   24828
  negascout_kt     160     299     507     761    1249    1994    5221    8312   27056
  mtdf             340     470     721     933    1637    2272    5530    8861   25979

, , test = end41.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        173     496     605    1667    1977    8624   10067  120363   95956
  negascout_k      174     463     578    1429    1749    6304    7540   86696   59828
  negascout_t      173     508     604    1633    1961    7853    7756  108516   60461
  negascout_kt     178     473     591    1433    1909    6113    6932   88807   48840
  mtdf             191     481     720    1378    2644    7353   14772   43787  102702

, , test = end42.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        167     424     645    1352    1731    6502   11983   44883  124855
  negascout_k      172     374     597    1037    1587    2970    9065   14075   58752
  negascout_t      170     423     623    1444    1761    5906   10800   40040   93727
  negascout_kt     175     384     606    1066    1679    3370    8448   13988   51949
  mtdf             266     613     777    1993    2076    8051    9112   49056   51157

, , test = end43.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        177     316     553    1149    1696    6324   11723   83606  186748
  negascout_k      183     332     541    1080    1391    4197    6140   32211   93706
  negascout_t      184     326     603    1165    1729    5298   10554   58282  131350
  negascout_kt     190     313     544    1231    1365    4115    5665   34501  117310
  mtdf             403     505    1090    1638    3056    7782   20668   60042  169510

, , test = end44.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        189     388     750    1338    2393    8659   10858   85144   80372
  negascout_k      196     370     702    1166    1941    5401    9315   43392   57375
  negascout_t      193     396     757    1315    2350    7564    9461   71131   60152
  negascout_kt     191     366     729    1193    1988    5652    8475   44551   44293
  mtdf             289     420     872    1169    2545    5127    7184   28775   36413

, , test = end45.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        204     457     634    1568    1974    7181   12158   87261   99123
  negascout_k      208     444     658    1469    1980    6405   12799   71853  120692
  negascout_t      213     472     648    1536    2033    7233    9805   73823   69151
  negascout_kt     205     451     674    1441    2050    6774   13111   66399   96151
  mtdf             259     562     647    1578    1938    6295    9632   58944   55833

, , test = end46.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        193     484     741    2420    3799   19658   29535  132102  231939
  negascout_k      200     457     697    1710    2632    7765   15340   36120   89377
  negascout_t      205     524     710    2343    3764   16092   25815  113883  172976
  negascout_kt     219     456     705    1829    2637    8310   14298   35768   76634
  mtdf             312     692     937    2090    2706   11933   21978   85995  227521

, , test = end47.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        189     277     708     704    3187    2443   25664    7825  138700
  negascout_k      185     274     739     687    2312    2133   17950    7385   72540
  negascout_t      195     270     758     667    3258    2127   21355    5521   78977
  negascout_kt     189     280     740     647    2957    2105   16781    4966   56960
  mtdf             251     308     682     985    1873    3420   11653   13291   30711

, , test = end48.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        188     425     682    1623    2927    9997   21834   80545  213768
  negascout_k      194     418     698    1286    2544    5719   15166   39882  134581
  negascout_t      193     422     676    1549    2749    8907   20961   67341  184257
  negascout_kt     197     417     719    1388    2550    5398   16376   39458  120786
  mtdf             406     569    1609    1696    8698    6329   70877   40292  793007

, , test = end49.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        176     486     627    1114    2289    4473   24078   41946  264479
  negascout_k      187     460     650    1005    2166    3613   15768   39655   88779
  negascout_t      179     501     638    1105    2223    3883   21157   34196  168660
  negascout_kt     195     475     660    1010    2344    3393   18102   33940   83500
  mtdf             242     382     797     921    2991    3477   18092   24142  160935

, , test = end50.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        204     442     826    2346    3672   36083   45100  905580  693858
  negascout_k      211     455     753    1726    2984   11536   28311  140752  364351
  negascout_t      207     460     784    2383    3266   30463   33674       0  443437
  negascout_kt     213     464     761    1830    2905   10904   22865  121707  272435
  mtdf             288     530     852    1985    3388    9266   22517   79284  202871

, , test = end51.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        211     399     822    1149    4117    5536   55090   56954 1165039
  negascout_k      214     387     800    1084    3100    4517   24468   36420  211630
  negascout_t      211     410     856    1231    4000    5573   47679   50778       0
  negascout_kt     218     393     788    1102    3167    5198   20978   32365  200718
  mtdf             276     365     779    1289    2863    4561   15748   29685  107617

, , test = end52.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        206     432     737    1185    1827    5641   13071   45879  195934
  negascout_k      193     406     613    1167    1692    5179   10211   39142  122034
  negascout_t      207     428     750    1216    1771    5144   11997   36647  144741
  negascout_kt     196     421     611    1232    1729    4937   11026   33539  109840
  mtdf             440     629    1703    1993    7584    9989   54343   71080  541046

, , test = end53.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        210     500     901    2407    4884   31277   44704 1201767  553896
  negascout_k      210     505     837    1891    3298    7955   30283   69314  262176
  negascout_t      211     528     878    2504    4764   28718   43612       0  443394
  negascout_kt     214     504     828    2102    3293    8745   30791   67698  253523
  mtdf             290     451     802    1479    2718    6192   20951   45044  174004

, , test = end54.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        191     401     621    1095    2191    5277   18367   45771  168647
  negascout_k      190     417     607    1066    2069    4777   15367   41653  145154
  negascout_t      186     423     623    1089    2153    4653   15757   36421  126648
  negascout_kt     193     429     626    1016    2078    4743   13757   37260  112983
  mtdf             201     548     633    1131    2049    4325   10279   35448   81802

, , test = end55.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        228     451     867    1625    5865   11516   47866  191687  776131
  negascout_k      229     452     879    1466    3990    7497   39249   79331  440569
  negascout_t      232     468     887    1541    5690    9876   42431  138889  635360
  negascout_kt     236     464     881    1455    4697    7738   38621   71558  397801
  mtdf             263     423     880    1535    3578    8308   30333  147236  265348

, , test = end56.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        201     366     849    1204    3260    8014   31708   69252  806823
  negascout_k      206     354     780    1057    2095    5503   13382   45388  247042
  negascout_t      207     373     862    1199    2960    7195   27368   53603  606342
  negascout_kt     208     354     804    1076    1963    5348   11614   37573  277568
  mtdf             335     502    1111    1499    4333    7058   40382   52695  465928

, , test = end57.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        177     421     626    1772    1743   12042    7732  145348   74015
  negascout_k      180     369     646    1480    1775    4947    7565   46505   73514
  negascout_t      190     436     636    1795    1883   10308    7669  133608   61528
  negascout_kt     185     373     655    1574    1906    5102    8252   49164   69514
  mtdf             296     587     734    1641    2222    7370   11412   56582   90320

, , test = end58.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        237     651     855    3380    4692   32901   44719  449075  462755
  negascout_k      244     584     809    1929    3465   13789   26732  171201  306630
  negascout_t      238     693     847    3107    4734   29215   38682  396939  367758
  negascout_kt     251     557     830    1918    3774   13085   29430  178562  287312
  mtdf             323     491     940    1865    3498   12176   23809  124279  249729

, , test = end59.pos

              depth
name                 2       3       4       5       6       7       8       9      10
  negascout        176     391     601    1270    2129    9195   15964  137736  108460
  negascout_k      179     401     620    1092    2034    6278   12079   45030   88573
  negascout_t      179     404     623    1228    2003    7652   12094   71868   70125
  negascout_kt     184     413     623    1116    2004    6419   10978   38308   70561
  mtdf             273     527     751    1520    2322    6888   11698   44938   76771

概ね高速であるが、ときどき非常に遅い時がある。

[1] Plaat and University of Alberta. Dept. of Computing Science. A new paradigm for minimax search.  (1994)

0 件のコメント:

コメントを投稿