- コンピュータオセロ総合スレッド
977 :名無し名人[]:2014/11/05(水) 21:41:40.36 ID:U+cOOrHa - >>974
説明ありがとうございます。 一言でいえば「差分方式ボードの単純アルファベータ」ですね。 mzがmoveでuzがunmoveだったんだ^^; 自分は最初ボードの実装を複製方式にしていて、 スピードに問題意識を持つようになって差分方式に変えたんですが、 素人が普通に「オセロでもつくるか!」と始めるとまず複製方式になると思うので、 差分方式にしてる時点でそれなりに玄人ですよね。 昔の発言でたしか「適当につくった」と言ってて、 せめて適当なプログラムと同程度にしなきゃ、と思ってましたが、 経験者が正しい方針で作った無駄がないプログラムだったわけですね。 自分のプログラムは今のところ無駄だらけなので、 やればやるだけ改善していくという感じですw
|
- コンピュータオセロ総合スレッド
978 :名無し名人[]:2014/11/05(水) 22:07:52.69 ID:U+cOOrHa - >949
>全方向を探索 探索方向の最適化を最優先にしていないのは >>907プログラムであまり効果がでていないということの他に、 自分のプログラムはボードサイズ8に限定して考えていない、 ということも挙げられます。 949さんはおそらくソースしか落とされてないんだと思いますが、 自分のプログラムのGUIを含めたバイナリが>>908にあります(現在は色々変わってますが)。 ボードサイズ8限定ならば>>907の実装のようなことができますが、 一般化すると領域の不等式を作って条件の判定とかが必要となってきます。 色々と考えなきゃいけないことがあるので後回しにしてる、って感じです^^; >特にガベコレが走る限り、 GCが起動すると確かにその瞬間遅くなりますよね。 でもFFO#40のテスト程度では起動してないと思いますよ。 >なのでC#の実力ということで割り切って、 >もうC++に移行した方が早いかと思います^^; 自分の経緯は オセロを作ろう→言語は何がいいかな?→C#にしよう! ではなくて、 C#を勉強しよう→題材は何がいいかな?→オセロをつくろう! なので、C#から離れるというのはちょっとw 一通り勉強した感じ、C#は可読性と生産性の高い良い言語ですよ。 高速性に関しては、今、真偽を見極めています^^;
|
- コンピュータオセロ総合スレッド
979 :名無し名人[]:2014/11/05(水) 22:35:48.14 ID:U+cOOrHa - >949
>全部展開したら100万回ループで3秒かかっていたのに >700ミリ秒くらいにはなりました。 すごいですね!4〜5倍ぐらい速くなったってことですね!! FFO#40では何秒になったんでしょうか? >List<Position>などの可変長配列を全てint[]に置き換えて、 List<Position>で定義してるのは emptyPositions reversedPositions movablePositions だと思いますが、それぞれ配列の要素数はいくつに設定しましたか? emptyPositions:60(size^2-4)かな? reversedPositions:米印的に考えると4*sizeとかですかね? movablePositions:何も考えないと60ですが・・・ >VC#のコンパイラってインライン展開はしてくれないんでしたっけ?^^; ちょっと調べたらこんなん出てきました http://www.dotnetperls.com/aggressiveinlining 自分もこれから試してみようと思います。 >あとboard.Unmoveもかなりネックになっていそうですが、構造上いじると >かなり大規模な修正になるので諦めてます。 どの辺がネックになってそうですかね? 着手情報としてインデックス+配列はまずいですかね? 実際はスタックの振る舞いをしてるんですが・・・。
|