絶対勝てないオセロ。 世界最弱のオセロAI負けるのが難しすぎwwプレイはこちら!

PCしかない部屋で現在最強のAIにオセロで勝負。勝てば2億円貰える。一度勝負を始めたら勝たない限り絶対に部屋から出られない←やる?

絶対勝てないオセロ

現在のコンピュータ開発は、オセロ対戦プログラムについてはどこまで進んでいるので しょうか? コンピュータのオセロってどれくらい強いんでしょうか? 今後の開発具合によっては「オセロで絶対に負けないコンピュータ」は現れると 思いますか? 「オセロで必ず負けない方法」というのは, あくまで「技術的」には可能です. ただし, 非現実的な時間とメモリを要求しますが. なお, いろいろなゲームに対するプログラムの強さですが, およそ次のようになっていると思います 全て「最強のプログラム」を比較しています : ・オセロ: 最強の人間であっても歯がたたない ・チェス: 最強の人間ならいい勝負 ・将棋: 最強の人間は苦労するだろうけど有利 ・囲碁: 最強の人間なら余裕で勝てる まず, オセロやチェスに関していうと, 「エンドゲーム 終盤 ではコンピュータは無敵」と言っていいです. オセロでは石を置く場所が少なくなるため, またチェスでは動かせる駒が少なくなるため, どちらも可能な着手の数が少なくなります. そのため十分に読むことができるようになり, コンピュータが理論上間違えないこととあわせて 「無敵」という状況になります. 今だと, オセロのコンピュータプログラムは「40手目 つまり残りが 20マス以下 では読み切れる」くらいになっていると思います. 従って人間が勝つためにはそこまでに「余裕で勝っている」くらいまで局面をリードしないと, 「絶対に間違えないコンピュータ」に追い詰められることになります. 5目分のハンディがある わけですが, これがないと「黒番が負けることはありえない」ルールになっています. つまり, コミがない場合には白番 後手 の必勝法は存在しないことが一瞬で証明できます. Q 1000本のワインがあって、1つは毒入りです。 1滴でも飲むと、10h~20hで死にます。 今から24h以内に、毒ワインを自分のドレイに飲ませることで、判別したい。 これには最低何人のドレイを要するか? 以下がこれに対する僕の回答です。 結論から言うと1000人必要です。 まず0時から検査を開始します。 24時までに終わらせなければなりません。 まず0時にx人がそれぞれで一本検査します。 死ぬのは10~20時ですね 二本目を検査するためには 10時より後に飲まなければなりません 理由はAに書きます しかし4時より後に飲んだ場合は24時より後に死ぬ可能性があるため、毒を見逃す可能性があります。 ゆえに10時より後には飲めません。 A、もし10時以内に飲んだ場合 死んだとしても最初に飲んだワインによるものなのか後に飲んだワインによるものかわからないからです。 一本目の死ぬ可能性のある時間帯は10~20時 二本目を例えば9時に飲んだとしたら死ぬ時間帯は19~29時になります。 つまり19~20時に死んだ場合、その死が一本目によるものなのか二本目によるものなのかわからないからです。 ゆえに1人1本しか検査できません。 従って1000本には1000人必要です。 こういう答えがでたんですが、答えは10人なんだそうです… 先生にだされた問題だとか。 どうして10本になるのでしょうか? 困ってます。 1000本のワインがあって、1つは毒入りです。 1滴でも飲むと、10h~20hで死にます。 今から24h以内に、毒ワインを自分のドレイに飲ませることで、判別したい。 これには最低何人のドレイを要するか? 以下がこれに対する僕の回答です。 結論から言うと1000人必要です。 まず0時から検査を開始します。 24時までに終わらせなければなりません。 まず0時にx人がそれぞれで一本検査します。 死ぬのは10~20時ですね 二本目を検査するためには 10時より後に飲まなければ... Q 20歳以上の人と援助交際するのも犯罪ですか? 自分の周りには結構援助交際してる奴が多いです。 『それって犯罪じゃないの?』って聞くと18歳以上 相手が だから大丈夫だとか・・・。 それで、みんなが援交で利用するサイトを教えてもらったのですが 確かに援交したい女の子がたくさんいました。 (内容は分からないように投稿してあるけどメールのやりとりしたらそういう意味だった。 ) でも自分は興味はあるけどそれが犯罪に関わる事ならしたくないと思います。 援助交際=売春ですよね? 売春をwikiで調べたところ犯罪になるケースは以下の通りでした。 本人同士の合意の上で援助したら大丈夫なんでしょうか? 20歳以上の人と援助交際するのも犯罪ですか? 自分の周りには結構援助交際してる奴が多いです。 『それって犯罪じゃないの?』って聞くと18歳以上 相手が だから大丈夫だとか・・・。 それで、みんなが援交で利用するサイトを教えてもらったのですが 確かに援交したい女の子がたくさんいました。 (内容は分からないように投稿してあるけどメールのやりとりしたらそういう意味だった。 ) でも自分は興味はあるけどそれが犯罪に関わる事ならしたくないと思います。 援助交際=売春ですよね? 売春をwikiで調べた... A ベストアンサー #3です。 そうです「グレーゾーン」なんですよ。 『売防法』は、「不特定の相手との性交を対象」としているので、単にセフレに小遣いを渡しているだけなら、売防法違反とはならんでしょう。 通常の成人間の金品が絡んだ男女関係では、このセフレもしくは愛人関係に当たりますね。 ただご質問にある「サイトを通して知り合った者同士の援交」の場合。 これは都合良く当人たちが、援交と称しているだけで、実際には売防法違反となります(実例や判例あり)。 法律上では「援交」とは、『未成年者に関する』を基本にしているのであって、成人間は該当しません。 また補足ですが「買春」も、『未成年者の売春』に対する言葉であり、ご質問のように「成人間」の場合には、例え売防法で捕まったとしても一方を「買春」とは言いません。 vector. html です。 このサイトの for 最初の子節点の手; 未評価の子節点がある; 次の子節点に移る という部分を見る限り先に子節点がいくつあるのか調べておく必要があると思うのですが、 調べる上で次の子節点を調べるときにその前に調べた子節点以外から探す方法が よくわからないのですが、どのような実装を行えばいいでしょうか。 おおまかな説明、流れをご教授お願いします。 A ベストアンサー オセロは8x8のマス目を使うので当然、有限ですね。 将棋はルール上、千日手があるので、局面をnとすると、最大で4n-1までの有限ゲームですね。 今のところ、すべての計算が完了していて証明されたのは「チェッカー」ですかね。 オセロ(リバーシ)はかなり計算が進んでいて、6x6のマス目の状態であれば計算は完了しているようです。 >コンピューターはもっとも自分が勝つ確率が高い手を選びながら進めるんだと思いますが、とある一手を指されたら絶対に勝てないパターンでもあるのですか? 今のところ必勝パターンは確認をされていないと思います。 昔のスーパーファミコン時代の将棋ソフトは確実に勝てる必勝パターンはありましたが。 (コンピュータソフト側は常に同じ手しか指さないため可能な裏技もあります) ネット検索するとこういう書籍があるらしい。 coronasha. wikipedia. 将棋はルール上、千日手があるので、局面をnとすると、最大で4n-1までの有限ゲームですね。 今のところ、すべての計算が完了していて証明されたのは「チェッカー」ですかね。 オセロ(リバーシ)はかなり計算が進んでいて、6x6のマス目の状態であれば計算は完了しているようです。 >コンピューターはもっとも自分が勝つ確率が高い手を選びながら進めるんだと思いますが、とある一手を指されたら絶対に勝てないパターンでもあるのです... A ベストアンサー 民事再生法。 簡単に言うと、借りた金を約束通り返せなくなったので いくらかはチャラにしてください。 という法律です。 従来の会社更生法と違うのは、経営者はそのまま事業を 継続できる、辞めなくてもいいというのが、一番の違いです。 もっとも、誰も貸した金を返さなくてもいいとはいいませんので、 いくらが条件があります。 一番大きな点は、借金返済のために資金繰りが悪化して潰れそうには なっているが、事業自体は順調で黒字が出ている。 借金さえなければいい会社なのに。 そういう感じです。 今、潰して資産を債権者で切り分けするよりは、 活かしておいて、働かせて借金返済をさせたほうが得だ。 そういう客観的な判断ができるようならば、債権者の同意のもとで 会社、事業の存続と借金の減免が行われます。 当然、債権者はよりたくさん金を返してほしいですから、 従業員の削減、給与のカット、経費削減案、売上アップのためのさらなる具体策など を求めてきます。 もっとも、違法で最低賃金を切るようなことはさせられませんし、 いきなり給料7割カットとか言ってしまうと、優秀な従業員から逃げられて しまうので、それらには自ずと限度はあります。 民事再生の成功の可否は、事業の健全性 合法で世情にあっていてきっちり儲けられること と 経営者のやる気と体力、従業員などの同意とやる気をいかに出せるかに かかってきます。 事業が健全でも、経営者の怠惰で失敗するところもあれば、 従業員がやる気をだしてそれなりに成功しているところもあるようです。 簡単な本はでていますので、本屋で一冊読んでみることをお勧めします。 民事再生法。 簡単に言うと、借りた金を約束通り返せなくなったので いくらかはチャラにしてください。 という法律です。 従来の会社更生法と違うのは、経営者はそのまま事業を 継続できる、辞めなくてもいいというのが、一番の違いです。 もっとも、誰も貸した金を返さなくてもいいとはいいませんので、 いくらが条件があります。 一番大きな点は、借金返済のために資金繰りが悪化して潰れそうには なっているが、事業自体は順調で黒字が出ている。 借金さえなければいい会社なのに。 そういう感じ... Q 閲覧ありがとうございます。 住民税について質問があります。 私は今まで住民税払ったことがないです。 30代後半まで。 今まで親の扶養に入っていたから?だと思うのですが、 世帯分離して国民健康保険に加入したのですが 住民税は発生するのでしょうか? 最近、国保に加入して、どれくらい出費があるのか、考えていたら 年金と健康保険とあと住民税かな?と思いまして ですが住民税っていくらなのかパッとしないので、 ネットであちらこちらと閲覧してみたところ、 個人差があり年間10万払ってる人と30万払ってる人がいるようです。 国民年金が全国一律15240円だったと思います、年間約18万円 国民健康保険が私の市だと、月16000円くらいで、年間約19万円 この2つだけで年間37万円も払わなければならないです。 住民税というのが、いくらかかるのか全くわからず ネット上では年間10万以上は払うように書かれているのですが ということは、年金、健康保険、住民税を合計すると年間50万以上 必要のように思えてしまうのですが、これは本当なのでしょうか? 私は年収200~230万位で 年金は銀行引き落とし、健康保険は払い込み用紙で毎月払う形 住民税は毎月払うのでしょうか? 毎月払えれは、楽なのかと思いきや、年収200万くらいで 年間10万~30万 高い人は50万くらいだそうなんですけど 自由になるお金減りすぎますよね。 あと40歳になると、介護保険料 というのが発生するみたいなんですが・・ 年収からこれらを全部引いてしまうと、手取り150万くらいになってしまうのですが こんなんで、ひとり暮らしは可能なのでしょうか? 月の収入で見ると 月給 180,000円 年金 -15,000円くらい 健康保険-16,000円くらい 所得税 -7000円くらい 住民税 -???円(仮に10,000円として)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄手取り 132,000円 醜い数値が出ました。 ひとり暮らしをしたら 知人の話では家賃4万円で光熱費いれるとトータル6万円くらいだそうです。 食費が、節約を常に考えても、1日1000円でも月3万円 この時点ですでに9万円です。 残りは42000円、これで生活できるのでしょうか・・ 閲覧ありがとうございます。 住民税について質問があります。 私は今まで住民税払ったことがないです。 30代後半まで。 今まで親の扶養に入っていたから?だと思うのですが、 世帯分離して国民健康保険に加入したのですが 住民税は発生するのでしょうか? 最近、国保に加入して、どれくらい出費があるのか、考えていたら 年金と健康保険とあと住民税かな?と思いまして ですが住民税っていくらなのかパッとしないので、 ネットであちらこちらと閲覧してみたところ、 個人差があり年間10万払ってる人と30万払... A ベストアンサー 年収210万円とした場合の住民税 住民税は「所得割」と「均等割」の2つの課税があります。 なお、給与所得の場合、「収入」から「給与所得控除(年収によってきまります)」を引いた額を「所得」といいます。 なお、所得税は7000円も引かれません。 4000円くらいですし、最終的には引かれた所得税の一部が年末調整で還付されます。 年末調整のとき、1年間に払った年金と国保の保険料申告することを忘れないですることです。

次の

オセロの勝ち方のコツ!四隅を取るだけじゃダメ?!

絶対勝てないオセロ

Fortran オセロプログラム 第0章 はじめに• 1 サイトについて このサイトはFortranで作ったオセロ人工知能プログラムを紹介しています。 人工知能の強さは、初心者では絶対勝てないレベルで、オンラインゲームでの対人間戦では滅多なことでは負けません。 ファミコンソフト「オセロワールド」の最強の敵、タメノリにギリギリで勝つことができました。 しかし、最近の有名なアプリの最強クラスと比較すると相手にならないくらい弱いです。 2 お断り プログラムはFortran90で書いています。 筆者はプログラミング上級者ではないのでプログラムの分かりやすさや高速化には多々問題があると思います。 第1章 プログラムの概要• 1 ダウンロード• 以下のファイルを保存して解凍して下さい。 続けて、 全てダウンロードし、fothello. 2 実行 以下にwindowsのcygwinでgfortranを使用したコンパイル・実行例を載せます。 mod. exe 実行 オプションはコンパイラや好みで変更して下さい。 setParameters. f90及びuserSet. f90はモジュールを含んでいますので、他のファイルより前に置いて下さい。 3 操作方法. exeで実行すると以下の画面が現れます。 661 initializing... コンマ秒」となります。 initialzing... はゲーム初期化(インデックス表や定石の棋譜を配列に格納等)を行っています。 これには数秒がかかる場合があります。 coord: が出たら、打つ位置を指定して下さい(例: f5)。 自分が打つと、コンピュータが打ち返してきます。 f6 Opening, 227. 060 のように、打った位置 f6 とコンピュータの思考フェーズ、及び評価値 Opening, 227. 060 を返します。 これについての詳しい説明は次章を参照して下さい。 同時に、計算時間も表示されます。 052s その他の操作には u: 手を戻す r: ゲームを止める があります。 ゲームが終了するとoutファイルの中に、 20150203002856. dat が作成されています。 上のファイルには棋譜がシンプルに表示されています。 ゲーム毎にファイル名が変わるため、ファイルがどんどんできていきます。 下のファイルにはゲームの履歴がビジュアル的に保存されています。 このファイルはゲームの度に上書きされるため、直近の記録しか残せません。 4 ファイル構成 ファイル内容の簡単な説明をします。 プログラムのモジュール・サブルーチンについては第2章で説明します。 setParameters. f90 定数の宣言。 setVariables. f90 変数の宣言、及び初期化プログラム。 main. f90 メインプログラム、オセロゲームの進行を制御する。 move. f90 動作プログラム、実際に石を置いたりするサブルーチン集。 output. f90 ファイルやターミナル出力を制御する。 f90 人工知能の動作プログラム。 (計算スピードの向上などのために人工知能はmove. f90とは別のサブルーチン集を使用する)• evaluate. f90 評価関数。 userSet. f90 ユーザ設定、人工知能の先攻後攻(石の色)や読みの深さ等を初期設定する。 fileIn. ゲームを途中から始めたいときに使用する。 indexTable. dat インデックス表が記述されていて、ゲーム開始時に読み込まれる。 dat 定石の棋譜集。 有名なオセロプログラムWzebraで使われているファイルと同じもの。 (Fortranで読み込みやすいように編集済み)• 評価関数プログラム evaluate. f90 で使用する。 下記のdatファイルはパターン別の評価値が格納されている。 詳細に関しては第2章を参考に。 horiz1Eval. dat• horiz2Eval. dat• horiz3Eval. dat• horiz4Eval. dat• diago1Eval. dat• diago2Eval. dat• diago3Eval. dat• diago4Eval. dat• diago5Eval. dat• cornerEval. dat• boardHistory. dat 最新ゲームの盤面をビジュアル的に記録。 ゲームを行う毎に上書きされるので注意。 20150201042731. 646 (年月日時分秒. コンマ秒) 棋譜を保存。 (例)e6f6f5d6c4f4g7e3f2c3b2... ゲームを行った時間をファイル名としているため、ゲーム毎に記録が残る。 第2章 プログラムの説明 各ファイルに含まれているモジュール・サブルーチンに詳細なコメントを載せていますので、参考にして下さい。 1 setParameters. f90 定数を宣言しているプログラムです。 プログラム全般に関しての定数設定。 定石に関しての定数設定。 インデックスに関しての定数設定。 2 userSet. f90 ユーザーが設定するモジュールで、人工知能やゲームの設定はここで行います。 設定内容は、• AIの読みの深さについて。 評価関数ファイルの指定。 確定石と着手可能手数の重み係数。 初期盤面のファイル読み込みの有無。 AIの石の色(先攻後攻)。 自分の代わりに、ランダム関数に手を任せるかどうか。 3 setVariable. f90 変数に関する設定と初期化。 ゲーム全般に関するグローバル変数に関する設定と初期化。 定石に関するグローバル変数の設定と初期化。 インデックスに関するグローバル変数の設定と初期化。 パターンに関するグローバル変数の設定と初期化。 4 main. f90 メインプログラム。 ゲーム全体の進行を制御する。 5 move. f90 動作プログラム。 石を置き、裏返す。 パス可能か否かの判定を行う。 前回の自分の番までターンを戻す。 実際に石を置き裏返す。 ゲーム終了か続行かを判断する。 ゲームを中止する。 石が置ける場所を探すサブルーチンを呼び出す。 石が置ける場所と方向を探す。 盤上の石 各色 の数を数える。 人間の手をランダムに任せる。 6 output. f90 アウトプットプログラム。 ゲーム進行におけるターミナル及びファイル出力を制御する。 ゲーム終了後に棋譜のファイル出力を行う。 7 evaluate. f90 評価関数プログラム。 必勝読み評価関数。 確実に勝つ手を見つけたらそこに打つ。 完全読み評価関数。 最終盤面に自石を最大にするように打つ。 中盤読み評価関数。 インデックスを取得して盤面の評価値を計算する。 8 ai. f90 人工知能 AI プログラム。 人工知能 AI の思考を制御する。 ゲーム木探索。 1手打つ(AI用)。 1手戻す(AI用)。 ゲーム終了か続行かを判断する(AI用)。 パスする(AI用)。 石を置き裏返す(AI用)。 石を置いたマスの縦横斜めラインについてのインデックスを取得する。 定石を探す。 水平パターン1のインデックスを取得する。 水平パターン2のインデックスを取得する。 水平パターン3のインデックスを取得する。 水平パターン4のインデックスを取得する。 斜めパターン1のインデックスを取得する。 斜めパターン2のインデックスを取得する。 斜めパターン3のインデックスを取得する。 斜めパターン4のインデックスを取得する。 斜めパターン5のインデックスを取得する。 コーナーパターンのインデックスを取得する。 第3章 使用した素材• 有名なオセロプログラムWzebraで使われている定石集。 400万棋譜近くが書かれてあり、棋譜の最後には黒から見たその定石の評価値が記載されている。 本サイトで紹介したプログラムでは、ここから抜粋しFortranで読み込みやすいように編集した定石ファイルを使用している。 各パターンの評価値を決めるために使用した棋譜データをここからダウンロードした。 棋譜の表示などが良く分からないデータ集もあったのでcorrect. dat. gzだけを使用した。 第4章 参考文献• 前向き枝狩り Prob Cut について述べている。 本サイトのプログラムでも取り入れている。 これによってツリー木の探索時間が大幅に短縮される。 AIの作り方の基礎が分かる。 おそらく時代遅れの部分も多箇所あるだろうが、初めに読むべき文献。 Buro 1997a の続編、評価関数を改善している。 この改善によってかなり強くなるらしい。 Multi-ProbCutについても述べているが、これについては、「robCut: An Effective Selective Extension of the alpha-beta Algorithm, Buro, 1995」 を読む方がお勧め。 A Pattern Classfication Approach to Evaluation Function Learning, Lee, 1986• 専門単語の定義を調べるときに利用。 A World-Championship-Level Othello Program, Rosenbloom, 1982•

次の

オセロの「必ず勝つ方法」のプログラム開発は技術的に可能?

絶対勝てないオセロ

Fortran オセロプログラム 第0章 はじめに• 1 サイトについて このサイトはFortranで作ったオセロ人工知能プログラムを紹介しています。 人工知能の強さは、初心者では絶対勝てないレベルで、オンラインゲームでの対人間戦では滅多なことでは負けません。 ファミコンソフト「オセロワールド」の最強の敵、タメノリにギリギリで勝つことができました。 しかし、最近の有名なアプリの最強クラスと比較すると相手にならないくらい弱いです。 2 お断り プログラムはFortran90で書いています。 筆者はプログラミング上級者ではないのでプログラムの分かりやすさや高速化には多々問題があると思います。 第1章 プログラムの概要• 1 ダウンロード• 以下のファイルを保存して解凍して下さい。 続けて、 全てダウンロードし、fothello. 2 実行 以下にwindowsのcygwinでgfortranを使用したコンパイル・実行例を載せます。 mod. exe 実行 オプションはコンパイラや好みで変更して下さい。 setParameters. f90及びuserSet. f90はモジュールを含んでいますので、他のファイルより前に置いて下さい。 3 操作方法. exeで実行すると以下の画面が現れます。 661 initializing... コンマ秒」となります。 initialzing... はゲーム初期化(インデックス表や定石の棋譜を配列に格納等)を行っています。 これには数秒がかかる場合があります。 coord: が出たら、打つ位置を指定して下さい(例: f5)。 自分が打つと、コンピュータが打ち返してきます。 f6 Opening, 227. 060 のように、打った位置 f6 とコンピュータの思考フェーズ、及び評価値 Opening, 227. 060 を返します。 これについての詳しい説明は次章を参照して下さい。 同時に、計算時間も表示されます。 052s その他の操作には u: 手を戻す r: ゲームを止める があります。 ゲームが終了するとoutファイルの中に、 20150203002856. dat が作成されています。 上のファイルには棋譜がシンプルに表示されています。 ゲーム毎にファイル名が変わるため、ファイルがどんどんできていきます。 下のファイルにはゲームの履歴がビジュアル的に保存されています。 このファイルはゲームの度に上書きされるため、直近の記録しか残せません。 4 ファイル構成 ファイル内容の簡単な説明をします。 プログラムのモジュール・サブルーチンについては第2章で説明します。 setParameters. f90 定数の宣言。 setVariables. f90 変数の宣言、及び初期化プログラム。 main. f90 メインプログラム、オセロゲームの進行を制御する。 move. f90 動作プログラム、実際に石を置いたりするサブルーチン集。 output. f90 ファイルやターミナル出力を制御する。 f90 人工知能の動作プログラム。 (計算スピードの向上などのために人工知能はmove. f90とは別のサブルーチン集を使用する)• evaluate. f90 評価関数。 userSet. f90 ユーザ設定、人工知能の先攻後攻(石の色)や読みの深さ等を初期設定する。 fileIn. ゲームを途中から始めたいときに使用する。 indexTable. dat インデックス表が記述されていて、ゲーム開始時に読み込まれる。 dat 定石の棋譜集。 有名なオセロプログラムWzebraで使われているファイルと同じもの。 (Fortranで読み込みやすいように編集済み)• 評価関数プログラム evaluate. f90 で使用する。 下記のdatファイルはパターン別の評価値が格納されている。 詳細に関しては第2章を参考に。 horiz1Eval. dat• horiz2Eval. dat• horiz3Eval. dat• horiz4Eval. dat• diago1Eval. dat• diago2Eval. dat• diago3Eval. dat• diago4Eval. dat• diago5Eval. dat• cornerEval. dat• boardHistory. dat 最新ゲームの盤面をビジュアル的に記録。 ゲームを行う毎に上書きされるので注意。 20150201042731. 646 (年月日時分秒. コンマ秒) 棋譜を保存。 (例)e6f6f5d6c4f4g7e3f2c3b2... ゲームを行った時間をファイル名としているため、ゲーム毎に記録が残る。 第2章 プログラムの説明 各ファイルに含まれているモジュール・サブルーチンに詳細なコメントを載せていますので、参考にして下さい。 1 setParameters. f90 定数を宣言しているプログラムです。 プログラム全般に関しての定数設定。 定石に関しての定数設定。 インデックスに関しての定数設定。 2 userSet. f90 ユーザーが設定するモジュールで、人工知能やゲームの設定はここで行います。 設定内容は、• AIの読みの深さについて。 評価関数ファイルの指定。 確定石と着手可能手数の重み係数。 初期盤面のファイル読み込みの有無。 AIの石の色(先攻後攻)。 自分の代わりに、ランダム関数に手を任せるかどうか。 3 setVariable. f90 変数に関する設定と初期化。 ゲーム全般に関するグローバル変数に関する設定と初期化。 定石に関するグローバル変数の設定と初期化。 インデックスに関するグローバル変数の設定と初期化。 パターンに関するグローバル変数の設定と初期化。 4 main. f90 メインプログラム。 ゲーム全体の進行を制御する。 5 move. f90 動作プログラム。 石を置き、裏返す。 パス可能か否かの判定を行う。 前回の自分の番までターンを戻す。 実際に石を置き裏返す。 ゲーム終了か続行かを判断する。 ゲームを中止する。 石が置ける場所を探すサブルーチンを呼び出す。 石が置ける場所と方向を探す。 盤上の石 各色 の数を数える。 人間の手をランダムに任せる。 6 output. f90 アウトプットプログラム。 ゲーム進行におけるターミナル及びファイル出力を制御する。 ゲーム終了後に棋譜のファイル出力を行う。 7 evaluate. f90 評価関数プログラム。 必勝読み評価関数。 確実に勝つ手を見つけたらそこに打つ。 完全読み評価関数。 最終盤面に自石を最大にするように打つ。 中盤読み評価関数。 インデックスを取得して盤面の評価値を計算する。 8 ai. f90 人工知能 AI プログラム。 人工知能 AI の思考を制御する。 ゲーム木探索。 1手打つ(AI用)。 1手戻す(AI用)。 ゲーム終了か続行かを判断する(AI用)。 パスする(AI用)。 石を置き裏返す(AI用)。 石を置いたマスの縦横斜めラインについてのインデックスを取得する。 定石を探す。 水平パターン1のインデックスを取得する。 水平パターン2のインデックスを取得する。 水平パターン3のインデックスを取得する。 水平パターン4のインデックスを取得する。 斜めパターン1のインデックスを取得する。 斜めパターン2のインデックスを取得する。 斜めパターン3のインデックスを取得する。 斜めパターン4のインデックスを取得する。 斜めパターン5のインデックスを取得する。 コーナーパターンのインデックスを取得する。 第3章 使用した素材• 有名なオセロプログラムWzebraで使われている定石集。 400万棋譜近くが書かれてあり、棋譜の最後には黒から見たその定石の評価値が記載されている。 本サイトで紹介したプログラムでは、ここから抜粋しFortranで読み込みやすいように編集した定石ファイルを使用している。 各パターンの評価値を決めるために使用した棋譜データをここからダウンロードした。 棋譜の表示などが良く分からないデータ集もあったのでcorrect. dat. gzだけを使用した。 第4章 参考文献• 前向き枝狩り Prob Cut について述べている。 本サイトのプログラムでも取り入れている。 これによってツリー木の探索時間が大幅に短縮される。 AIの作り方の基礎が分かる。 おそらく時代遅れの部分も多箇所あるだろうが、初めに読むべき文献。 Buro 1997a の続編、評価関数を改善している。 この改善によってかなり強くなるらしい。 Multi-ProbCutについても述べているが、これについては、「robCut: An Effective Selective Extension of the alpha-beta Algorithm, Buro, 1995」 を読む方がお勧め。 A Pattern Classfication Approach to Evaluation Function Learning, Lee, 1986• 専門単語の定義を調べるときに利用。 A World-Championship-Level Othello Program, Rosenbloom, 1982•

次の