アカウント名:
パスワード:
ああいうソフトウェアってどういうアルゴリズムで動いてるのかと思ってたけど、ひたすら盤面のデータだけ持ってて、それだけで判定しているのか。てっきり、過去のデータがある場合はそれで、なかったら別のアルゴリズムで…みたいな感じでやってるのかと思った。設計ミスだよなぁ。(いやそんな状況じゃどのみち勝てないから、設計から落とすのは方針として正しいのかもしれんけど。)
単純に言えば、1 何らかの方法で盤面に点数をつける方法を用意しておく2 現在の盤面から可能な指し手をすべて列挙する3 2の指し手を指した後の局面すべてについて1を適用し、点数が最大となる指し手を選ぶというのが(この手のゲームの)最も基本的な処理です。
今回は2について高速化のための省略があり、全てを列挙していなかった。これだけなら問題ないのですが、相手の指し手の入力にも2を用いていたことで、省略された手の入力により内部の処理で不具合が生じた、ということのようです。
今後本人から詳しい説明があるかも知れませんが、現時点ではやねうらお氏の推測が一番納得できました。Seleneが反則負けしたようですが [yaneu.com]
3手目3三角成らずは、残り3局の将棋ソフトは対応しているのだろうか?
DS版「いつでもどこでもできる将棋」は、ちゃんと同角でした。
書かれていることが正しければほんとにただのミスなので、大丈夫だと思いますよ。全く同じミスが起きる方が奇跡的。残りのソフトは時々floodgateに来て調整もしていましたし、自己対戦のみで見落とす可能性は少なそう。
将棋は詳しくないので良く分かりませんが、基本的な処理のなかでは、(1) 王手を認識して、(2) 「現在の盤面から可能な指し手」の中から「王手を回避する指し手」に限定する、という手順が含まれないのでしょうか?今回の場合、成っても成らなくても王手は変わらないので「角成らず」で混乱したという説明が良く分からないのです。(まあ、そこがバグなんで、ありえないロジックで動いてしまったということだといわれればそれだけなんでしょうけど)
仰るとおり、多くの将棋ソフトではおそらくそのような王手回避手のみを生成する処理がなされていると思います。2の処理の一つですね。
今回問題となっているのは、放送中開発者の方の「消えてしまった」等の発言からすると、ソフトの内部の盤面を動かすのにソフトと相手で同じ処理を利用しており、しかしそこでは角不成に対応していなかったことから、角不成を指されたことでソフト内部の盤面で不整合が生じ(おそらく27角が消えてしまった)、王手されていると認識できなかった(王手の角が消えてしまっているので当然の話)、ということです。角成りには対応しているため、成っていた場合には上記のような不整合は生じず普通に王手回避手を指すでしょう。
要するに、バグは後手の指し手によって引き起こされており、先手の王手不回避はバグった間接的な結果ではないか、ということです。王手がされていようといまいと、角不成を指した瞬間にその駒が盤面から消えるバグが生じるのではないでしょうか。ですので、先手の指し手の挙動とはまったく無関係で、仰るような処理の前段階で異常が起きていた、と思われます。
ソフト側が、バグの効果によって「2七角が盤面から消えてしまった」(盤面に2七角が無い)という誤認識をしたと考えられるわけですか。なるほど。それで王手を無視して自らの攻め手を指すことになってしまったんですね。
> 基本的な処理のなかでは、~、という手順が含まれないのでしょうか?王手を回避しない差し手はそもそも反則で可能な指し手に含まれません。回避する機能がなくてもそんな状況は評価結果が恐ろしく低いのが普通なので他の手が優先されるのが普通です。
> 今回の場合、成っても成らなくても王手は変わらない試合中の時点では詰みまで読み切れていないので無関係です。
> 「角成らず」で混乱したという説明が良く分からないのです。今回のは最終的にはバグだったということなので、混乱というよりは開発者の想定しない入力によりどこかしらの処理が暴走したという話です。例えば、
>過去のデータがある場合はそれで既存の打ち筋や盤面と100%一致するのなんて序盤の十数手も無いだろうし、一致しててもどれが最善手かなんてわかんないから無駄。
有効時間内に可能性の低い悪手を除き(枝刈り)つつ読めるだけ先読みして、時間内に詰将棋できればそれ、予め想定しておいた勝てそうな定石と一致してたらそれ、さもなくば形勢判断処理(評価関数)が最も好成績を返す手を打つ。
あれこの手のゲームではコレが定番。この方針自体は設計ミスもクソもない。
除いた悪手を実際に打たれた時に死ぬってのは設計ミスだけどね。
"bonanzaメソッド"とかで検索してみることを勧めます。何かを語るのは、その後からでも。
そろそろ投了のし方も作りこまないとみっともない挙動しかできないのは興行的にも成立しないだろうな
しかし人間すげぇ少年漫画のような展開だった
これを思い出しました。
■世にも奇妙な物語「チェス」http://yonikimo.com/207.html [yonikimo.com]
思い出したのは私だけではないようです。
はい!俺も思い出したよ
対局者の振動をカウントする画像処理ソフト→振動数をカウントして「イライラ指数」を算出→イライラ指数が閾値を超えたら投了
振動の周波数を測定→同期して自ら振動→共振によって大災害が....
#対局者の動きをまねっこする、もしくはまねっこのようで微妙にずれるような動作をさせると、心理的に揺さぶれたりして。##相手の動きを真似るのはミラーリングとか言われてて、好感を得るテクニックとか言われてるな
探索キャッシュと盤面データを共用していて、未探索の手に対するキャッシュクリアを忘れてたんでしょうね。プリコンパイルヘッダ黎明期によくあったバグと似たような症状なのかな。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
盤面だけで処理してるんだ (スコア:0)
ああいうソフトウェアってどういうアルゴリズムで動いてるのかと思ってたけど、ひたすら盤面のデータだけ持ってて、それだけで判定しているのか。
てっきり、過去のデータがある場合はそれで、なかったら別のアルゴリズムで…みたいな感じでやってるのかと思った。
設計ミスだよなぁ。
(いやそんな状況じゃどのみち勝てないから、設計から落とすのは方針として正しいのかもしれんけど。)
Re:盤面だけで処理してるんだ (スコア:4, 参考になる)
単純に言えば、
1 何らかの方法で盤面に点数をつける方法を用意しておく
2 現在の盤面から可能な指し手をすべて列挙する
3 2の指し手を指した後の局面すべてについて1を適用し、点数が最大となる指し手を選ぶ
というのが(この手のゲームの)最も基本的な処理です。
今回は2について高速化のための省略があり、全てを列挙していなかった。
これだけなら問題ないのですが、相手の指し手の入力にも2を用いていたことで、
省略された手の入力により内部の処理で不具合が生じた、ということのようです。
Re:盤面だけで処理してるんだ (スコア:5, 参考になる)
今後本人から詳しい説明があるかも知れませんが、現時点ではやねうらお氏の推測が一番納得できました。
Seleneが反則負けしたようですが [yaneu.com]
Re:盤面だけで処理してるんだ (スコア:1)
3手目3三角成らずは、残り3局の将棋ソフトは対応しているのだろうか?
DS版「いつでもどこでもできる将棋」は、ちゃんと同角でした。
Re:盤面だけで処理してるんだ (スコア:2)
書かれていることが正しければほんとにただのミスなので、大丈夫だと思いますよ。
全く同じミスが起きる方が奇跡的。
残りのソフトは時々floodgateに来て調整もしていましたし、自己対戦のみで見落とす可能性は少なそう。
Re: (スコア:0)
将棋は詳しくないので良く分かりませんが、基本的な処理のなかでは、(1) 王手を認識して、(2) 「現在の盤面から可能な指し手」の中から「王手を回避する指し手」に限定する、という手順が含まれないのでしょうか?
今回の場合、成っても成らなくても王手は変わらないので「角成らず」で混乱したという説明が良く分からないのです。
(まあ、そこがバグなんで、ありえないロジックで動いてしまったということだといわれればそれだけなんでしょうけど)
Re:盤面だけで処理してるんだ (スコア:1)
仰るとおり、多くの将棋ソフトではおそらくそのような王手回避手のみを生成する処理がなされていると思います。2の処理の一つですね。
今回問題となっているのは、放送中開発者の方の「消えてしまった」等の発言からすると、
ソフトの内部の盤面を動かすのにソフトと相手で同じ処理を利用しており、しかしそこでは角不成に対応していなかったことから、
角不成を指されたことでソフト内部の盤面で不整合が生じ(おそらく27角が消えてしまった)、
王手されていると認識できなかった(王手の角が消えてしまっているので当然の話)、ということです。
角成りには対応しているため、成っていた場合には上記のような不整合は生じず普通に王手回避手を指すでしょう。
要するに、バグは後手の指し手によって引き起こされており、先手の王手不回避はバグった間接的な結果ではないか、ということです。
王手がされていようといまいと、角不成を指した瞬間にその駒が盤面から消えるバグが生じるのではないでしょうか。
ですので、先手の指し手の挙動とはまったく無関係で、仰るような処理の前段階で異常が起きていた、と思われます。
Re: (スコア:0)
ソフト側が、バグの効果によって「2七角が盤面から消えてしまった」(盤面に2七角が無い)という誤認識をしたと考えられるわけですか。
なるほど。それで王手を無視して自らの攻め手を指すことになってしまったんですね。
Re: (スコア:0)
> 基本的な処理のなかでは、~、という手順が含まれないのでしょうか?
王手を回避しない差し手はそもそも反則で可能な指し手に含まれません。回避する機能がなくてもそんな状況は評価結果が恐ろしく低いのが普通なので他の手が優先されるのが普通です。
> 今回の場合、成っても成らなくても王手は変わらない
試合中の時点では詰みまで読み切れていないので無関係です。
> 「角成らず」で混乱したという説明が良く分からないのです。
今回のは最終的にはバグだったということなので、混乱というよりは
開発者の想定しない入力によりどこかしらの処理が暴走したという話です。
例えば、
Re:盤面だけで処理してるんだ (スコア:1)
>過去のデータがある場合はそれで
既存の打ち筋や盤面と100%一致するのなんて序盤の十数手も無いだろうし、一致しててもどれが最善手かなんてわかんないから無駄。
有効時間内に可能性の低い悪手を除き(枝刈り)つつ読めるだけ先読みして、
時間内に詰将棋できればそれ、
予め想定しておいた勝てそうな定石と一致してたらそれ、
さもなくば形勢判断処理(評価関数)が最も好成績を返す手を打つ。
あれこの手のゲームではコレが定番。この方針自体は設計ミスもクソもない。
除いた悪手を実際に打たれた時に死ぬってのは設計ミスだけどね。
Re: (スコア:0)
"bonanzaメソッド"とかで検索してみることを勧めます。
何かを語るのは、その後からでも。
Re: (スコア:0)
そろそろ投了のし方も作りこまないと
みっともない挙動しかできないのは
興行的にも成立しないだろうな
しかし人間すげぇ
少年漫画のような展開だった
Re: (スコア:0)
これを思い出しました。
■世にも奇妙な物語「チェス」
http://yonikimo.com/207.html [yonikimo.com]
思い出したのは私だけではないようです。
Re: (スコア:0)
はい!俺も思い出したよ
Re: (スコア:0)
対局者の振動をカウントする画像処理ソフト
→
振動数をカウントして「イライラ指数」を算出
→
イライラ指数が閾値を超えたら投了
Re:盤面だけで処理してるんだ (スコア:1)
振動の周波数を測定
→
同期して自ら振動
→
共振によって大災害が....
#対局者の動きをまねっこする、もしくはまねっこのようで微妙にずれるような動作をさせると、心理的に揺さぶれたりして。
##相手の動きを真似るのはミラーリングとか言われてて、好感を得るテクニックとか言われてるな
#存在自体がホラー
Re: (スコア:0)
探索キャッシュと盤面データを共用していて、
未探索の手に対するキャッシュクリアを忘れてたんでしょうね。
プリコンパイルヘッダ黎明期によくあったバグと似たような症状なのかな。