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
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 次からコメント入れるようにしてね
166 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 16:17:21 ] >>164 >>165 1にそういうことを言っても無駄だと思う。 なぜそうした方がいいのかを何とかして理解させる必要がある。 自分が間違っていると思わない限り、1はいつまでも我が道を行くだろう。
167 名前:デフォルトの名無しさん [2007/01/23(火) 16:17:40 ] >>163 に期待
168 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 16:22:49 ] そもそも2chでスキルもない癖に自分専用スレを平気で立てる時点でもうアウト
169 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 19:12:34 ] 優れた人は何も言わずにモノだけ出すからな スレ立てて騒ぐ奴に限ってろくなものを出さない
170 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 22:25:03 ] 1は人の意見を真摯に聞くべき。 煽りじゃないよ。 会社でも1人で突っ張ってんの? これが正しいんですとか言ってたらだめだよ。
171 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 22:25:59 ] >>139 わかりやすくするんなら、オブジェクト指向じゃなくて構わないので 関数の分割と、変数名の変更と、利用すべきところでの再帰の利用 をして欲しい。
172 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 22:28:14 ] ヒント:オブジェクト指向だと遅いw
173 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 22:33:41 ] >>170 ヒント 小学生
174 名前:デフォルトの名無しさん [2007/01/23(火) 22:36:12 ] >>172 ヒント:覚えたての知識をひけらかしたい
175 名前:初心者 mailto:sage [2007/01/23(火) 22:42:27 ] if (mode[tsu[1]] == 1) { mode[tsu[1]] = 0; mode[tsu[1] + 1] = 1; funcA(); } else if (hash[x].a <= g && g <= hash[x].b) { funcA(); } funcA() { if (kar[tsu[1] + 1] < 1 && kt == 0) hmove();} move(); goto BB//糞; }
176 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 23:29:38 ] 最適化とかは動くものができてからの話なわけで
177 名前:デフォルトの名無しさん [2007/01/23(火) 23:40:35 ] >>176 >>1 は質の高いアルゴリズムによる高速化と、最適化による高速化がごっちゃになっているのかもしれない
178 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 00:04:10 ] ここまで来るとただの馬鹿だな 根拠の無い自信でつっぱねるだろうが
179 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 00:36:33 ] 配列の先頭とそれ以外で用途が違うから読みにくい
180 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 01:14:36 ] >>1 さん 俺は弱いリバーシしか作ったことないけれど、 実現確率が正確に求まるとは到底思えない。矛盾してないかい。 自分的には確率使うなら囲碁のモンテカルロ法とかのが ずっと良さそうな気がする。 ttp://www.geocities.jp/hideki_katoh/ (加藤さんの翻訳)
181 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 01:59:10 ] >>前スレ1 お願いだから将棋に帰ってください。 これ以上リバーシを冒涜しないでください。 pc10.2ch.net/test/read.cgi/tech/1109307327/
182 名前:1 [2007/01/24(水) 02:35:27 ] まだ、人の意見を取り入れられるところまで行ってないんです 根本的にまともに動作してないのに、体裁だけ整えてあとは他人に任せるとかは駄目でしょ? まともに動作したらより良くするために意見をどんどん取り入れますよ >>175 if (hash[x].a <= g && g <= hash[x].b) は、ifを分割した方が速度が出るとおもいますよ >>180 実現確率を正確に求めてないんです 評価値順に手を並び替えて一手目50%、二手目25%とか半分づつにしているんです 評価値の高いものを深く読むということに使っているんです
183 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:40:18 ] 速度が出るとおもうじゃなくて 実際出るかどうかだろ?
184 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:43:39 ] >実現確率 >一手目50%、二手目25% 適当にこんな数字決めてないでMPC使えばいいじゃん
185 名前:1 [2007/01/24(水) 02:44:27 ] >>183 if(A) if(B) { C; }の方が、if(A && B) { C; }より演算数が少なくなるため 速いおもいますが 実際にはやっていませんが...どうなんでしょうか?
186 名前:1 [2007/01/24(水) 02:47:05 ] MPCとはなんですか?
187 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:49:12 ] >>185 www.st.rim.or.jp/~phinloda/cqa/cqa7.html
188 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:50:07 ] >>186 www.cs.ualberta.ca/~mburo/publications.html
189 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:53:01 ] 前も同じリンク教えたのに読んでなかったのかよ
190 名前:デフォルトの名無しさん [2007/01/24(水) 02:53:35 ] 今の段階でアドバイスしてる多くは、より良い動作を実現させるための助言じゃなくて、 まず動かすための、プログラムを見易くするためのアドバイスが多いと思うんだけど、 まともに動かせるように助言してくれてるのに、あえて無視してるのか?まぁなんてことでしょう!
191 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:55:13 ] >if(A) if(B) { C; }の方が、if(A && B) { C; }より演算数が少なくなるため >速いおもいますが 実際にはやっていませんが...どうなんでしょうか? そう思うのは勝手ですが、そんなゴミを垂れ流さないでください。 A && B と書いたとき、Aが偽だとBは評価されません。 つまり、 A && B はif (A) B と概ね等価になります。 >187のリンク先の下の方を参照してください。
192 名前:デフォルトの名無しさん [2007/01/24(水) 02:59:14 ] コンパイラの最適化でもそういうとこってうまいことやってくれるんでしょ?
193 名前:1 [2007/01/24(水) 03:00:51 ] >>188 ありがとう読んでみます ifはわからないのでrand()を使って実験してみる
194 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 03:01:21 ] 取り敢えずのゴールは 「>>1 の考えるアルゴリズム積んだリバーシを動かすこと」 (WZebraを倒すとかは取り敢えず後回し) 「アルゴリズムは完成した」 (前スレ>>190 での、>>1 の発言) 「考えているアルゴリズムに変更の余地はない。その動作を正確に実現するコードを作るだけ」 (前スレ>>806 での、>>1 の発言) 現状として、 >>1 はコーディングが出来ない (または、限りなく下手) そして、このスレには>>1 のアルゴリズムは知らないが、コーディングを出来る人が揃っている。 何故>>1 が 「アルゴリズムの概念だけを公開して、コーディングは他人に任せよう」 と思いつかないのか、そしてそれを指摘されても無視し続けるのか、理解出来ない。 (←以前誰かが指摘してた気がする 「数学やってる」っていってるくせに、三段論法とか知らないのかな? まあ論理学出来てる人にも見えないが……
195 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 03:41:36 ] >>185 てきとーに測定してみた。 a=0, b=0: if(a && b): 1.0 clocks, if(a) if(b): 1.0 clocks a=0, b=1: if(a && b): 1.0 clocks, if(a) if(b): 1.0 clocks a=1, b=0: if(a && b): 2.0 clocks, if(a) if(b): 2.0 clocks a=1, b=1: if(a && b): 4.0 clocks, if(a) if(b): 4.0 clocks どっちも同じだね。
196 名前:1 [2007/01/24(水) 03:59:40 ] もしかしたらまとめた方が速いかも.... 実験では同速度だったけど 分岐予測を当てやすくさせるためにはまとめた方がよさそう
197 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 04:10:28 ] バグ取りを先にやれよ バグを含んだまま機能の追加変更すんな
198 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 04:13:03 ] やるなと言えばやる やれと言えばやらない どうしようもないな
199 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 07:46:01 ] 一応幾つかの関数はリファクタリングしてすっきりしたのだが、 mtd()がどうにもならなすぎるのでもう飽きた。 せめてループ制御変数を使い回すのを何とかしないとデバッグどころじゃないぞ、と。
200 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 07:50:09 ] 確かに そろそろ飽きてきてるかな…… クマー
201 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 09:38:10 ] iやjをループ変数意外で使ってる
202 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 09:39:12 ] ×意外 ○以外
203 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 09:49:42 ] for(i=0;i<125;i++){ 中略 } if(i==126){ ここは実行されることがあるのか }
204 名前:デフォルトの名無しさん [2007/01/24(水) 09:51:57 ] >>198 韓国人だなww
205 名前:デフォルトの名無しさん [2007/01/24(水) 09:52:50 ] >>203 wwwwwwwwwww
206 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 09:58:56 ] 未だに最適化を理解しない>>1 そんなにスピードが気になるならC++なんぞ使うんじゃない
207 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 10:07:30 ] >>105 これ動かなくね? 延々と 「実現確率=0.50000 count=1 手数=4 指し手=19 読み深さ=0 予想値=0 a=65 b=65」が繰り返されてる
208 名前:207 mailto:sage [2007/01/24(水) 10:10:33 ] 実現確率の出力のところをコメントアウトすればいいのね
209 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 10:18:05 ] >>1 はアルゴリズムを人にわかるように説明できないんだろ
210 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 10:21:11 ] >>116 > うまく動かないのは、mtd()だけであとは正常動作をしていると思われます mtd()だけって…>>1 のソースの大半はmtd()関数だろ。
211 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 10:59:36 ] 言い方がどれもうけるw ヘボさが見え隠れしてるw
212 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 11:11:30 ] MTDをちゃんと理解してないからmtd()のバグがなくならないんでしょ。 プログラムに知識のダメ出しをされてるんだよ。
213 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 11:25:46 ] >>180 モンテカルロ法は囲碁には適用できるが、リバーシには適当とは言えないよ
214 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 11:46:54 ] オセロの評価関数はパターン評価を基本にして、 着手可能箇所数とか偶奇性とかその他独自のフィーチャーを加えて 教師あり学習をさせるのがいい。 探索はPVSとかMTD(f)あたりで置換表やMPCを併用する。
215 名前:デフォルトの名無しさん [2007/01/24(水) 12:07:24 ] プログラムの手伝いしたいんだけど、オセロのアルゴリズムとかあんま知らないから >>1 がどんなことやろうとしてるのかまったくわかんないし、そのせいでソースも読めないんだよな。 minmax法とかαβ法くらいなら理解できるんだけど、英語の論文とかまったく知識ないから理解できない。 ちょっとでもかじってればわかるんだろうけど。
216 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 12:14:52 ] minmax法やαβ法がわかってれば次はNullWindowSearchを理解すればいいね ray.sakura.ne.jp/search_problem/null_window.html その先はそれほど大きな違いは無いよ