1 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 15:33:11 ] できたらよろこんでやる。 前スレ おまいら最強の将棋プログラムしてみろよ part5 pc11.2ch.net/test/read.cgi/tech/1109307327/
814 名前:789 mailto:sage [2008/06/02(月) 00:44:07 ] >>812 詰み局面から逆算するんだぜ。GHI問題なんか起こらないよ。 GHI問題が起きるのは、探索中の循環を即、不詰めと判定するからだ。 GHI問題でよく話題になる図を勝ちの局面であるIから逆算して行くとわかる。
815 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:45:06 ] お前ら、シャープの亀山工場で液晶を組み立ててる工員が みんな液晶の仕組みを理解してるだなんて思ってないだろ? そういうことだよ
816 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:48:23 ] >814 どのように逆算するの? つまりその逆算する時に経路情報を考慮するの?しないの?
817 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:49:31 ] >>814 あー詰み局面から逆算していく話が続いてたのか その場合で、局面というのは駒配置だけじゃなくて 局面の出現回数も持たなきゃいけないよな そうしないと、千日手になるはずの手順は 永遠に「勝ち」とも「負け」とも塗られないことになる ような気がするんだが
818 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:52:52 ] ○→○→○→○→○ ↑ ↓ ○←○←○ こういうループだけじゃなくて ○→○→○→○→○ ↑ ↓ ○←○←○ こういうループもあるよな
819 名前:789 mailto:sage [2008/06/02(月) 00:53:08 ] >>816 経路情報を考慮しないし、する必要はない。 ただし循環は検出する必要がある。 具体的に書くと Iが勝ちとわかっている局面。よって、直前のGも勝ち。その直前のEも勝ち。 Eに至る手順はB,K。Bは相手の手番なのでDを選択されて負け。よってBは負け。(勝ち局面の集合にBは含めない。) Kは勝ち。たどって、Jも勝ち。Hも勝ち。Hに至るのはE,F。 Eは自分の手番だし、勝ちだとわかっている局面。よって、Eのほうの探索はここで打ち切り。 残るはF。Fは勝ち。その直前のCも勝ち。その直前のAの局面は自分の手番なのでCを選んで勝ち。 よってAは勝ちの局面。GHI問題なんか発生していないし正しくAの局面の勝ちを判定できている。
820 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:55:09 ] ちなみに>>789 は意地悪だから図を書いてくれないけど >>234 のPDFを参照な
821 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:56:26 ] >>818 ./ニYニヽ r、r.rヽ. / (0)(0)ヽ r |_,|_,|_,|/ ⌒`´⌒ \ で?っていう |_,|_,|_,|_,| , -) (-、.| |_,|_,|_人 (^ iヽ__ ノ l | | ) ヽノ | `ー'´ / | `".`´ ノ 入_ノ \_/ / /
822 名前:789 mailto:sage [2008/06/02(月) 00:56:33 ] >>817 > あー詰み局面から逆算していく話が続いてたのか 続いているも何も、最初から最後まで、詰み局面をデータベース化しよう、という話なのだが。 具体的には、これだ。 d.hatena.ne.jp/KZR/20080531/p1
823 名前:789 mailto:sage [2008/06/02(月) 00:57:20 ] >>820 すまない。俺は意地悪なんじゃなくて図とか苦手なんだ。ほら…わかるだろ。
824 名前:789 mailto:sage [2008/06/02(月) 01:02:58 ] >>817 > その場合で、局面というのは駒配置だけじゃなくて > 局面の出現回数も持たなきゃいけないよな 「局面の出現回数」は持たなくてもいい。 >802で書いたが 「ただしそこ(判定したい局面)に至るまでに同一局面が3回以上出てきていないという条件が必要」だが、 これを前提条件とできるなら「局面の出現回数」のデータベースへの記録は不要。 ただし、勝ち/負け/引き分けとラベリングされた局面はすべて記録(データベース上に保持)していることが前提。
825 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:03:49 ] >>882 あれ、与えられた局面が勝ちか負けかを判定するデータベース つまり必勝定跡を構築する話をしているんだと思ってたんだが そして、その「局面」というのが駒配置だけでよいのか、それとも 駒配置の出現回数も持っていなきゃならないのかだと思ったが 経路という言い方をするからGHI問題と絡んでいるように見えて いろいろみんな混乱したるんじゃないかな それで、仮に、駒配置だけで勝ち負けが決まるのだとしたら もちろん「この局面は千日手」というラベルを貼られる 局面(駒配置)もあると思うのだけど、 詰み局面(駒配置)からたどっていったとき 千日手のラベルを貼る機会というのはどういうとき?
826 名前:789 mailto:sage [2008/06/02(月) 01:04:53 ] あと、終盤のデータベース化については >822 以外にも d.hatena.ne.jp/mkomiya/20080601/1212289142 d.hatena.ne.jp/yaneurao/20080602 このへんも参考にしてくれ。
827 名前:789 mailto:sage [2008/06/02(月) 01:06:49 ] >>825 > あれ、与えられた局面が勝ちか負けかを判定するデータベース > つまり必勝定跡を構築する話をしているんだと思ってたんだが その過程で引き分けデータベースも出来るだろ。 > そして、その「局面」というのが駒配置だけでよいのか、それとも > 駒配置の出現回数も持っていなきゃならないのかだと思ったが 俺の言う 局面 とは 盤上の駒配置・手番。その局面の出現回数は関係ない。
828 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:17:58 ] >>824 あー、その条件があればたぶんそうだよな でも前に進むなら、ループしたら「千日手」、でいいと思うけど 後ろに戻っているのだから難しい気が まあ、どうせ局面(駒配置)の数は有限なのだから 全部調べて「勝ち」にも「負け」にもならなかったものは千日手 でいいのかもしれないけど
829 名前:789 mailto:sage [2008/06/02(月) 01:20:12 ] >>825 > 詰み局面(駒配置)からたどっていったとき > 千日手のラベルを貼る機会というのはどういうとき? いま、 A,Bが未ラベルとする。Aは自分の手番、Bは相手の手番とする。 このとき A→B→A のような循環を発見した。 AからB以外に行く手は負けとする。 BからA以外に行く手は勝ち(=相手の負け)とする。 このとき自分にとっても相手にとっても千日手を選択するのが最善だからA,Bの局面の最善は引き分け。 このように未ラベルの局面同士の循環を発見して、この循環がお互いの最善であるときこれらの局面を 引き分けのリストに追加する。 825はどうも勘違いしているようだが、このA,Bの局面の「出現回数」を記録しておいてもこの循環の検出の役には立たない。
830 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:21:27 ] >>818 下の図は「双方最善を尽くしたら出現しないはずの詰み形」かな つまりループからしか到達できない詰み形 でもそれを排除してしまったら次の一手解答マシンとは言えないよ
831 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:27:55 ] >>829 あー、うんそれならいいよ ようするに>>828 の後半と同じことだな 神ならぬ人間から盤面を引き継ぐことはない、という前提なら たぶんそれでいいんじゃないかと思う 「勝ち筋があるけど、引継ぎ元が棋譜汚しをしてくれたせいで 千日手になるからそれは指せない」とかは考慮しないということで
832 名前:789 mailto:sage [2008/06/02(月) 01:28:14 ] 829の続き。 引き分けの検出のために、局面の循環を発見する方法は別の方法が必要だ。 例えば、次の例を考える。 A,B,Cが未ラベルで、Aは自分の手番、B,Cは相手の手番とする。 ・AからB,Cに遷移でき、それ以外は負け ・B,CからAに遷移でき、それ以外は勝ち(=相手の負け) この場合も双方、千日手にするのが最善である。 この循環を検出するためには、AはポインタでありB,Cをポイントしており、 B,CもそれぞれAをポイントしていると考え、JavaVMなどで見られる garbage collectorのようなものを実装する必要がある。(この説明でわかってもらえるだろうか?)
833 名前:789 mailto:sage [2008/06/02(月) 01:31:04 ] 832に書き忘れた。 garbageが起きて回収されるなら、それは循環参照がされていたということだ。 garbage collectorの実装はいろいろあるから、詳しくはその手の本を見てくれ。
834 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:31:38 ] >>832 あー、GCが循環参照を発見する方法か でも、現実的な時間にリアルタイムで計算するのではなくて 巨大な次の一手解答集を用意するイメージなのであれば 勝ちでも負けでもないものは引き分け、でいいような
835 名前:789 mailto:sage [2008/06/02(月) 01:33:45 ] >>834 おまい、なかなか頭がいいな。 コンピュータ将棋の開発者だな?大会で待ってるぜ!(`ω´) 名無しに戻る。長々と失礼した。
836 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:36:56 ] いや、俺は松原先生の本を昔図書館で何冊か読んだ程度で ゲームの数学は全然わからない素人だからあれだが 寝るぽ 乙
837 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:39:22 ] >830 そうだよな。 >829の話は尤もらしいのでつい信用しそうになったが、 先手後手双方、最善を尽くした場合の局面だけでなく、 任意の局面にラベリングしようと思ったら 扱えない局面が出て来そうな気がする。 詰み局面から逆算してデータベース化するだけであって、 そんなもの知らないってんなら、それはそれで良いけど。
838 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:41:33 ] ループ内に王手が存在するかどうか吟味しなきゃならないから >>834 の方法はそのままでは駄目だな
839 名前:789 mailto:sage [2008/06/02(月) 01:45:11 ] >>837 > 任意の局面にラベリングしようと思ったら 「1手詰みの局面」のすべてを表す集合から逆算するって話なんだぜ? 任意の局面にラベリングできるよ。 将棋の初期陣形とは何の関係もない。 詰みに至ることが出来る局面の解は(無限のメモリと無限の計算時間があれば) すべて求めるに決まってるじゃないか。
840 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:47:59 ] 盤面が有限だから有限でいいけどな
841 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:52:00 ] 「どうやっても連続王手の千日手に持ち込まれてしまい負け」が処理できない
842 名前:789 mailto:sage [2008/06/02(月) 01:52:19 ] >>838 それはその通り。 検出された循環(DCG)内で、連続王手にならないループが一つもなければないほうの負け。 双方が王手しあうループしかない場合、互いに逆王手を繰り返すことになるのだが、これは よく知らないが、将棋のルールでは引き分けなんじゃないかと思う。
843 名前:789 mailto:sage [2008/06/02(月) 01:53:07 ] >>841 >>842
844 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:56:21 ] 千日手になるときに手を変えなきゃならないだから その4回目に登場する局面を指す方が負けか すると、「どの地点からループに合流したか」が 重要になってくるような気も…。
845 名前:789 mailto:sage [2008/06/02(月) 01:57:15 ] >>844 >>824
846 名前:789 mailto:sage [2008/06/02(月) 01:58:32 ] あっ。844は842の双方連続王手のことか。 いま検討していたのだが、双方連続王手は普通の将棋の駒では実現できないようだ。
847 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 02:02:19 ] いや、だから A→B→A が連続逆王手のループだとして A は自分の手番、B は相手の手番だとして C → B → A → B → A → B → A と進めば次で B を指せないからこれは自分の負け D → A → B → A → B → A → B と進めば次で A を指せないからこれは自分の勝ち だったら A とか B は自分の勝ちなのか負けなのか
848 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 02:05:39 ] >>846 んーそれはほんとなのかな
849 名前:789 mailto:sage [2008/06/02(月) 02:07:46 ] >>848 本当だ。俺には証明はスマートには出来ないが。
850 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 02:21:39 ] >>849 出来る気がする。考えてみよう
851 名前:789 mailto:sage [2008/06/02(月) 02:26:14 ] >>850 俺が1分も考えて出来ないと結論を出した。間違いなく出来ない。
852 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 02:29:56 ] >>849 スマートでなくてもいいから証明してくれ
853 名前:789 mailto:sage [2008/06/02(月) 02:46:56 ] >>852 王手の種類を (A) 王の移動による王手 (B)駒を打つ・移動させることによる王手とにわける。 Aは、大駒の利きが王によって遮断されて敵玉をにらんでいる状態でなければならない。 しかし、…(中略)で、そのように配置することは不可能である。 Bは、その駒を打つ・移動させることが直前の王手を防ぐ手になっていなければならない。 しかし、直前の王手を、(A)、(B)それぞれの場合について場合分けして考えると …(中略)でこれまた不可能である。 よって、双方連続王手は不可能である。
854 名前:789 mailto:sage [2008/06/02(月) 02:57:31 ] 853補足。大駒には、複数マス進める駒で香も含む、としてくれ。 > しかし、…(中略)で、そのように配置することは不可能である。 この部分は、王の影になっていたのが直進できる駒かそうでないかで場合分けするんだ。 もっとスマートに証明出来るかどうかは知らん。
855 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 03:02:13 ] あらゆる局面(駒配置)にラベルを付けられると仮定して 一手目の局面もラベルがつくのかな?
856 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 03:14:04 ] 人が居るみたいだから質問。 最近ブックを実装したんだけどブックにはどんな情報を保持すればいい? 今のところ自分はハッシュ値と評価値とそれを算出した読みの深さと勝ち負けなんかのフラグ。
857 名前:855 mailto:sage [2008/06/02(月) 03:17:02 ] >>856 ごめんよワシには判らんし明日仕事だからもう寝る
858 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 03:18:48 ] 了解 お休み
859 名前:789 mailto:sage [2008/06/02(月) 03:24:02 ] >>855 > 一手目の局面もラベルがつくのかな? 839の話をしていて、「一手目の局面」が初期陣形のことを指しているなら、 初期陣形にも勝ち/負け/引き分けのいずれかのラベルが付く。
860 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 03:26:26 ] 局面の出現確率がないと古い定跡やマイナーな変化に進んでいきそうではある
861 名前:デフォルトの名無しさん [2008/06/02(月) 03:39:08 ] 4649 おまいら最強のシストレFXプログラムをしてみろよ pc11.2ch.net/test/read.cgi/tech/1211790540/
862 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 10:06:32 ] >>861 理詰めゲームとサイコロ賭博は全く違う話ですから食いつかないかと
863 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:53:42 ] 未来の名人戦は振り駒というランダム要素を 4回取った方が勝ちというゲームですが何か
864 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:28:09 ] 未来将棋は同時指しでしょ
865 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:55:47 ] 戦争シミュレーションにターンとかわけワカランよな。 リアルタイムだろどれもこれも。
866 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 02:26:47 ] 局面の遷移履歴によって持駒が変わると思う そうすると次に遷移可能な局面の集合が変わる 局面の履歴か持駒のバリエーションを考慮する必要がある
867 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 21:16:32 ] 今頃読んだけど、 >>819 データベースを作ったとして、実際に使う時には経路があるにこしたことはないよね。 例えば、データベースには負けと書いてあっても、実際に指し続けて、もし証 明木のどこかで今までに3回あらわれた局面を通過すれば引き分けになるから。 反対意見ではなくて、経路の活用の余地について関連コメント。
868 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:22:40 ] >>867 そんなデータベースは現実的に作れる規模ではないというのはおいとくとして・・・ 一体、おまいは何の経路をデータベースに保存しとこうと思うんだ? 与えられた局面から勝ちまでの手順か?勝ちまでの手順は木になってるわけで、 そんなものは全部保存しておけるわけないだろ。 しかし、仮にストレージが無限にあって保存できるとしよう。 では、初期局面から勝ちまでの手順をデータベースから取得しようと思うと、 それこそ終局までのありとあらゆる変化を含んだ木が得られるわけだよな。 これがメモリに入るか?宇宙に存在する原子の数より多いんだぞ。
869 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:25:47 ] 868の続き。 でも、仮に、無限にデータの入る秘密の箱があって、メモリに読み込まなくてもいいとしよう。 この木のなかに、その局面に至るまでに3回現れた局面があるかどうか調べるのに どれだけのコストが必要になる?仮に現れていることがわかったとして、ではその局面を 回避して勝ちに行く経路があるかどうかをどうやって調べるんだ? それってこのAND/OR木を探索しているのと同じだけコストがかからないか? うまくすれば探索しなくてすむとは思うが、1つの局面に対して莫大なindexを貼る必要があるだろ。 宇宙に存在する原子の数の2乗や3乗で済まないと思うぞ。
870 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:36:23 ] まあ、そんな完璧なデータベースがあれば、コンピュータは神様と同じ棋力があるわけで、 人間みたいな間違いだらけの棋力の低い将棋を神様に指継いでもらうということ自体が失礼ってもんだ。 でも、もうちょっと建設的な意見を。 勝ち/負け/引き分けをラベリングするときに、勝ち/負けなら「何手で詰む」というのを記録しておけば、 与えられた局面から終局への距離がわかるから、与えられた局面から終局に近くなるほうに向かって、 「3回あらわれた局面を通過」しないように勝ちを探して探索すればいい。 そうすれば、その探索の深さの範囲内では「3回あらわれた局面を通過」しない勝ちを探すことは出来るだろ。 このときの「探索の深さ」が深ければ深いほど正解に近くなる。この手法のほうが経路なんかをデータベースに 保存するよりよっぽどいい。
871 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 23:41:19 ] >>870 チェスのエンディングデータベースですな 3回あらわれた局面を通過しないように、なんて考える必要はないですよ
872 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 03:15:23 ] 局面を遷移するときの線に条件が必要だな 例えば桂馬を持っているとか香車が5マス勧めるとか
873 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 06:23:31 ] >>871 俺も「3回あらわれた局面を通過しないように、なんて考える必要はない」派だが、 867が考えたそうだったので、考えてみた。
874 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:37:53 ] 867では相手が勝を逃した時に千日手で逃れるには経路が必要になると言ったが、 そんな状況を考える必要はないという立場ならそれでいいよ。 現実的には局面だけのデータベースもストレージに載らないので初めから架空 の議論だと思っていたが、俺が何か前提を見逃しているのかな。 気分を害したなら謝るよ。
875 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:46:21 ] データベースを一つのPCで全て持っておく必要はないので 分散格納して連携するとか解決策は考えられる 利用するときはデータベースそのものじゃなくて それを使って調べた結果が判ればいいので 通信手段があれば良い 分析も分割して調べた結果を統合するとか方法はいろいろあるんじゃね?
876 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:55:40 ] >>874 867は、データベース上に詰みまでの経路を保存する話に見えたので 868-870のような反応になったのではないかな。 どのみち「経路」(勝ち/負け/引き分けを調べたい局面にいたるまでに3回出現した局面のリスト?) 情報があったとしても、それを用いて引き分けに持ち込むにはデータベース上のラベリングされた節点に 対して、AND/OR木を探索するような処理は必要になるけど。 >>875 分散格納しようにも、格納すべきデータ量が宇宙に存在する原子の数を超えるので、 1つの原子に1bitのデータを書き込めるとしても宇宙すべての物質にデータを書き込んでも足りない という状況になるのだけど。1つの原子に、もっとたくさんの情報を記録できるような技術があれば また違ってくるのかも知れないけど。
877 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 23:36:29 ] 歩とか同種類の駒は区別しないとか いろいろ工夫する余地はあると思うけどな 全局面がむりなら必要度の高い局面とそれに関係する局面を抽出するとか
878 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:01:17 ] >>877 筋違い角とか角換り腰掛け銀とか変化が狭い戦法/すぐに終盤になる戦法は 詰みまで調べてデータベース化する価値は十分あるだろうね。 詰みまで調べられないとしても事前に十分時間をかけて探索して、懸案の局面付近の 最善手(だと思われる手)だけでも持っていればずいぶん違うだろうね。 20年後ぐらいには角換り腰掛け銀なんかはコンピュータによって結論が出てるんじゃないかな。
879 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:16:28 ] >874 >876 将棋データベースの問題を考える時は (特に断らなくても)記憶容量と計算量が 実用的限界に納まらない事は当然の前提 として良いと思う。 それでも将棋の局面データベースを (特に現在の局面状態だけに基づいて 最善手を与えるデータベースを) 本当に作れるのか? と言うのは理論的に面白い問題だと思う。
880 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:55:46 ] どれだけ圧縮できるかというのも気になる 主成分分析/判別分析の固有ベクトルが分かったら評価関数に使えるし
881 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:51:27 ] >880 主成分分析か、大学の時にちょっとだけやったなぁ。 将棋の評価に必要な次元がそんなに落とせるのかどうか?
882 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:17:05 ] そういう特徴(ベクトル)を探すのに使えそうだから 今は完全に試行錯誤だから,それよりはマシになるかな,と
883 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:02:06 ] 9x9の将棋(本将棋)だとデータベースがでかくなりすぎて 実現できないのは分かりきっててモチベーションが下がるので まずは5x5将棋辺りからできないかなって考察するのが良いのかも。 もしできたら、それの性質を見ながら本将棋への類推と応用を考えると。
884 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:47:09 ] チェスですら終局までの完全なデータベースって無いのね。 将棋なんてまだまだ遙か彼方だな
885 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:05:59 ] チェスなら駒が減る一方だから終盤のデータベースは作れたけど、 将棋は駒減らんからな。5五将棋ですら無理じゃね?
886 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 08:28:00 ] んー、でも昨今のCPUの性能を考えると、どこぞのスーパーコンピュータを借り切ったら、 谷川九段を光速でやっつけることができそうな気がするのですが。
887 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 08:44:46 ] >>886 それが出来るのはスーパーコンピュータの性能のおかげではなくて 最近の谷川の性能のおかげなんじゃないだろうか
888 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 08:45:21 ] 時とは残酷だな・・・
889 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 09:03:05 ] スーパーコンピュータの性能をなんだと思っているのだろう。 1台辺りの性能で言えば、高々補助単位一個分の違いでしかないのだが。 # それが充分大きいのは事実だとしても。 手の数の爆発はそんな規模ではないからね。
890 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:24:12 ] 今だったら並列処理の方が単体のスパコンより、 処理速度が上げられる事実。
891 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 23:45:31 ] 単体のスパコンって何だ? 今時、スパコンはスカラー型でもベクトル型でも大抵クラスターだぞ。
892 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:09:40 ] NECのSXシリーズのCPUなんて2GHzしかない。 ベクトル演算がどんなに速くても将棋じゃ使わない。 COM将棋で必要な整数演算で比較したらSXシリーズは、 個人で買えるCore2Duo3GHzより遅い ちなみにクラスタ構成にしても将棋は速くならない (選手権にクラスタで参加しているチームはない)
893 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:29:42 ] >>323 まで読んだ。あとは流し読み。 将棋の完全解析プログラム検証向けの「最小セット」を考えてみた。 駒種全部再現のために自陣、敵陣の概念と全駒種を用意。 桂馬成らずや、角、飛、香の全種類の動きを再現するために横3列*縦5行は必要。 両者に玉がないといけない。 打ち歩詰めと二歩の再現のために盤上に歩が2個以上ないといけない。 するとこうなった。 ┌──┬──┬──┐ │▽香│▽王│▽角│ ├──┼──┼──┤ │▽金│▽歩│__│ ├──┼──┼──┤ │__│__│__│ ├──┼──┼──┤ │▲銀│▲歩│__│ ├──┼──┼──┤ │▲飛│▲玉│▲桂│ └──┴──┴──┘ 自陣、敵陣が3行づつだから中央は自陣でもあり敵陣でもある。 ただし、歩は敵陣の2段目まで入り込まないと成ることはできないものとする。 駒割りが異なるが飛側が先手、角側が後手とする。 これが先手必勝、後手必勝、引き分けのどれなのか完全解析頼む。 先手必勝か後手必勝になった場合は、あえて最善手より少しだけ悪い手を指したときに陥る引き分けのパターンの解析もよろ。 *千日手手順のアルゴリズム入れる必要があるので重要* これで将棋の完全解析のためのアルゴリズムは全部入れられると思う。 やりにくかったら駒の配置は適当に並べ替えても可。 俺ど素人なんで変なこと言ってたら咎めておくれ。
894 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:50:41 ] 先手から突っかけざるを得ず、 それに乗じて3三から玉頭を攻めて後手勝ち のような気がする
895 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 05:50:44 ] かくしてこのスレは 「おまいら最強の将棋解析理論提案してみろよ」 スレとなりました。
896 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:30:48 ] 局面の評価値を格納するデータベースのことだけど 局面を識別する番号とかと、その評価値が判ればいいので 同じ評価値のものをまとめて記録すればいい 例えば、先手勝ちは、100,000番〜4290,000番って感じ 上手く識別番号を付けることが必要になるかも知れないけど あと仮に評価値が(先手勝ち、引き分け、先手負け)の場合 一番頻度の高いものは記録せずに、見つからなかった場合の規定値にするとかで容量を減らせると思う
897 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:48:08 ] >上手く識別番号を付けることが必要になるかも知れないけど 無理
898 名前:デフォルトの名無しさん mailto:age [2008/06/19(木) 15:33:04 ] age
899 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:14:10 ] >>896 つかさ、先手勝ち・引き分け・先手負けの3つの領域を作って、評価値に応じた領域に保存すりゃよくね? まぁ、そーゆー事して多少容量減らしても焼石に水なんだが。
900 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:18:27 ] >上手く識別番号を付ける これを行う関数は評価関数と等価
901 名前:デフォルトの名無しさん [2008/06/19(木) 21:23:35 ] >>897-900 なんで?
902 名前:デフォルトの名無しさん [2008/06/20(金) 07:00:02 ] ボナンザなどのSIKOU.DLLを補助するDLLを作れば簡単に強くできそう。 たとえば定跡手はボナンザに考えさせなくていいし、 一手目の候補手だけは ボナンザより良い生成が出来るなら、一手進めた局面をボナンザに考えさせる。
903 名前:デフォルトの名無しさん [2008/06/20(金) 07:08:11 ] フリーで、棋譜ファイルから指し手の登録が出来て、激指やAIやボナンザに変換出来るか、 それらの思考ルーチンを乗っ取って、定跡ならそのまま指し手を返すように出来ない?
904 名前:デフォルトの名無しさん [2008/06/20(金) 08:39:06 ] 定跡だけ指すプログラムとその定跡ファイルはこちらで作りますから コンバートまたはSikou.dllに対応させる部分を作ってもらえないですかね?
905 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 08:53:33 ] >>902-904 既存のDLLをソースもないのにどうやって修正するんだ。 直接patchを当てるのか?誰がそんなことすると思うんだ? 902-904は本当にプログラムが一行でも書けるのか? 俺には902の意味自体よくわからないのだがボナンザにしても定跡DBにあるものは 思考していないが、それと何が違うんだ?
906 名前:デフォルトの名無しさん [2008/06/20(金) 08:57:03 ] >>905 定跡フォーマットが公開されていなくて、個人が追加することが難しい。 あと、共通の定跡ファイルが使えるようにすること。 Sikou.dllの仕様は決まっているので、 定跡用のSikou.dll → (リネームなどして)思考用のSikou.dll と呼び出せば、様々な思考に対応出来る
907 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:07:07 ] >>906 >>905
908 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:11:01 ] >>906 ああ、そういう意味か。 定跡を別途用意するんだな? そしてそれは「柿木将棋」の定跡形式か何かと考えていいんだな? 定跡の指し手を返す部分は、>904によると用意してくれるんたな? 定跡手なら、それをそのまま指して、そうでないならボナンザのSikou.dllを呼び出せばいいんだな? 904のプログラム(定跡だけ指すプログラム)が書けるのに、これの何が難しいんだ?20行ぐらい書くだけじゃないか。 本当に、904のプログラムを用意してもらえるのか。そこんとこどうなの。
909 名前:デフォルトの名無しさん [2008/06/20(金) 09:16:32 ] 不可能か、難しい点。 製品版の思考の乗っ取り(仲介) (あとbonanza.exeの制御も) 製品版の定跡ファイルへのコンバート GUIインターフェースで棋譜などを追加するツール作成
910 名前:デフォルトの名無しさん [2008/06/20(金) 09:21:06 ] 可能なこと。 指し手確率のある定跡ファイルフォーマットを定めて、 それに将棋倶楽部24 、将棋祭り、2ちゃんなどネットのプロ棋譜 を登録すること。
911 名前:905 mailto:sage [2008/06/20(金) 09:22:28 ] 俺、905 = 908ね。 >>909 > 製品版の思考の乗っ取り(仲介) (あとbonanza.exeの制御も) これは製品版でもボナンザは、Sikou.dllを用いていて、このインターフェース自体は CSAで標準化(?)されているものと同じだろうから、自前でSikou.dllを用意すればいいということなのでは。 > 製品版の定跡ファイルへのコンバート それはしないでいいのだろう。 > GUIインターフェースで棋譜などを追加するツール作成 902は、たぶん、柿木将棋か何かでやるのだろう。 柿木将棋用の定跡フォーマットなら優秀な定跡を公開している人は結構いるのでそれをそのまま使うのかは知らないが。
912 名前:デフォルトの名無しさん [2008/06/20(金) 09:24:55 ] 将棋倶楽部24で50万局、プロの棋譜で5万局 ほどありますから柿木だと処理しきれないと思います
913 名前:905 mailto:sage [2008/06/20(金) 09:34:58 ] >>912 定跡部分なんだから、序盤はほとんど重複してるし、将棋倶楽部24のも ボナンザより弱い人が指してるようなの入力しても仕方でしょうに。 せいぜい入力するのは5万局ぐらいでしょ。それなら柿木で十分処理できるよ。 そもそも、1局処理するのに1分としても1日8時間かけて480局しか処理できないよ。 そんなペースで100日やり続けても48000局。これ、誰がやるの?自動で処理するプログラム書くの?
914 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 07:12:12 ] ボナの定跡ファイルはいじれるんだからコンバートプログラム書けば終了だろ
915 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 17:42:26 ] 提案ですが、現在は激指や東大将棋などはプロの実践譜を解析して 適当に定跡ファイルを作成していますが、それだとどうしても優劣のつく局面まで 登録されてしまいますが、プロの実践譜をコンピュータで形勢判断させて コンピュータが互角と評価できるところまで自動抽出できるようにすれば、 形勢互角と思われる定跡ファイルを作れるのではないでしょうか? ソフトによって形勢判断に違いがあるので個性が出そう
916 名前:デフォルトの名無しさん mailto:age [2008/06/21(土) 19:22:50 ] >激指や東大将棋などはプロの実践譜を解析して適当に定跡ファイルを作成しています 開発者が怒りそうな分だなw
917 名前:デフォルトの名無しさん [2008/06/21(土) 20:30:18 ] >>916 あなたは激指や東大さらにボナの定跡ファイルを見て何も思わないですか? これは1局じゃないだろ?って思わないですか?
918 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 22:21:18 ] 経路君の次は定跡君かよw
919 名前:デフォルトの名無しさん [2008/06/22(日) 02:44:04 ] データ記録形式だけど XMLを特定領域のデータを記述できるようにスキーマを作ることが多いと思う こんな感じ ja.wikipedia.org/wiki/Office_Open_XML ja.wikipedia.org/wiki/OpenDocument これの棋譜版を定義できれば、各アプリ等でデータ交換が容易になると思う
920 名前:905 mailto:sage [2008/06/22(日) 03:15:51 ] >>919 xmlのparserを書くのが嫌。ファイルが肥大化するのが嫌。ベタテキストで十分。
921 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 07:22:57 ] >>902-904 何か、誰が何を言ってるのかいまいち良く分からんのでアレだが フリー版で公開されてるボナンザVer2.1ならsikou.dllのソースも 定跡のフォーマットも公開されてるじゃマイか? sikou.dllは思考部本体ではなくCSA将棋から呼び出されて 本体(bonanza.exe)を呼び出すだけの中継用DLLだけど bonanza.exeを呼び出す際のインターフェースも公開されて いるのでかなり好き勝手に操れるはず。 (CSA将棋->sikou.dll:CSA将棋がインターフェースを定義、DLL呼び出し) (sikou.dll->bonanza.exe:Bonanzaの独自定義、anonymous pipe経由) 実際にbonanza.exeを自在に操るソフト(GUI?)を書いて みたわけでは無いけれどhackフォルダー以下を見るとそう思える。 商用版(Ver2.1や3.0)では呼び出し方など仕様がちがうのかね? ボナンザ以外(激指やAIなど)と言うか何にでも共通に使える 定跡ファイルの仕様を定めようとか言うんなら、それぞれの 仕様がどこまで公開されてるのか知らないので良く分からん。
922 名前:デフォルトの名無しさん [2008/06/22(日) 08:12:05 ] >>920 parserは既存のを使えばいい データ属性の変更や他のXMLベースのユーティリティを使えない
923 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 09:33:26 ] >>922 C++から使えてportableでfreeで商用利用可能で省メモリでファイルをシステムメモリに丸読みしないような xml parserの実装があるなら是非教えて欲しい。
924 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 09:44:51 ] ワラタ
925 名前:デフォルトの名無しさん mailto:age [2008/06/22(日) 13:04:43 ] それぞれの思考に未着した定跡ファイルを一般化して統一し。 無理に使用したところで思考部分が弱くなるだけで意味が無い。
926 名前:デフォルトの名無しさん [2008/06/22(日) 18:53:51 ] >>923 DOMとかない?
927 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 09:33:47 ] >>926 DOMなら、通常DOMツリーとして扱うだろ。あれはファイル全体をメモリ上に丸読みする必要がある。 そもそも、923で書いたような軽量なXML parserの実装はこの世に存在しないんだよ。 XMLは大きなデータを扱うのに適していない。 将棋の定跡なんてたいしたデータ構造ではないし拡張するわけでもないし、 parseが難しいわけでもないから、そんなところにXMLを採用するのは XMLのことを知らない馬鹿のすることだとしか言いようがない。
928 名前:デフォルトの名無しさん mailto:age [2008/06/24(火) 21:56:41 ] 他人のふんどしで、楽がしたいだけだろ。
929 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:36:46 ] つーか、現状をどう認識していてその上で何がしたいのか もうちょっとハッキリさせてもらわないと賛成も反対も 協力もできそうにないわ。
930 名前:デフォルトの名無しさん [2008/06/25(水) 02:13:04 ] >>927 SAXは?
931 名前:デフォルトの名無しさん [2008/06/25(水) 02:19:09 ] >>928 parserを作るとか、データ交換の仕組みを作るとかそういうのが目的なら 自分で作ってもいいけど 目的は違うんじゃないの? だったら目的と違う部分は既存のものを使ってもいいんじゃないかな 他の用途で作られた機能を利用することもできるんだし それで足りなくて必要になったらその部分を作ればいいだけ 全て自分で作ることにこだわる必要はないと思うけど?
932 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 05:49:19 ] >>930 SAXはinterfaceの規定だけ。どの実装のことを言ってるんだ? 923で書いたような実装があるなら是非教えて欲しい。 あと文字コードもUnicodeとShift_JISが扱えるやつな。 だいたいな、部分的に読んで行こうが、10MBぐらいで済むはずの定跡ファイルが XMLで書くと200MBぐらいになるんだよ。それでいてparserが書きやすいわけでもない。 読み込み時間も書き出し時間も長くなる。 自分の作る将棋ソフトからそんなファイルを実行時に読み込むわけにもいかず、 別途自分のソフト用の定跡フォーマットを用意しなければならない。 これではメリットがどこにもない。 最初から標準化された小柄な定跡データフォーマットがあれば、自分のソフト用の 定跡フォーマットもそれを使えばいい。parserを二つも書く必要がなくなる。
933 名前:デフォルトの名無しさん [2008/06/25(水) 12:52:09 ] 評価の観点はいろいろあるから932が示した要件を満たさなくても利点は有ると思うけど 使いたくなければそれでいいと思う 時代に取り残されるかも知れないけど
934 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 12:56:52 ] >>933 本当にあんた、一行でもプログラムが書けるのか?寝言はいい加減にしてくれ。
935 名前:デフォルトの名無しさん [2008/06/25(水) 18:54:04 ] 未知なものへの拒絶反応だな
936 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:58:03 ] モノも論理も出さずよく言うわ
937 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:47:39 ] つーかさ、定跡って本当に必要なのか? いっさい使ってなくても別にこまらんのだが。
938 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 23:08:19 ] 喪前の思考アルゴリズムが定跡を活かせないタイプのものだからじゃね? 一般に強いとされるゲーム用AIは相当数の棋譜を記憶しているもんだが
939 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 23:16:33 ] 定跡を暗記させているわけでもないのに、 どんな状況でも、自動的に定跡を導いちゃうアルゴリズムは凄い 是非公開してくれ
940 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 23:49:22 ] チェスでは普通にコンピュータvsコンピュータから 新しい定跡ラインが登場したりもする。
941 名前:デフォルトの名無しさん [2008/06/26(木) 00:02:33 ] www.google.com/search?num=30&hl=ja&rls=com.microsoft:*:IE-SearchBox&rlz=1I7GFRD&q=XML+SAX+C%2B%2B&revid=1306684249&sa=X&oi=revisions_inline&resnum=1&ct=broad-revision&cd=7
942 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 01:11:43 ] 将棋の存在しうる盤の状態は10^150通りらしいぞ 囲碁は10^365な オセロは6x6までなら完全に解明されている チェスを完全に解明したという論文があったけど、続報を聞かないし嘘かいな
943 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 01:14:47 ] 解明されたのはチェッカーじゃなくて? チェスは聞いたことない。
944 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 07:00:25 ] >>941 プログラムが一行も書けなくて自分で検証する能力もないくせに わけもわからず検索して貼り付けなくていいよ。
945 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:18:53 ] >>902-904 マイボナの作者がu2bというUSIとBonanzaのsikou.dllの橋渡しをする プログラムのソースを公開している そのソースを改造すれば、オリジナルの定跡を指させたり、 Bonaがやってないルートで詰め将棋ルーチンを呼ぶといった改造はできる。
946 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 12:53:46 ] だから将棋はなぜ詰めるのかを数学的に解ければその結果を利用して最強になれるんだって、 だれか本気で詰め将棋を研究すれば人間では勝てなくなるようなプログラムが作れるはず。
947 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 13:21:32 ] 既にほとんどの人間は勝てないけど。。。 それよりも一般的に効率よくゲームが強くなる方法があればいい。 まぁ「唯一の確かな基準である勝敗」が調べやすい局面を研究するというのは分かるが。
948 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 01:50:36 ] >>946 詰め将棋は既に本気で研究されてますよ dfpnでググってみて
949 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 20:56:29 ] いくら読んでも詰みがみつからない序盤から中盤はどうすんだよ 序盤で劣勢になったらプロレベルは挽回不可能
950 名前:デフォルトの名無しさん [2008/07/04(金) 03:52:20 ] そこで定跡の登場たい
951 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 10:35:14 ] >>946 > だから将棋はなぜ詰めるのかを数学的に解ければ 二人零和有限確定完全情報ゲームだから?
952 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 12:15:20 ] 千日手があるから詰めない状況もあるんじゃ?
953 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 13:25:33 ] >>952 千日手は攻めてる側が手をかえなきゃならない....と思ってたんだが、 念のためwikipediaを見てみたら >手番が全く同じ状態が1局中に4回現れると千日手になる。 >千日手になった場合はその勝負をなかったことにする。 ってなってた。そうか、ノーゲームにできるのか。
954 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 13:41:51 ] 手を変えなきゃいけないのは連続王手の千日手だろー
955 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 14:54:29 ] 攻めてる側が手を変えるというルールはずっと昔のものだ。
956 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 15:38:28 ] つか明文化されたルールってないよね<将棋
957 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 16:12:09 ] >>956 d.hatena.ne.jp/yaneurao/20080405 > 私 「将棋の公式ルールを明文化したものはどこかにありますか?」 > 神吉「将棋のルールは、日本将棋連盟発行の将棋ガイドブックにあります。」
958 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 16:25:41 ] どんなゲームにだって、ローカルルールがあるのさw 将棋における日本のローカルルールは 日本将棋連盟が明文化しているらしい。
959 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 16:30:53 ] >>958 明文化しているけれど非公開らしいね ガイドブックのやつは一般向けのルールってことで 穴を指摘されても修正しません、ということらしい。実際穴はたくさんある。
960 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 16:43:37 ] 日本将棋連盟によるルールと、俺んちのルールはちげーんだよ! って言う方ですね?
961 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 12:01:49 ] >959 ルールにはっきりした穴があると思うなら日本将棋連盟にメールか何かで指摘してあげたら? 俺が認識してるルールの多少なりとも曖昧な点は双方入玉時の持将棋宣言くらいだが。
962 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 17:52:26 ] 持将棋のルールの不備はここが詳しいよな kofu.cool.ne.jp/mozuyama/mozuiro/moromoro/ 禁手の定義も不備があるね。 詰め将棋くらいにしか影響が無いとはいえ、 言葉で修正がきく部分なんだから弁護士でも入れて修正すればいいのに。
963 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:09:31 ] >>962 ゲームのルールを改訂すると、過去の棋符に影響するんじゃないの? その辺どうなのかな? まあ、過去は過去ってルールーにしちゃえばいいんだけどねw
964 名前:デフォルトの名無しさん [2008/07/07(月) 14:54:48 ] ルールーwww
965 名前:デフォルトの名無しさん mailto:age [2008/07/07(月) 17:19:21 ] このスレでは、コンピュータ将棋協会の対戦ルールで十分だと思われ。 他のルールはスレチ