将棋・チェスのプログラムを作っているのですが。
■ このスレッドは過去ログ倉庫に格納されています
0001東条上等兵
NGNGでは3手先くらいしか先読みができません。市販の森田将棋や東大将棋
は10手ぐらい先読みをするのに・・・。この差はなんなんでしょうか。
サイエンス社の『コンピュータチェス』『コンピュータ将棋』等を読ん
でみるとハッシュ・リンク・チェインなんて言葉がたくさん出てくるの
ですが自分には理解できません。人のよいかたぜひ教えてくださいませ。
0002
NGNGコードを UP してくれヨ!
わしが判断したる。(*´Д`)
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG3手先を読むプログラムって・・・・・・・
巨大ifとか、巨大switch/caseの塊のような気がするのは気のせい・・・・・・・
0005デフォルトの名無しさん
NGNGむしろ3手先まで頑張って作ったと誉めてあげたい。
0006デフォルトの名無しさん
NGNG0007東条上等兵
NGNGまったくそのとおり。1次元配列ba[256]をチェス盤に見立てて
ba[x*16+y]=PAWN
などとやっていたのですが、やっぱりちがうの?
0008デフォルトの名無しさん
NGNGネット上には、ハッシュやらα-β法などを
解説したページがあるから、そこを探れ!
まぁ、その前に、コードUPキボン。
0009東条上等兵
NGNG「レスが長すぎます。」という表示がでるのですが。
ノウハウの差。彼らは十年以上将棋のアルゴリズムを考えてるんだからね。
社内でもアルゴリズムは企業秘密扱い。
東大将棋とか、10年も歴史ないと思うが。
0013デフォルトの名無しさん
NGNGオセロくらいからにしたらどーよ?
0014東条上等兵
NGNGをC言語で先読みするものを作ったのですが。
どうも配列上に駒を置くのではなく、すべての駒に情報を書き込むというやり方
をみなさんなさっているみたいですね。
0015デフォルトの名無しさん
NGNG時間とメモリは喰うと思うが、コードは一緒でループカウントが
違うだけじゃないの?
それとも、時間を喰う事が話題になってる?
将棋ゲームを作った事の無い者だが、純粋な疑問。
>>14
そのやり方が良いの?私は配列上に駒を置くやり方
しか想像出来ないんだけど、どんな利点があるんだろう?
001615
NGNG「3手先を読む」とは、3手先の何を読むの?
駒を取る/取られるケース?それとも詰むかどうか?
『コンピュータチェス』や『コンピュータ将棋』に
出てるんだろうけど、気になって眠れない。
0017デフォルトの名無しさん
NGNG早寝だね
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGとりあえず、評価関数については理解してる?
0020デフォルトの名無しさん
NGNG勘違いというか、3手先と10手先とで必要な時間、メモリ、そのたの
リソース消費量を議論に入れていないから、議論にならない。
「すべての可能性を考えることができれば勝敗は戦う前から決まります」
といっている以上の意味はない。
0021デフォルトの名無しさん
NGNG説明するのが面倒なのでこの2行で理解してくれ。
nの3乗
nの10乗
00228
NGNG初めて作るんだったら、自分が理解できていない知識を使うより
使い慣れた方法で、少しずつノウハウを溜め込んでいけ。
やっぱり最初は、オセロからだ。オセロだって、奥が深いぞ。
将棋同様に、序盤は定跡重視、中盤は形重視、終盤は読みきりが必要。
ここで、オセロを完成させてから将棋で良いじゃないか。
0023デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1004395614/l50
0024東条上等兵
NGNG>1です。あちらは高レベル、こちらは低レベルということで・・・。
0025デフォルトの名無しさん
NGNG向こうが高レベルとも思えませんが。
0026東条上等兵
NGNGshort x,y,z,k,j,pin,dum1,dum2
struct KOMA *next,*prev}
なにかこういう構造体を使うそうですが。
こっから先がわからない・・・。
0027デフォルトの名無しさん
NGNG将棋やチェスのプログラム作る前に、もっと基本的なことを勉強しなさい。
とりあえず、(一般的な)アルゴズムの本買ってきて読みなさい。
0028東条上等兵
NGNG山下宏さんのサイトを見てなんとなく解ってきました。今現在改良中です。
ちょっと質問、if else、case select、よりも条件演算子を使
ったほうが早くなるのですか?
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG状況による。
でも、たいていの場合、気にするほど差はでない。
0031デフォルトの名無しさん
NGNGcase selectって、VBにあったような…。
1よ、C言語なのか?
0032デフォルトの名無しさん
NGNG0033趣味の将棋プログラマー
NGNG縦型の全件検索でやっていそうですね。たぶん。
→深さを区切って再帰で手をすべて展開。末端で評価してmin-max。
まずは単純なαβ法を適用しましょう。それだけで4手まで行けると思います。
次は反復深化を適用しましょう。これでもう一手伸びると思います。
まずはこのあたりが基本だと思います。
さて、その後は代表的な項目にはこんな物があります。(他にもありますが)
ここらから将棋の知識が入ってくるので作る人も大変です。
1.枝刈り。意味のある手だけ深く読む。意味のある手って何だろう?
2.末端での評価関数の高精度化。相手の効きのある自分の大駒は点が低いとか、。
最近の、10手も(ときには20手を超える詰みを)読む
将棋プログラム達ですが、全部て枝刈りが実装されていますよ。
では、こちら http://www.computer-shogi.org/ で
来年の5月に会いましょう(^^)
0034デフォルトの名無しさん
NGNG∧ ∧ ┌─────────
( ・ω・) < ぼくファ〜ファ
\ < └───/|────
\.\______//
\ / ←ファ〜ファ
∪∪ ̄∪∪
0036デフォルトの名無しさん
NGNG何か良い本はあるでしょうか?
0037デフォルトの名無しさん
NGNG共立出版です。
003836
NGNGサンクス。
チェックしてみます。
0039デフォルトの名無しさん
NGNG( ・ω・) < ぼくファ〜ファ
\ < └───/|────
\.\______//
\ / ←ファ〜ファ
∪∪ ̄∪∪
■ このスレッドは過去ログ倉庫に格納されています