1 名前:デフォルトの名無しさん [2007/01/22(月) 06:13:18 ] まずBearRevのDLLを作る そして世界最強っぽいリバーシプログラムWZebraを倒すスレ 期間は三ヶ月以内で頼む どんどんアイデアとプログラムを頼む 本格的リバーシ BearRev www.vector.co.jp/games/soft/dl/win95/game/se098822.html 最強っぽいリバーシプログラムWZebra www.radagast.se/othello/download.html 姉妹スレ おまいら最強の将棋プログラムしてみろよ part5 pc8.2ch.net/test/read.cgi/tech/1109307327/l50
65 名前:1 [2007/01/22(月) 23:17:59 ] インライン展開はループがあると出来ないってほんと?
66 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:19:37 ] メソッド呼出しとか、変数入出力のレベルの スピードを気にするなら、アセンブラで組めよ
67 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:20:41 ] >>64 おいおい、世界初のCPUだってメモリ1アクセスに100ms もかからんよ。
68 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:21:05 ] わしもそう思う
69 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:27:39 ] >>64 レジスタを何度も繰り返し使った方がいいのは確かだ。 ただし、レジスタは少ないのでメモリアクセスは必ず必要になってしまうのだ。 なるべくメモリを使わないようにするという目的のために、 「全部グローバル変数にする」というアプローチは間違っていると言いたいわけ。
70 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:30:41 ] >>前スレ1 最適化も自分でやりたいの? そういうのはやってやる、もしくはコンパイラがやるって言ってるのに。
71 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:30:53 ] ヒント:キャッシュ
72 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:39:46 ] 前スレ1が何をしようともコンパイラの最適化には劣るし オーソドックスに書かなければコンパイラの最適化を阻害する
73 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:40:08 ] どうせろくにプロファイリングもせずに、影響少ないとこばかりいじくるんだろうしなあ
74 名前:56 mailto:sage [2007/01/22(月) 23:40:45 ] >>55 スマンカッタ お前さん宛じゃなかったんだ 生温く見守っていようと思ってたんだが,我慢できなかった 今は反省してる >>64 レジスタのアクセス速度は100ps(pは10^-12)のオーダー メモリだと一次キャッシュにヒットすれば大差ないが そうじゃないと大雑把に言って十倍〜百倍程度は遅くなる ディスクなんて論外.使わないで済むようにコーディングしり >>65 関数分けないと再帰呼び出しができないから 終盤の読み切りが書けなく(正確に言うとかなり書き/読み難く)なる これは強いゲームプログラムを作るには必須っつーか常識レベルの ハードウェアの知識だから>>1 はもっと勉強汁
75 名前:1 [2007/01/22(月) 23:47:02 ] 再帰はもともと使わない設計ですよ 再帰で深くいくと鈍くなったり動作不安定になりそうな気がするので
76 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:53:23 ] また責任転嫁してるし
77 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:01:33 ] >>75 >鈍くなったり 探索数が深度の指数関数的に増加するんだから当たり前。浅いうちから 鈍るならアルゴリズムが良くないのでは。 >動作不安定 バグが原因。バグの原因となってるものは前スレで散々言われたはず。 今までの調子で書いてる限り改善しないだろうね。
78 名前:55 mailto:sage [2007/01/23(火) 00:05:03 ] >>74 そうか。こっちこそ早とちりスマソ。 1のプログラミングスタイルはかつての俺で(笑)、共感は少しするが、 もうちょっと謙虚にスレ住人から情報を吸収して勉強するとか、 最適化を語るなら、速度も実測するなりして研究してからにしてくれ。
79 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:15:32 ] 典型的な荒しの判別方法 都合の悪い質問をスルー
80 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:19:09 ] >>75 終盤の読みきりをどうコーディングするつもりなんだ? 深さは固定じゃないし,ループで書くと再帰よりぐちゃぐちゃした コードになるぞ(自分でスタック管理しなくちゃならなくなるから) 再帰で書いて鈍く(これ意味が分からんが)なったり動作が不安定になる なんてことは(バグがない限り)絶対無いから安心して再帰使え 再帰が今一つ理解できないんだったらもっと頭の汗をかけ 論理的な思考ができる人間なら必ず理解できるからガンガレ
81 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:26:20 ] 処理速度の話は一番最後で良いような。 まずは正しく動くのを作るのが最初だろ。 動作確認しやすいように関数分けたり、処理を簡素化したプロトタイプ作れば更に良し。
82 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:36:38 ] >>81 それはさんざん言ってきたんだが無視されるんだよ
83 名前:デフォルトの名無しさん [2007/01/23(火) 00:54:18 ] >>1 見たいなやつが会社に入ってきたら自分の感情を抑えていられるかどうか… 殴ってしまいそうだww
84 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 01:41:40 ] まずはスピードを気にせずにちゃんと(思った通りに)動くものを作れ それから全部捨ててデータ構造から速度が出る様に設計し直すのが 思考ゲームで強いソフト作る時の最短コース(急がば回れ)だ
85 名前:デフォルトの名無しさん [2007/01/23(火) 01:57:57 ] >>1 はプログラムは初心者だけど、アルゴリズムが頭にあるなら、思想があるなら プログラムであーだこーだやって、早いだの遅いだのやるんじゃなくて、 (グローバル変数がなんだのレジスタが何だのそういう件はいらない) プログラムについてはここのスレの意見を聞いて、 アルゴリズムをちゃんと完成させろよ。 今の>>1 がプログラムについてなんか言っても、ここの人間には価値がない。 そもそもおまいはアルゴリズムが強いって言い出したんだから、そこを主張しろ。
86 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 02:07:56 ] >>85 アルゴリズムを完成させるも何も>>1 は1ビットたりともアルゴリズムを変更する気はないと言ってる
87 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 02:19:39 ] 912 :1 :2007/01/20(土) 13:36:06 評価関数を変更することにしました 枚数×2 + 空白の数 では、指せる手の数が増えすぎて幾らアルゴリズムが良くても計算不可能なようです 指し手の可能数と、マスの位置による点数を使うことにします 評価関数はアルゴリズムのうちに入らないのかな? 前スレ1は他人と違う言語をしゃべってるようだ。
88 名前:デフォルトの名無しさん [2007/01/23(火) 02:25:18 ] >>1 の言ってるアルゴリズムが、最適化のことだったらワロスww
89 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 02:47:58 ] >>88 ああ、なるほど。そう考えるとしっくりくるね。 でも最適化技術をとことん使っても解けるような問題じゃないのにね。
90 名前:1 [2007/01/23(火) 06:57:30 ] 思考ルーチンには、再帰は使ったらいかんと思います スタック管理をパソコンにまかせて自動処理させると危険なんです 予め必要なメモリ領域を確保しておいてループで書くのが王道でしょ
91 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 07:02:22 ] >>90 そんな事は、無い。 当然だが、スタック管理は人間よりPCにまかせたほうが、安全 なるだけ難しいとこは、PCにまかせて、シンプルで保守しやすい コードを書くことこそが、真の王道
92 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 07:10:55 ] 危険とか王道って、どっからそんな思い込みが出てくるんだ
93 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 07:28:38 ] >>92 >1の偏りきった脳味噌から。きっと>1はいつも斜めに傾いで座っているのだろう。
94 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 07:31:10 ] どこまで深くなるかがあらかじめわかってるのだから 再帰でも問題は無いよ
95 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 07:36:06 ] 王道も何も知らない無知の癖に王道を語ったらいかんと思います お前のようなカスが書いたプログラムが危険なんです 無知は無知らしく識者の言うことを聞くのが王道でしょ
96 名前:1 [2007/01/23(火) 08:04:44 ] オセロだけではなく、将棋と囲碁に応用する目的があるんです 最大500手くらいあったらどうなんでしょうか? 再帰呼び出し ある種の複雑な問題を解くコードをシンプルに記述できる場合があるが、 再帰による入れ子の数に応じて占有するメモリが増加する上、 実行速度も効率的とは言えず、非再帰的に記述できるならそうすべきである。 e-words.jp/w/E5868DE5B8B0E591BCE381B3E587BAE38197.html
97 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 08:09:35 ] そんなもの知ってる お前じゃない
98 名前:1 [2007/01/23(火) 08:10:19 ] 再帰は確実にインライン展開が出来ず、その都度、宣言されている変数の確保と 関数呼び出しのオーバーヘッドがかかるんです だから鈍い
99 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 08:13:01 ] >>98 >再帰は確実にインライン展開が出来ず、 ループもインライン展開できないとか書いてただろ、お前 だいたいループにするって言っても、どうやるの? 自分でスタック用意するのか?
100 名前:1 [2007/01/23(火) 08:15:28 ] 当初から、再帰は一度も使っておらず(これは初めから一貫していました) 手数と、読みの深さごとに必要な領域を確保しています パスも含めて128手分とってあります
101 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 08:17:29 ] そんなのソース見たから知ってる だからどうした? 何が言いたい?
102 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 08:17:41 ] インライン展開できてるかどうかくらいは確認してるんだよな
103 名前:1 mailto:sage [2007/01/23(火) 08:42:19 ] それはしてません でもとにかくループがいいんです わかってください
104 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 08:50:58 ] 残念 sageちゃ駄目なんだ
105 名前:1 [2007/01/23(火) 09:27:14 ] 同じ事繰り返すんだけど、どうやったら直るかわかる? 今日はしばらくパソコン触れないのでうpしてみる まだ変数名とかプログラムはわかりにくいままですが up2moe.moe.hm/img/q480.txt
106 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 09:34:04 ] わかりやすいプログラムになったら皆見てくれるよ
107 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 09:34:15 ] 「直る」って何? どうなればいいのかも言わずに何言ってんの。
108 名前:1 [2007/01/23(火) 09:37:21 ] 直る=深く探索するです 今の時点では、強いかどうかではなく同じ探索を繰り返さないようにしたいんです
109 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 09:48:20 ] 128とか255とか、境界値のあたりがあいまいだからだよ そんなんでよく再帰がどうのとかいえるな
110 名前:デフォルトの名無しさん [2007/01/23(火) 10:00:43 ] >>1 は知った知識をむやみに口に出したがるんだな。 それがたった一部の悪い所にもかかわらず、よい部分を知ることもなく 検討もしない。 すべて自分の思い込みで、自分がいいと感じた(たまたま最初にいいと思った) 方法しか使わない。 再帰が遅いとかいって使わないし、読みにくくなるだけなのにグローバル変数乱用したがるし。 プログラムの王道はわかってないようだな。 そもそもそんな馬鹿みたいにメモリ使うプログラムが速いとは思えないが。 スラッシングで遅くなるぞ
111 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 10:04:09 ] up2moe.moe.hm/img/q482.txt 直ったよー
112 名前:デフォルトの名無しさん [2007/01/23(火) 10:20:59 ] >>111 仕事はえぇぇええええw 俺もやってたが、foreの展開までしかいけんかったww
113 名前:デフォルトの名無しさん [2007/01/23(火) 10:23:53 ] >>111 remove()とcupu()は関数にするだけじゃだめだ。ビルドしてないだろおまい
114 名前:デフォルトの名無しさん [2007/01/23(火) 10:30:20 ] リファクタしようと思ったら発狂しそうになった
115 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 10:30:23 ] マクロを展開するだけならプリプロセッサでできるね
116 名前:1 [2007/01/23(火) 10:35:34 ] うまく動かないのは、mtd()だけであとは正常動作をしていると思われます
117 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 10:36:09 ] >>111 プリプロセッサ通してコードフォーマットかけた >>113 はい、やってません。
118 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 10:43:21 ] >>117 アンカー>>112 だった。 >>113 コンパイル通した。 remove()とcupu()はとりあえずマクロに戻した。 up2moe.moe.hm/img/q483.txt
119 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:05:40 ] >>103 「でも」「とにかく」 これダメプログラマの言い訳の典型だな 大昔のFORTRANじゃあるまいし,再帰の利点が理解できないんじゃ アルゴリズムの良し悪しが云々できるレベルじゃない きちんとしたプログラミングの教育を受けてないみたいだが 取り敢えずプログラミング作法とプログラミング書法辺りは読んどけ 後,雑誌の記事とか友人から得た知識は捨てろ
120 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:08:20 ] >>119 いや・・>>103 は偽者だから・・ でも言ってることは正しい
121 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:10:42 ] も一個 プログラムの最適化に関しても勘違いがある プログラムの実行時間の90%以上はコードの極一部に集中する だからそこだけ頑張って他は読み易さ/改良のし易さを優先する 全体をインライン展開しようなんてのはアホのやること 1%も変わらん 兎に角,お前が考え出したアルゴリズムの正しさの確認が最優先だろ? そのためにプログラムにして実際に動かすんだから 正しいかどうかが分かってないうちから最適化に手間かけるたら二兎を追うものになってしまうぞ
122 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:13:22 ] >>120 そうなの?<偽者 まぁどっちでもいいや
123 名前:デフォルトの名無しさん [2007/01/23(火) 11:14:22 ] だめだこいつ new して delete してない はやく何とかしないと >>121 >正しいかどうかが分かってないうちから最適化に手間かけるたら二兎を追うものになってしまうぞ 俺もそう思う
124 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:18:12 ] >>1 にはこれを読むことをすすめておく www.pro.or.jp/~fuji/mybooks/cdiag/index.html#mokuji
125 名前:デフォルトの名無しさん [2007/01/23(火) 11:21:04 ] あとさぁ、最適化にこだわるんだったら何でC++使ってるわけ?
126 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:22:26 ] >>124 俺もそれ見たことある それに出てくる悪い例でも1のに比べたらはるかにいいと思う
127 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:24:18 ] 確かに、再帰は末尾再帰にしない限りこういう用途では使うべきではないと思う。
128 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:25:55 ] >>125 hashtable の初期化が面倒なだけじゃね?あれはC++と言ってもほとんどCだ。
129 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:26:57 ] >>127 今は(未だ)そういうレベルじゃないよ。 処で、>1の使っている糞コンパイラは配列のインデックスにcharを使っても警告出さないの? アセンブル出力見れば判るが凄く無駄なコードを出力する原因になっているんだけど。
130 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:30:53 ] 遅くても良いから動くコード書いてください 動くコードができたら、アルゴリズムを考え直しましょう アルゴリズムを考え直したら、書き直しましょう その連続です。 最適化はコンテストの直前にするものです。
131 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:44:27 ] >>前スレ1 MTDって亜流がいっぱいあるんだけど、どれを参考にしたの?
132 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:48:39 ] msu()、charの参照なんて無意味なものを引き数にしている。 serch()、何このtypo。 mtd()、ddが未使用。 adress()、xhは未初期化でアクセスされることない?
133 名前:デフォルトの名無しさん [2007/01/23(火) 11:49:07 ] void fn(char t){ char i,bnn[64]; for(i=0;i<64;i++){ if(bt[wb[t][i/8][0]][i%8]==1)printf("●"); if(bt[wb[t][i/8][1]][i%8]==1)printf("○"); else printf(" "); if(i%8==7)puts(""); //初期化しておく bnn[i]=0; if(bt[wb[t][i/8][2]][i%8]==1)bnn[wz[i]]=1; } puts(""); for(i=0;i<64;i++){ if(bnn[i]==0)printf(" "); else printf("*"); if(i%8==7)puts(""); } puts(""); } グローバル変数が何の目的で使われてるのかわからんのが多すぎ。
134 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 12:02:06 ] よーし、俺も俺も。 inline void serch(char w) { if (w == 97) { z = 97; goto EE; } 中略... z = 97; EE: ; } return; 使えよw
135 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 12:08:56 ] if (mode[tsu[1]] == 1) { mode[tsu[1]] = 0; mode[tsu[1] + 1] = 1; goto GG; } if (hash[x].a <= g) { if (g <= hash[x].b) { GG: ; if (kar[tsu[1] + 1] < 1) { if (kt == 0) { hmove(); } move(); goto BB; } } } すげぇ、ifブロックに飛び込んでる。
136 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 12:18:41 ] ちょっとロジックを追おうと思って、cupuマクロで使っているremove()マクロを見たら、 gotoしている先が別のforループの中だと知って諦めた。
137 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 12:20:40 ] これは、もう 2重以上のループからでるとき以外go toは使うなと 指導すべきタイプの人やね。
138 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 12:24:33 ] 違うよ リアルだと絶対に関わりたくないタイプの人だよ。
139 名前:1 [2007/01/23(火) 12:30:40 ] わかりやすくするために頑張ってオブジェクト指向プログラムに書き換えますよ 待ってて下さい!
140 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 12:45:11 ] とりあえず分かった範囲だけ書いてみる。 bt[a][b] 意味: a の、下から b ビット目の値 代替記法: ((a >> b) & 1) wb[t][y][c] 意味: ビット詰めされた盤面 c は色で 0:黒 1:白 2:何もおかれていない y は盤面の縦座標(0〜7) t は不明 zw[x+y*8] 意味: 座標で指定された手の優先度。ban の写し。 wz[n] 意味: nで指定された優先度の手の座標。zwの逆引き we[n] 意味: 3のn乗 ch[n] 意味: 0:黒、1:白として、色の入れ替え。もしくは論理反転。 代替記法: (1-n) F 意味: たぶん現在の手番??? zi[p] 意味: 縦座標(y)の値。 代替記法: (p/8) zj[p] 意味: 横座標(x)の値。 代替記法: (p%8) >1 は、最低限これらを全て分かりやすい名前に書き換えるべし。
141 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 12:49:23 ] >>139 待て。 俺たちが手直しするまで何もするな。 手直しが終わってからそれを元に書け。
142 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 12:51:27 ] どうしてこんなに面白いの?
143 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 13:00:43 ] >kar[0] *= (0.9 + (double)(cr / (10 * (1001)))); これ、10010で割るのは整数でいいの?
144 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 13:04:13 ] これは、ネタの傾向からみて、 引退した爺さんプログラマーがネタで ドキュソを演じてるんじゃないかなぁ
145 名前:デフォルトの名無しさん [2007/01/23(火) 13:05:43 ] >>139 余計なことすんな。 書き換えとかしなくていい。今のおまいのレベルじゃ読みやすくなる保証は皆無 どういうものを作りたいのか俺たちに教えてくれればいいんだぜ
146 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 13:26:05 ] たしかに{}の入れ具合とか、初めてにしちゃできすぎ
147 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 13:43:09 ] 一文字変数の所為もあって、ループ制御変数と一時変数の名前がぶつかっていたり、 酷いのはグローバル変数とも名前がぶつかっていたり。 取り敢えず、レガシースタイルは諦めて「使う場所での宣言」にしないとどうしようもない。 最低限、グローバル変数は一文字名前禁止だな。
148 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 13:49:12 ] >>139 lp、li、lj、ba の意味が分からないので解説頼む。
149 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 13:55:55 ] >>148 //周囲のマスとのインデックス差 char lp[8] = {1, 9, 8, 7, -1, -9, -8, -7}; //周囲のマスとの縦座標の差 char li[8] = {0, 1, 1, 1, 0, -1, -1, -1}; //周囲のマスとの横座標の差 char lj[8] = {1, 1, 0, -1, -1, -1, 0, 1}; だと思う ba ってあったっけ?banの事なら //コマのおいてあるところは1 unsigned char ban[64]= { 0, 48, 12, 4, 5, 13, 49, 1, 55, 56, 40, 32, 33, 41, 57, 50, 19, 47, 28, 20, 21, 29, 42, 14, 11, 39, 27, 64, 64, 22, 34, 6, 10, 38, 26, 64, 64, 23, 35, 7, 18, 46, 31, 25, 24, 30, 43, 15, 54, 59, 45, 37, 36, 44, 58, 51, 3, 53, 17, 9, 8, 16, 52, 2 }; この順番で着手を試すらしい。
150 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 13:57:48 ] lp[n] = li[n] * 8 + lj[n] この関係式が成り立つっぽ
151 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 13:59:54 ] あ、main()の中にbaってあったね。 よくわからん。
152 名前:1 [2007/01/23(火) 14:02:20 ] >>lp、li、lj、ba +が現在位置としてlが下の番号のときに lp(l) は、z (=8*x+y)での移動位置 li(l)、lj(l)は (x,y)座標での移動位置 567 4+0 321 baはテンポラリでbf()()を生成するときに使用 bf(番号0)(z) zに対して通常の座標を返す bf(番号1)(z) zに対して左右反転の座標を返す bf(番号2)(z) zに対して左に90度回転した座標を返すなど
153 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 14:03:41 ] >>149-150 ,152 dクス
154 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 14:10:56 ] >>1 前スレ1 MTDの解説サイト教えて。 お前が見たところ。
155 名前:1 [2007/01/23(火) 14:14:24 ] >>154 Research Re: search & Re-search www.cs.vu.nl/~aske/Papers/abstr-ks.html
156 名前:1 [2007/01/23(火) 14:16:03 ] >>154 MTD(f), a minimax algorithm faster than alpha-beta alpha-beta法の改良の1つであるMTD(f)についてのページ。 MTD(f)の他、置換表付alpha-betaの実装についても書かれています。 また、彼のPh.D ThesisであるResearch Re: search & Re-searchは 様々なゲーム木探索の手法について詳しく述べたもので、一読の価値があります。 fujitake.dip.jp/sealsoft/thell/bibliography.html
157 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 14:24:54 ] あぁこれか。 前にざっと読んだ事ある。
158 名前:1 [2007/01/23(火) 14:30:13 ] でも、使っているのはMTDサーチではないですよ >>135 の部分ですが、 a <= 予測値 <= bならば確率が残っている範囲で指し進めるモードと、 確率が残っていたら指し進めてあとでa <= 予測値 <= bのチェックを行う 2つのモードがあります 深さでは探索を終わりにはしません
159 名前:1 [2007/01/23(火) 14:34:25 ] 名付けるとMTD(f , r)サーチですかね
160 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 14:38:46 ] >名付けるとMTD(f , r)サーチですかね rは何の意味?
161 名前:1 [2007/01/23(火) 14:40:25 ] >>160 r = 局面の予測された実現確率 f = 局面の予測された評価値
162 名前:1 [2007/01/23(火) 14:43:36 ] 将棋では、大駒や金銀を取る手の実現確率の予測はしやすいという点があります
163 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 14:48:52 ] r=realizability? なるほど。 やりたいことは大体わかった。
164 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 15:53:50 ] BASICで書いた方がいいよ>>1
165 名前:デフォルトの名無しさん [2007/01/23(火) 15:54:22 ] >>1 次からコメント入れるようにしてね