将棋ソフトを使う上で知っておいたほうが良い豆知識をちょっとずつ書いていく連載第一回。今回は、lowerboundとupperboundについて。
いま、サイコロを考える。A = { 1, 2, 3, 4, 5, 6 } の目がでる。このとき、最小値は 1 , 最大値は 6。これを min{A} = 1 , max{A} = 6 と書くことにする。
このとき、上界(upper bound)は、6以上。下界(lower bound)は1以下。上界の最小値は6。下界の最大値は1だ。これをそれぞれ、sup{A} = 6 , inf{A} = 1のように書くことがある。
supはmaxと同じじゃね?infはminと同じじゃね?と思うかもしれない。一見するとそうなのだが、maxが存在しないケースがあるのだ。
例えば、B = 1未満の集合 (集合論での書き方だと { x | x < 1 } のように書く)を考える。これは最大値は1ではない。1はこの集合に含まれないから。つまりmax{B}は存在しない。でも、Bの上界は1以上。だから、sup{B} = 1となるわけだ。このようにsupはmaxの拡張、infはminの拡張となっている。
// maxが存在しなくとも有界であり空集合でない限りはsupが存在することが証明されている。(解析学の教科書に書いてある)
本題に戻ると、つまり将棋ソフトの出力で評価値がupperbound 100と表示されたら、上界の一つの値が100。つまり、実際の値(max)は、100かもしれないし、90かもしれない。実際の値が101であることはない。つまり、「よく見積もっても100。実際はそれよりたぶん小さな値だよ」ぐらいの意味。
ちなみに将棋所では、upperbound 88の場合、88++ 、lowerbound 88の場合、88 — (マイナス記号が二つ)のように画面には表示される。この「++」「 — 」という表記はチェスのソフトのGUIに倣った形らしい。
つまり、上の画像のように「88 ++」と表示されていれば、楽観的に見積もって88、実際の評価値は88以下ということだ。「68 — 」は悲観的に見積もって68、実際の評価値は68以上ということだ。
lowerbound側の記号を柿と杮の違いを見分けるくらいじっくり見てしまったw
はてはて?紛らわしかったですか?
GUIの方は
━━━━┓┏━━━━
┃┃
━━━━┛┗━━━━
なんだけど、このブログの文章の方は中のDBへのコメント化攻撃を防ぐためか、
━━━━━━━━━
━━━━━━━━━
になってるなーと思ってw
ああ、なるほど。WordPress、 – を二つ書くとくっつけちゃうんですよね…。本文に補足追加しました。
upperbound、lowerboundはソフトの思考でそれぞれどういう状態なのでしょうか?一番こちらにとって都合の好さそうなのと悪そうな変化をとりあえず読んでみましたって感じですか?
αβ探索のfail high/fail lowですね。 > upperbound、lowerbound
研究に使いたいのですが、floodgateでR4000以上の棋譜とかって公開されてますか?
あと、ふかうら王のcpu版って、内蔵gpuの場合、gpuではなくcpuが使われますか?
floodgateは全棋譜公開されてます。1年分単位でまとめてダウンロードできます。ふかうら王のCPU版はCPUしか使わないです。なお、記事と無縁のコメントは手動的に削除されるだす。。。
5五角が77–で
4四角が75++だったら
どっちの手を選ぶのかな?
fail highかつfail lowにはならないので、そのケースは起こり得ないです。
ZWJとかZWSPとか挟むのではだめなのかな--