オセロ セオリー。 「オセロのルールと戦術」序盤の鉄則、中盤のコツ、終盤の勝ち方

オセロ(リバーシ)の必勝法(勝ち方) ~偶数理論~

オセロ セオリー

はじめに オセロAdvent Calendarも22日目になりました。 残すところあとわずかですね。 本記事ではオセロソフトEdaxの評価関数について書きます。 前々からEdaxの評価関数については気になっていて調べてみたかったのですが、読み解くのが難しく挫折していました。 今回、Advent Calendarという機会をいただいて頑張って解読してみたので、その結果を書くことにしました。 注:本記事で紹介しているEdax edax-reversi はRichard Delorme氏によるGPL v3ソフトウェアです。 ソースコードは以下に公開されています。 では、評価関数の仕組みを探る長い長い旅に出発しましょう! この記事を読むとわかる はずの こと• Edaxの評価関数の求め方• eval. datファイルは何なのか この記事を読んでもわからないこと• 評価関数から評価値を求めるに当たっての探索関連の手法• eval. datファイルの作り方• bookについて• オセロの真理 ここで少し補足をしておきます。 評価値を算出する際には、 評価関数と 探索というものが関連してきます。 評価関数というのは、細かい話はに譲りますが、ものすごく大雑把に言えばある盤面がパッと見どちらがどれくらい有利かを表す指標です。 また「パッと見」という言葉を使ったのはそれなりに意味があって、その盤面から1手も先読みをしないで判断する、ということを表しています。 Wikipediaの記事に「静的に」評価すると書かれているのはそういう意味です。 1手も先読みしないで大丈夫なのかという疑問を持たれた方、ここが 探索の出番で、 探索が先読みする役割を担っており、先読みした先の局面について 評価関数で求めた値を元に現局面においてどの手が最善かという評価値を算出しています。 オセロアプリなどで表示されている着手ごとの評価値はこのように算出した値です。 このあたりの詳しい話については、という記事を見つけたので興味のある方はそちらをご参照ください。 本記事では冒頭でも書いたように 探索については扱わず、 評価関数のみ、しかもEdaxの 評価関数についてのみを扱います。 これがEdaxの評価関数だ! 話はいきなり核心に迫ります。 Edaxの評価関数は midgame. その後の部分は正なら64を加算、負なら64を減算して128で割った商 整数 を求めているので、要するに元の値を128で割って四捨五入しているということになります。 なので、評価関数の本質は0〜46までの謎の値 特徴量 の加算部分になります。 これらが何を意味しているかについて調べてみましょう。 featureとは何なのか featureの値は以下で設定されています。 実際には47個分の定義があるのですが、まずは冒頭の4つだけ引用しました。 最初の1行で定義されているのはA1〜C3までの左上隅9マスの座標になっています。 以下の図はA1〜C3まで登場順に番号を振ったものです。 2〜4行目の座標は、右上、左下、右下で、上記の隅9マスの対称形を定義しています。 「以下略」と書いた5行目以降も俄然気になってきますが、そこはこの後の楽しみに取っておくとして、話を先に進めます。 実際、 board. なので、この値は値の大きさにはあまり意味がなく、純粋に9マス分の範囲の石の配置パターンに一意の番号を振ったものだと思えば良さそうです。 最後に加算しているオフセットについては、後ほど説明します。 これの核心部分は eval. この関数はやや長いですが、細かい部分は省略して骨格だけ抜粋してみたいと思います。 エラー処理等は省略しています。 Step 1〜4やところどころにある日本語のコメントは筆者が入れたものです。 ,19682に対して、対称形を同一視した番号である0,... ,10205に変換するテーブルを作ったことになります。 名前からも推測がつきますが、相手側から見た場合の featureの値を求める関数になります。 Step2. この個数の意味は何でしょうね?後から出てくるので、まずは先に進みましょう。 Step3. ファイルの読み込み ファイル名が変数になっていて何を読み込んでいるのかこのソースからだけでは分かりませんが、ここで読んでいるのが eval. datというファイルです。 ヘッダ読み込み処理はソースコードを省略しましたが、合計28バイト分のヘッダ部があります。 Step4. 値や変数名からも想像がつく通り、0手目の局面から60手目の局面まで61回のループになっています。 の値を設定しています。 この意味は、 eval. datには隅9マスの各パターンに対応する値が対称形を省略して格納されていて、その省略されている対称形を復元しながら設定している、ということです。 どれだけ読み込んでいるかに関係する定義値を見てみましょう。 eval. datのファイルサイズをみると13952436バイトとなっており、上記のサイズにファイルヘッダの28バイト分を加えた値になっていることがわかります。 つまり評価関数の実態は? ここで改めてこの式に戻ってみましょう。 datから各パターンに対応する値を読み込んで展開した値でした。 つまり eval. datには何手目かの手番ごとに石の配置パターンに対応するスコアが書かれていて、例えば w[f[0]]というのは左上隅9マスの配置だけをみたときのスコアを表していることになります。 このように、盤面の一部の状況 feature だけをみたスコアを、0〜46の47個分のfeatureについて足した値 を128で割ったもの が評価関数の正体になります。 ということは、この47個のfeatureが何かがわかれば、Edaxが何をみて評価値を出しているのかがわかることになります。 Edaxの評価関数は盤面をこのように見ている! いよいよ、その47個のfeatureに迫ります。 47個と言いましたが、隅9マスが左上、右上、左下、右下と4種類あったように、対称となるパターンがあるので、対象形を1つと数えると実質的には13パターンになります。 では、一挙公開します。 それぞれの名称は筆者が勝手に名付けたものですのでご了承ください。 最後のパターン13は盤面の貼り付け誤りではありません。 石の置かれ方に無関係な定数項的なスコアも何手目かの手番ごとに定義されています。 パターン feature数 マス数 配置数 配置数 対称除く 1. 隅9マス 4 9 19683 10206 2. 隅を挟む辺とX 4 10 59049 29889 3. 辺とX 4 10 59049 29646 4. 隅とブロック 4 10 59049 29646 5. 中辺 4 8 6561 3321 6. 横Aライン 4 8 6561 3321 7. 横Bライン 4 8 6561 3321 8. Xライン 2 8 6561 3321 9. Cライン 4 7 2187 1134 10. Aライン 4 6 729 378 11. 長Bライン 4 5 243 135 12. 短Bライン 4 4 81 45 13. 定数項 1 0 1 1 さて、筆者の想像ではここを読んでいる方のほとんどは、これまでの長い長い文章は読み飛ばしてパターンの図と上記の表だけを見ている状況だと思うので、ここでEdaxの評価関数が何だったのかを簡単にまとめておきます。 上記13パターン47種類のfeatureそれぞれについて、可能性のあるすべての石の配置に対してスコアが与えられている• スコアは手番 現局面が何手目か 0〜60 によって異なる値となっている• これらのスコアは対称形をうまく省略して eval. datに格納されている• クリスマスプレゼント ここまで読んでいただいた方に一足早いクリスマスプレゼントがあります。 Edaxの静的評価関数を47個のfeatureに分解して表示するプログラムを作成しました。 局面に対応してfeatureごとのスコアが表示されます。 簡単に使い方を書いておきます。 まず最初にeval. datを読み込んでください。 サーバから読み込むリンクをクリックすると、クラウドにおいてあるeval. datファイルを読み込みます。 ただし十数MBの通信が発生することになりますので、読み込みには時間がかかります。 通信量が気になる方は次のローカル読み込みをご利用ください。 (二度目以降は状況によりキャッシュされている場合もあります)• 端末内にeval. datファイルをお持ちの方は、「eval. dat ローカルから 」でファイルを選択してください。 あとは適当に手を進めてください。 局面に対応したfeatureごとのスコアが表示されます。 パスは自動では行われないので、ラジオボタンで黒番・白番を変更してください。 チェックボックスをチェックすることで、手動で盤面や手数を好きなように設定することも可能です。 盤面の編集が可能なので、例えば序盤なのに隅9マスを黒が独占している、みたいな局面も作れてしまいますが、 現実的にあり得ない状況に対するfeatureの値は適切でない可能性が高いです。 なので、盤面を編集して部分的な形のfeatureの値を見たい場合は、 手数を30以降くらいに手動設定して見た方が良いと思います。 表示されるのは全く先読みをしない評価関数の値 言い方を変えるとレベル0の評価値 です。 当然精度が高いものではないので注意してください。 またソースコードについての注意点です。 このプログラムはGPL v3ライセンスのオープンソースソフトウェアとします。 ソースを読まれる方はご注意ください。 もしオセロの初心者がEdaxの評価関数を読んだら さて、ここでこの記事のタイトルに戻ります。 もちろん某有名小説のタイトルのパロディですが、もし仮にオセロの初心者がこの評価関数だけを見てオセロを学んだらどういうことになるのかを、いくつか考えてみました。 隅は強いか 先ほどので、手動のチェックボックスを入れて、A1,A2,A3,B1,C1あたりに黒石を置いてみましょう。 あれ?評価値がマイナスになりましたか?注意書きにも書きましたが、0手目のままだと適切な評価になりません。 実際の0手目の状態で隅を取っていることはないですからね。 手動で30手目くらいだということにしてみてください。 評価値がプラスになりませんでしたか? やはり隅付近を押さえているというのは強いと判断できるようです。 ただ、評価値の内訳を見てみると、隅9マスとしてはあまり高くなく、辺に関わるものが高めに出ていると思います。 隅は辺に展開していくことを見越して評価が高い、ということを評価関数から学ぶことができそうです。 打てる場所の数は大事か? オセロの入門本には、試合の途中では石の数よりも打てる場所の数が大事だということが大体出てきますが、評価関数から学べるでしょうか? まず気づくのは、評価関数は盤の一部の石の形だけを見て付けるスコアを47個足したもので、そもそも打てる場所の数というのを全く見ていないことになります。 ただ、全てのラインの形は見ています。 パターン5〜12はもちろん、それに含まれない辺のラインや、斜めの短いラインもパターン1や3に含まれています。 なので、ラインで打てる場所があるかは一応は全て見ているとも言えます。 ただし、2方向・3方向に返るマスがあっても、個々のfeatureとしてはそれぞれ評価してしまい、それを単純に足してしまいますから、打てる場所の数はあまり正確には評価に反映されないようです。 評価関数からは、打てる場所の数の重要性についてはあまりうまく学べないように思われます。 辺の良し悪し〜ピュアウィングは悪形か〜 オセロの入門本には辺の形の良し悪しについて書いてあります。 今年 2019年 、オセロ界に大きな進展をもたらした『』では、辺の形に対して手数を単位にプラスマイナスの評価をしていました。 「辺の形」というとき、大体は辺の6マスと中辺の4マスを指すことが多いと思いますが、残念ながらこれらの範囲を包含するパターンは出てきませんでした。 近いものとしてはパターン3の「辺とX」とパターン4の「隅とブロック」ですが、どちらも一部が欠けています。 『現代オセロの最新理論』によれば、例えば、悪い順にピュアウィング、ピュアブロック、ピュア山となっていますが、パターン4の「隅とブロック」ではこれらは区別がつきませんし、パターン3の「辺とX」では区別はつきますがピュアかどうかはわかりません。 評価関数の算出方法は全てのパターンを独立して評価していて、パターン3が山でパターン4の中辺がピュアな場合、というような複合的な評価はしていません。 あくまでもパターン3とパターン4のそれぞれの形だけをみて評価しているのです。 これでうまくいくのでしょうか? では、実際にで、先ほどと同様に30手目くらいにしてピュアウィングを作ってみるとどうでしょうか。 きちんとマイナス評価になっています。 ただ、内訳を見てみてください。 辺に絡む評価はそれほど悪くなく、むしろ中辺に絡む評価が低くなっているかと思います。 評価関数だけから学んだ初心者は、現状知られているような辺の形としての理解ではなく、例えばピュアウィングは中辺の形が悪いと理解することになりそうです。 逆偶数は悪いか 白番で自分から打てない奇数空き いわゆる逆偶数 を作るのは悪形であるというのも、オセロを学ぶ上で大事なことです。 典型的に逆偶数ができやすい隅付近や辺は、47個のfeatureの中のパターン1「隅9マス」やパターン4「隅とブロック」でカバーできて確かに低評価になっています。 しかし、47個のfeatureだけでは判断できないような逆偶数については悪いことだと学ぶのは難しそうです。 おわりに ここまで読まれた方の中には、Edaxの評価関数はこれで本当に大丈夫なのだろうか、という心配を持たれた方もいらっしゃるかもしれません。 特に辺についての解釈は、筆者のオセロについての理解と異なるものだったので、最初はEdaxのプログラムの読み方か、Viewerの実装を間違えたのではないかと思いました。 が、素のEdaxでBookを切ってレベル0で探索させた結果ときちんと一致するので、おそらく読み方や実装は合っていると思います。 (もし間違いを見つけた方はご連絡いただけると助かります) Edaxはご存知の通り人間ではまず勝てない強いプログラムです。 上記の疑問についての、現時点での筆者の理解は以下の通りです。 終盤 20数マス空きくらいから は終局までの完全読みをしていて、確実な評価になっている• 中盤も探索を行った先で適用する評価関数なので、評価関数でカバーできない要素は探索という行為である程度カバーされている• 序盤はさらに深い探索量を実現できるよう、Bookという仕組みが備わっている• これらの条件下では、今回見てきた評価関数で十分な評価が得られる むしろ、これまでのオセロに関する人間の理解の仕方(セオリー)が適切ではない可能性もあるかもしれません。 Viewerを動かしてみることでオセロに関する新たな洞察が得られたら、筆者もこの記事を書いた甲斐があります。 やっと評価関数を探る長い長い旅も終わりを迎えました。 この旅で見たものを信じるか信じないかは、あなた次第です。

次の

「オセロのルールと戦術」序盤の鉄則、中盤のコツ、終盤の勝ち方

オセロ セオリー

横付けをされた場合に余裕手ができます ・横の辺のaの頭が相手色ならその隣の辺のaに入り待機します、相手がつけ手してくれば余裕手ができます ・このケースではないのですが、横の辺のaの頭が相手色ならその隣の辺のaに単独で斜めに入るのも良いです 余裕手を消す ・つなげて狙っておきます 順番の変わり方をはあくしておきましょう ・例えば同じ辺でも、打ち方によって次の順番が変わってきます。 ブロックを作った方は、次は自分が他の所に着手しなければなりません。 ウイングを作った方は、次は相手が他に着手しなければなりません。 このケースでは単純ですが、辺には色々な形がありますので、すべて把握しておきましょう。 はぐれた石はできるだけ残しておきましょう ・壁を作らせそうな石は残しておき、できるだけ多く取ってもらう為に、つなげておきます。 (ここでは解りやすい例にしてみましたが、複雑につなげて相手に取らせるように仕向ける方法は他でも使いますので覚えておきましょう) ・はぐれた石は相手にとって邪魔な存在になってきます。 役目が終わるまで残しておきましょう 次の展開 ・次打てない場所を探しましょう。 種石がないので相手は真横には入れません。 今の段階では種石を作らない限り、入れる事ができません。 つまり、時間を稼ぐ事が出来ます。 そのラインをマークしておきましょう ・応用は辺などでも使えますので 絶対に覚えておきましょう ・オセロで重要な事は先読みです。 先読みはオセロにおいて重要です ・例えば、もしあのマスに相手が入ってきたら、中を割ろう、あそこに入ったら相手は付け手をしてくるであろう、そうしたら後ろに下がろう、もし付け手をしてこなければ、ここに入ろうなど、シュミレーションを立て先読みをします オセロ定石 ・すごい強い人と対戦するのであればオセロ定石(パターン)を覚ましょう ・しかし、オセロ定石を知らないからと言っても強い人に負けるわけではありません。 簡単に言うと考える手間がはぶけます。 それほど、とんでもない所に入れる場合があります。 あまり、外辺や隅を取ることばかり考えずに内側の方にも目を向けましょう(時には辺も捨てなくてはなりません) ・それと黒石はパスさせない限り最後に着手できないという事を始める前に頭に入れておきましょう 斜め打ち ・斜め打ちは気おつけましょう 入れる箇所を数字で表したものです ・せっかく相手が5箇所と打つ手が少なくなってきているのに斜め打ちをすることで相手の数を13箇所に増やしてしまいます ・オセロは、相手の手数が少ないほど追いつめる事ができます。 ひっくりかえせる手数の数の合計が少ないほど良いとされています。 ・逆に言えば、相手に斜めに打ってもらいましょう ・このケースではありませんが外辺へ斜め打ちで着手する場合は、つけ手をされても斜め打ちにならないかを打つ前に確認しましょう(自分がひっくり返した中辺もひっくり返される事を忘れずに) 辺の打ち方 ・一個マスを空けて入ってはいけないと言う概念を持っている人がいますが、その考えは捨て去りましょう。 (たとえ、次の石が確保されなくても、入ってはいけないと言う考えは捨ててください)しかし、むやみやたらとは入ってはいけません。 ・辺に一マスの間隔を空けて入る時は、空いているマスにどちらに相手が入ってきた場合にどのようになるかを把握しておきましょう ・軸はbの上を見ます。 この場合はD2部分です。 C1とE1の組み合わせの場合はE2です。 後は空いてあるマスの正面を見ます。 要するに相手がひっくり返した時にひっくり返す事が出来るかどうかです 関係性をしっかり覚えましょう ・相手の頭の下に潜り込むのは終盤は特に大事になってきます。 色々な所の場面で使うことがありますので、はあくしましょう 早い者勝ち ・相手との距離が二マス空いた場合は早い者勝ちです ・相手に仕掛けられる前にどちらかを選択しましょう 選択 ・極端な例ですが、どちらに入ろうか迷った時は、どちらに入った方が相手にとって被害が大きいか、石を無駄に多く取らせられるかを考えましょう 予測 ・初心者の人に良く見られがちな事ですがF1〜F8のラインと3A〜3Hのラインは打つ手がなくなるケースがあります。 白にF7に打たれた場合は、控えがないのでc打ちするしかありません。 ・早い段階で控えがあるのかを認識しておきましょう 予約する ・自分が入れることが解っている場合を予約と言います 横から来るラインを把握 ・このラインは白の逃げ道ができている事を早い段階から理解しておいてください ・黒がB6に入れて逃げ道をふさいでおけば白の手数が変わってきます ウイングのひっくりかえせる条件 ・ウイングは必ず取れるとは限りません。 条件が一致しなければG8に入る事ができません。 G8の場合は二カ所のラインを見ます。 ひっくり返せる種石が必要になってきます。 中級者の方でも、いざ打ってみたけど種石がないと言うケースをよく見かけます ・特に注意する点は二カ所です。 ・この場合に、もしF7とG3の二カ所が黒でG7に打ったら白にG8に逃げられてしまいます ・このケースではありませんが相手にウイングを打たせないように種石を狙い打っておく事も大事です 偶数マス ・常に相手が打てない所を探しましょう。 よく考えると打てない場所を見逃しがちです ・この場面では4マス空きがあります。 そうした時に、自分から入ると隅を取られてしまうので入ることはできません。 この場面ではないのですが、最後に4マス空きがあるとします。 そうした場合に4マス目に自分が入り3マス目にも自分が入る事ができれば次に相手に入ってもらい最後に自分が入る事が出来ます。 隣り合った辺 ・ウイングの先の隣の辺は自分のブロックやウイング、山などは作らないように注意しましょう。 高い確率で取られますので、交互にしたり、組み合わせに気をつけましょう 両方の隅を取りに行く ・中辺が白一色でラインが通っていれば、どちらかがc打ちできれば二カ所取ることができます• 〓… オセロ必勝のコツ …〓 オセロを始める前に、先手は、パスしない限り 最後に打つことは出来ない事を頭に 入れておきましょう。 オセロにとって最後に着手できるかどうかで 勝ち負けが左右します。

次の

オセロ定石一覧。定石覚えた方が良い理由、覚え方も書いてるよ。

オセロ セオリー

発端 [ ] 「ドミノ理論」は、に、大統領と国務長官によって主張された考え方に端を発する(その語自体を当時の彼らが用いたのではない)。 ドミノ理論は、時代のの外交政策決定に関わる人々の間で、支配的な考え方であった。 によるへの介入の正当化にも、この理論が用いられた。 その他の用例 [ ]• 元の意味とは異なるが、の結果としての民主化が起きることにより全域に動きが広がることを期待した大統領の政策を、「(民主化の)ドミノ理論」と形容することがある• なお、「」とはそもそもなどによってイラク戦争後の中東情勢から出てきた言葉であったが 、実際にそのような大きな変動(後述)が起きたのは政権時代()である。 しかも、派であったの政権まで打倒されている。 やで起こった「」が、やへ波及し、最終的にはで全ての国家が倒されたのは、ドミノ理論が逆の意味で現実化した事件と見なし、「東欧ドミノ現象」と呼ばれることがある。 また、• を引き金とした、ヨーロッパ各国における連鎖的なの勃興によるの崩壊• に始まり、の末期から終結直後に相次いだ革命による国家の崩壊• の終結直後に相次いだ、のイギリス領・フランス領だったの独立• 以降に相次いだ、のイギリス領・フランス領だった植民地の独立()• にで起こった「民主化」が、や、などに波及し、長期独裁政権の打倒や弱体化に繋がった なども、「ドミノ現象」として捉えられることがある。 注釈 [ ] []• 1971年に公にされたによると、ドミノ理論を真に受けていたのは統合参謀本部ととだけであった。 脚注 [ ] []• 精選版 日本国語大辞典. 2019年6月13日閲覧。 大辞林 第三版. 2019年6月13日閲覧。 H・アーレント『暴力について』みすず書房、2000年、P. 百科事典マイペディア. 2019年6月13日閲覧。 ""Three Cheers for the Bush Doctrine. History has begun to speak, and it says that America made the right decision to invade Iraq," TIME, March 7, 2005; also posted by Foundation for the Defense of Democracies, March 13, 2005. "An Arab Spring? A year ago people were saying that was a utopian dream. History is beginning to show that it is not. "The Arab spring continues in Lebanon," townhall. com, April 1, 2005. 関連項目 [ ].

次の