[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 15:39 / Filesize : 284 KB / Number-of Response : 966
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

おまいら最強の将棋プログラムしてみろよ part6



1 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 15:33:11 ]
できたらよろこんでやる。
前スレ
おまいら最強の将棋プログラムしてみろよ part5
pc11.2ch.net/test/read.cgi/tech/1109307327/

76 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:44:21 ]
>74
ふーん、そういうやり方でうまく行くんなら俺もまずJavaで書いておいて
C++に"移植"すると言うやり方でやってみようかな。

うさぴょんの育ての親さんのJavaで作るコンピュータ将棋の本も出てる
事だし。

77 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 00:21:50 ]
でもJAVAとかC#もJITコンパイラの進歩で思ったほど実行効率落ちないみたいだね。
homepage2.nifty.com/Fujimaki/download/Comparison/

この結果をそのまんま鵜呑みにするのも怖いけど、実際どうなんだろう。


あと、YSSのページにこんなこと書いてた。
>ban[256] その位置にある駒の駒番号
>C言語では、配列の添字に2のべき乗を使うと、内部計算がビットシフトで表現され高速化されるので、配列はすべて2のべき乗にするとよい。
www32.ocn.ne.jp/~yss/book.html
こんなテクニックは全然知らんかったわ。まだまだおれの知らない効率化の技もいっぱいあるんだろうな。
こんなふうに最善を尽くすと、やっぱりC言語との差はかなりあるんだろうか。
教えてエロい人


78 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 00:33:30 ]
そういうのはほんとはコンパイラの仕事で、賢いコンパイラは
自分で工夫してくれる(べき)ものなんじゃないかと

むしろ、そういう工夫を人がしなきゃいけないというのは
Cの大変な点といっていいのでは

79 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:35:18 ]
>>C言語では、配列の添字に2のべき乗を使うと、内部計算がビットシフトで表現され高速化されるので、配列はすべて2のべき乗にするとよい。
真っ白な鷽ですが。
x86系CPUのビットシフトが遅いのは有名な話だし、インデックス計算みたいに頻繁に出てくるコードは
コンパイラとしては腕の見せ所ですから素人が小手先で弄ったCコードよりもよっぽど効果のあるコードを出します。

まぁ、高速化の基本は実測にあるといっても過言ではありません。

80 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:41:11 ]
>>77
実行時最適化ができるVM上での動作の方が速くなることも多いよ。
だからLLVM
ttp://llvm.org/
なんかが開発されてる。将棋プログラムのような分岐の多いプログラムなら
Cで書くよりも最終的には速くなるかもしれない。

ただJavaやC#で計算が遅くなるのは配列を使うとき。要素へのアクセス全てが
範囲内かどうかチェックするから行列計算とかが入ると絶対的に遅くなる。

>C言語では、配列の添字に2のべき乗を使うと、内部計算がビットシフトで表現され高速化される

これは多次元配列だけだな。でも本当に効率化をしたいなら行単位でポインタを
指定するからあんまり意味のないテクニックだと思う。

81 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:43:02 ]
その理屈だと別に2のべき乗にしてもあまり害はないよね?誤差程度のメモリを食うだけで。
デフォルトの名無しさんのいうこととYSSの作者の言うことがちがった場合、普通はYSS作者を信じるだろうから2のべき乗で行くのが懸命だね。
もしそんなことはないっていうのなら嘘ってソースを見せて欲しい。

あと、実測は高速化の手段じゃなくて確認じゃない?

82 名前:81 mailto:sage [2007/06/09(土) 01:44:47 ]
>>81>>79へのレスね。

83 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:00:11 ]
>>80
ってことはJAVAやC#で書いて、Cで作ったDLLを呼び出すのでFA?

84 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:10:19 ]
>>82
>>79は明らかに嘘か無知が入ってるな。
286の時代ならともかく、今手に入るx86 CPUのビットシフトは基本的に1クロックのはず。
例えばAthlonのデータシート
ttp://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/22007.pdf
とかね。

でも配列のサイズを2のべき乗にする意味はあんまりないよ。
キャッシュのヒット率を上げる方が小手先のテクニックより重要だから、うまく
プリフェッチを入れてくれる賢いコンパイラの方が効率の良いコードを履いてくれる。



85 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:12:36 ]
前C#で配列の添え字チェックが入らないようにMarshalクラスを使って領域確保してから
配列のように使う改造をしたことはあるけどCには及ばなかった。
>>83
自分はそうしてる。
GUIはC#で評価関数のDLLはCで作ってる。

86 名前:80=84 mailto:sage [2007/06/09(土) 02:15:29 ]
>>81
>>79じゃないけど、簡単に分かるよ
#include <stdio.h>
#define N 63
int main( int argc, char** argv ) {
 int A[N][N][64];
 int B[N][N][64];
 int i, j, k;
 int loop;
 for ( loop = 0; loop < 1000; loop ++ ) {
  for ( i = 0; i < N; i++ ) {
   for ( j = 0; j < N; j++ ) {
    for ( k = 0; k < 64; k++ ) A[ i ][ j ][ k ] = 1;B[ i ][ j ][ k ] = 2;
   }
  }
  for ( i = 0; i < N; i++ ) {
   for ( j = 0; j < N; j++ ) {
    for ( k = 0; k < 64; k++ ) B[ i ][ j ][ k ] += A[ j ][ i ][ k ];
   }
  }
  for ( i = 0; i < N; i++ ) {
   for ( j = 0; j < N; j++ ) {
    for ( k = 0; k < 64; k++ ) B[ j ][ i ][ k ] -= A[ i ][ j ][ k ];
   }
  }
 }
 return 0;
}

87 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:17:00 ]
>>81
YSSの作者が書いた時点と今では事情も違うだろうからねぇ。
>79を信用できないなら自分で実測してみるといいよ。
コンパイルオプションはgccならgcc -O3 -funroll-loops -msse、iccならicc -fastで。
>79は自分自身も「白い嘘」である「ビットシフトが遅い」を引き合いに出しているけれど。

で、「実測は高速化の手段」とは書いていないね。「高速化の基本は実測にある」と書いているけど。
私もそれには賛成。
今までの経験で高速化されるだろうと思ったコードが実際にはそうでなかったなんてことはざら。
「○○は高速化される」なんて書いてあってもそれを鵜呑みにしちゃダメ。

88 名前:80=84=86 mailto:sage [2007/06/09(土) 02:17:28 ]
これGCCでコンパイルして実行するとNが64と63では計算回数分だけ63の方が速い。
昔気質の人の高速化手法は最近はコンパイラやCPUがやってくれちゃうからコードに書く
意味はあまりないよ。

89 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:23:50 ]
>>85
>GUIはC#で評価関数のDLLはCで作ってる。
それ超危険。
マネージドコードとアンマネージドコードの切り替えはすごいオーバーヘッドがある。

90 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:40:20 ]
>>89
じゃあ切り替え回数をなるべく少なくするように設計するべきか?
こりゃ設計するだけで一苦労だな。
やはり生産性は落ちるが何も考えずVCあたりで作るのが無難ってことか

91 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:31:21 ]
>>89
そりゃ探索はC#、葉の評価はCみたいにアホな設計の場合でそ。

92 名前:デフォルトの名無しさん [2007/06/10(日) 11:54:54 ]
>>77
山下さんの勘違いがあって、全て2のべき乗にする意味はないでしょう。
1次元配列A[x]は*(A+x)で掛け算は出てきませんし。
2次元配列でも一番左側の添字は2のべき乗にする必要はありません。

93 名前:デフォルトの名無しさん [2007/06/10(日) 12:05:05 ]
>>88
これは失礼ながら全く見当違い。
2のべき乗にするかどうかという議論はあえて余分な領域を取るかどうかという話で、
計算回数が増えるわけではありません。

94 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 14:33:56 ]
>>93
分かってますよ。
1.配列の先頭のアドレスが2^nになるとアドレスの計算が速くなるか
2.ポインタのアドレスがラインにヒットさせることを常に心がけるべきか
ってことが問題で、もう少し複雑にNを64にしても走査する範囲を63にすればいいだけです。
だから「計算回数分だけ」Nが63の方が速いと言っているので、見当違いはそちらでしょう。



95 名前:94 mailto:sage [2007/06/10(日) 14:42:37 ]
と、分かりにくいかもしれないので追記。
もし配列の要素数を2^nにするのがよいのだとしたらNが64の方が計算回数が多くても
それを覆すほどの利点があって速くなるはず、あるいは一つの計算あたりのマシンタイムは
確実に速くなるはず、という前提で言っているので、計算回数あたりの時間が同じであった
という実験の結果から、配列の要素数をどうするかは目に見える違いにはならないという
結論を導いたので、私の意図を>>93には理解してもらえてないのだろうな、ということです。

96 名前:92,93 [2007/06/10(日) 15:42:44 ]
>>95
「計算回数あたりの時間が同じであった」というのは元々は書いてありませんでしたが。
あと現在のまともなコンパイラーなら最適化によりあなたのプログラムでは配列へのアクセスに掛け算は発生しないと思います。
つまりA[i][j][k]へのアドレスの計算をいちいち
A+i*N*N+j*64+k
などとしなくてもfor (k=..)のループなら直前のアドレスをインクリメントするだけ、
for (j=..)でも64を足すだけでいいので。

将棋ではもっとランダムなアクセスになるのでこの実験では結局何も分かりません。

97 名前:92,93 [2007/06/10(日) 15:49:06 ]
どうでもいいことですが
>>A+i*N*N+j*64+k
はA+i*N*64+j*64+kですね。
86の例では。

98 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:53:45 ]
>>93
じゃあたとえばA[i][j][k]みたいな多次元配列なら、j,kは2のべき乗のほうがはやかったりするのですか?

99 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:05:28 ]
>>98
>87

100 名前:92,93 [2007/06/10(日) 23:42:53 ]
>>98
速いかどうかは環境によりますから実験してみるしかないでしょう。
私が書いたのはA[i][j][k]の場合ならiを2のべき乗にしてもシフトやかけ算と関係ない、というだけです。
まあiについてはわざわざ2のべき乗にしてもサイズが大きくなるだけ損だとは思います。


101 名前:デフォルトの名無しさん [2007/06/26(火) 21:09:07 ]
てかさ、そんな枝葉の事よりもっと重要な評価関数とか探索ルーチンとか考えてるの? >ALL

102 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:39:54 ]
探索ルーチンは多少悪くてもハードウェアの進歩でどうでもよくなる

問題は評価関数だよ
評価関数が悪ければいくら探索が速くても休むに似たりだ

じゃあ、良い評価関数とは何か?
それはプロの手を良いと感じ、ヘボの手を悪いと感じる評価関数
少なくとも、現状で手に入る簡単な指標としてはそうだ

つまりプロの棋譜を教師とする自己学習を本旨としたボナンザで
将棋プログラムは最終形を迎えたわけだ

もう将棋プログラムに費やして得るものは何もないよ
ボナンザで将棋プログラムは終わった

103 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:41:43 ]
バカキタコレ!!

104 名前:デフォルトの名無しさん [2007/06/27(水) 01:55:09 ]
>>102
全然終わってないでしょう。
実際ボナンザはすぐ切れ筋に陥ってしまうようなまだまだ弱いプログラムだし。
自己学習というのも大きな誤解。
人間が決めたパラメータを最適化しているだけ。




105 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 03:15:52 ]
>102
コンピュータ将棋ソフトを作ってる、あるいは作ろうとしている人間は
例え内心ではそういう事を思っていたとしても決して口にできないな。
口に出したら、じゃトッププロに勝てるものを作ってみせろと
言われるに決まっているから。

本気でそう思っていたら何も言わずに黙って手を引くしかないだろうが、
やっぱり本当にその手法で可能かどうか実地にやってみたくなるのが
人情ってもんだろ。

幕を引くのは自分でありたいって事だ。

106 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:40:45 ]
逆に評価関数簡素化してパワーでプロ棋士を押し切るなんともショボーンな結果になりそうな悪寒

107 名前:デフォルトの名無しさん [2007/06/28(木) 10:36:05 ]
>106
それは俺も心配。
ただ、シンプルだけどそこそこ正確な評価関数ってなんだろ?とは思うが。

108 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:02:32 ]
>>107
敵玉が詰み = +1点
自玉が詰み = -1点
持将棋成立 = 0点
先手千日手 = 0点
後手千日手 = 0点

あとはパワーでw

109 名前:デフォルトの名無しさん [2007/06/29(金) 19:19:40 ]
>108
ごめん、俺には無理。

110 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 01:32:51 ]
>72
ttp://www.fun.ac.jp/~kishi/pdf_file/kishi_mueller_is2004.pdf
# 久々に読んだけど書けるかな?

111 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 03:14:18 ]
なあ、今からC++やJavaで指し将棋ソフト作っても
あんまり変わり映えしなさそうだから、Lispで
書いてみようかと思うんだがオマイラどう思う?

Lispプログラミングを勉強がてらたがw。

112 名前:デフォルトの名無しさん [2007/07/07(土) 17:49:43 ]
hotwired.goo.ne.jp/news/technology/story/20060316301.html


113 名前:112 [2007/07/07(土) 19:40:36 ]
間違えた _| ̄|○
lyrical.bugyo.tk/

114 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 01:26:42 ]
>>111
Lispではないけど関数型言語を使っているらしいチームが
5月の選手権には何度か参加登録してる
たしかOCamlだったか…
楽しみにしてると参加取り消しだったりした
実際に出場したことがあるかは不明



115 名前:デフォルトの名無しさん [2007/07/08(日) 22:28:36 ]
>>111
別に利用するプログラミング言語で変わり映えをつけようとしなくてもいいと思うが。
弱ければ単なる色物で終わってしまう。

116 名前:111 mailto:sage [2007/07/08(日) 23:13:18 ]
>115
単なる色物にすらならない(ただの弱いソフト)よりはマシだろ?
それにあんまり良く分かってないが、アルゴリズム的にも面白い
事ができるかも知れん。Lispを相当深く理解して使えたらだけど。

117 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 23:17:20 ]
弱けりゃ何で作っても一緒

118 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 02:47:55 ]
ICOTの囲碁はESPっていう逐次論理型言語を使ってたみたいねー
www.icot.or.jp/ARCHIVE/Museum/IFS/abst/052-J.html
EPSってwikipediaによるとPrologにオブジェクト指向を取り入れたものらしいけど

>弱けりゃ何で作っても一緒
 強くないと、何か言っても説得力無いしねw
 強い=優れたアルゴリズム




119 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 02:59:48 ]
>>111
>Lispで書いてみようかと思うんだがオマイラどう思う?
 LISPでどういうやり方でやるかわからんけど、
 探索より知識の積み重ねで指そうと考えてるなら、


 ここのHIT将棋が取り組んでいる
homepage1.nifty.com/ta_ito/HIT/top.htm
 ここの研究室は、プロ棋士がどういう風に手を絞っているからを調べてて、

 はじめから2,3手に絞って、その先を確認して指すタイプとか、
 10手とかたくさんの手を検討して指すタイプとか、
 けっこういろいろなタイプに分かれるらしい。
www.webspace-jp.com/~mozu/mozuiro/moromoro/ninchi.html

120 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 11:07:03 ]
Freisinn :: 一挙公開
yashiromann.sakura.ne.jp/diary/blosxom.cgi/tron/btron/20060831bappl.htm

MPLAYER
 MPEG動画プレーヤーです。MPEG-1 および MPEG-2 に対応しています。

レコードエディタ
 任意のレコードを編集できる高機能なバイナリエディタです。

SmartPoint
 プレゼンテーション用のツールです。

アプリケーション一覧/登録/更新
 BTRONアプリケーションの登録作業を柔軟かつ楽に行うためのツール群です。

データボックス編集
 データボックスレコードをグラフィカルに編集するためのアプリケーションです。


121 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 15:09:08 ]
>120
誤爆かあるいはただの宣伝かい?

122 名前:デフォルトの名無しさん [2007/07/15(日) 23:15:41 ]
プロ棋士に勝つ方法

1.詰めろアルゴリズムを詰める。
2.必死アルゴリズムを詰める。
3.終盤の速度計算をする。
4.定跡データベースを詰める。
5.乱戦模様に誘導する。
6.NECのSX-8iを借りる。

モデルはタイガーウッズ。序盤即終盤。

123 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 00:11:53 ]
「詰める」を「詰みを読み切る」と思って意味がわからんかった

124 名前:デフォルトの名無しさん [2007/07/16(月) 13:11:18 ]
>122
SX-8iってベクトル機だよ?
今主流のコンピュータ将棋が高速に動くとは思えないが?

あと、マルチポストうぜぇ。



125 名前:デフォルトの名無しさん [2007/07/16(月) 13:12:22 ]
>122
それから、「乱戦模様」の「定跡」を作ろうって言ってる?
がんばってね。

126 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 17:45:34 ]
>122はあちこちにマルチポストしてる愉快犯だから相手にしないように。

127 名前:デフォルトの名無しさん [2007/07/16(月) 20:22:02 ]
c-au.2ch.net/test/-/mass/1183191945/i#b
c-au.2ch.net/test/-/soc/1152718893/i

128 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 12:08:43 ]
必至だなw

129 名前:デフォルトの名無しさん [2007/07/17(火) 17:46:58 ]
既に詰んでますw

130 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 20:00:07 ]
>122はPonanzaというソフトの作者の保本さんです。

131 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 09:12:15 ]
チェッカーは解かれたそうだ。
en.wikipedia.org/wiki/Draughts
www.nature.com/news/2007/070716/full/070716-13.html
www.nikkei.co.jp/news/shakai/20070720STXKE037619072007.html
駒取り合う「チェッカー」を完全解明・カナダの研究チーム
【ワシントン19日共同】市松模様の盤上で黒と赤などの丸い駒を斜めに動かし、
相手の駒を飛び越して取り合うゲーム「チェッカー」を完全解明したと、
カナダ・アルバータ大の研究チームが米科学誌サイエンス(電子版)に19日発表した。
平均50台のコンピューターを18年動かし続けて得た結論は、最善手で差し続ければ必ず引き分けになるというもの。
決して負けない対戦ソフトが可能になったが、より複雑なチェスや将棋の完全解明にはかなり時間がかかりそうだ。
チームはチェッカーの世界チャンピオンに勝つプログラムを作る目的で、1989年にチェッカーの解明に着手。
全部で5兆の1億倍通りもある駒の置き方を踏まえてシミュレーションを繰り返した結果、
お互いにミスをしなければ相手の駒が取れなくなる「引き分け」に終わることを突き止めた。(07:00)

132 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 23:39:57 ]
俺今日>>131のニュースを読んで思ったんだけど、将棋は完全解析できないけど人間相手なら無敵という物なら作れるんじゃ?
自然淘汰を取り入れた自己進化するアルゴリズム同士をスーパーコンピューターで戦わせまくれば人間より強い定石を見つけるんじゃないかな?

133 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 01:32:10 ]
>132
将棋はチェスやチェッカーと違って終盤でなかなか手の広さが収束しないんだよ。
もちろん取った駒を盤上の好きなところに打てるからだが。

おかげで終了局面からさかのぼって局面をデータベース化するのがとてつもなく難しい。
終盤データベースなしに学習させたところでそれは解全体のほんの一部の実戦例から
学習させる事になるので正しい学習をする(正しい定跡を発見する)かどうか怪しい。

134 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 06:38:01 ]
>>131
そんなのは昔から解明されていた。しかし誰も認めなかっただけの話だよ
その記事も当てにならない、科学的に示すには論理的仮説と多面的な反証
があってこそ科学として認められる、その解明とは単なる思い込みの域
にすぎない。つまり10手先を読んで模擬して解明したのと18年かけて
解明した悟ったという差にしかすぎないわけだ。



135 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 15:21:51 ]
>>134
なにに反応したのか、当たり前のこと並べて楽しいのか?
んな常識的なこといってもつまらんだけ。
コンピュータ将棋が最強なんて考えている乙君が沸いてきそうだ。


136 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:11:20 ]
>>134
では三色問題も解かれてないと主張するのですね?

137 名前:デフォルトの名無しさん [2007/07/24(火) 21:17:16 ]
>>135-136
あんまりいじめてやるな。134が哀れだろ。

138 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 21:23:06 ]
>>132
中学生さんですか?

139 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:05:40 ]
計算機の速度を考慮する場合と、計算機の速度を度外視する場合は別に考えてね

140 名前:デフォルトの名無しさん [2007/07/24(火) 22:40:01 ]
>>139
誰に対しての発言?
意味がよく分からん。


141 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 10:42:22 ]
132に一言いいたかったんじゃね

142 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 01:48:34 ]
>>132
>自然淘汰を取り入れた自己進化するアルゴリズム同士をスーパーコンピューターで戦わせまくれば
 まさにGAで対戦させて強い奴を進化させるって話じゃまいか。
 中学生ですか? は言い過ぎだよ。

 次みたいに名大の人が昔オセロでやってみてる
www.phys.cs.is.nagoya-u.ac.jp/~watanabe/swarm/garev.html

>暫定王者にのみ勝てる弱者が現れ、再び戦国の世に戻ってしまうのだ
 なかなか示唆に富んだ結果が得られている。


143 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 11:34:51 ]
将棋でやるとなると相当なマシンパワーが必要だな
アルゴリズムを進化させるアルゴリズムも作るのも大変そうだ

144 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:55:38 ]
>>143
最初は歩だけしか動かせないアルゴリズムや角だけを狂ったように使うアルゴリズムが出てきて面白そうw
でも普通の対局できるレベルになるまで何千万世代もかかるだろうね。



145 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 18:56:37 ]
いや、進化させるっていうかたまに突然変異を混ぜればいいのか
それが環境に対してダメな進化(退化)だったら淘汰されるだけか

146 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 21:01:08 ]
>>142
スパコン同士を戦わせたら何百億円もかかるから採算絶対にあわない。
実現困難な"夢"と非現実的な"夢物語"の間には大きな違いがあるよ。
132はリアルに中学生かもorz

147 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 21:17:19 ]
>>142
その結果って公知じゃないのか?
その研究はせいぜい学部生の宿題レポのレベルだし

148 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 22:10:33 ]
>146
最近はスパコンを無料で貸してくれるところがあるよ、大学で。
地球シミュレータも有償だが借りられるし、そんなに高くはない。
まあ、ベクター計算機をこういう用途には使いづらいだろうが、
超並列スカラー型なら結構使えるんじゃないかな?

何百億円もかけたら自分で好きなタイプを作れてしまうな。

149 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 22:56:51 ]
>146
これは非現実的の範疇には入らないと思うが。
「採算」の事を考えてる時点で現実的じゃん。
非現実的ってのはもっと、今後どんだけ科学が発展しても無理!ってものの事を言わないか?

150 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 23:07:11 ]
んなこたーない
>>146のでも非現実的といえる

151 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 23:22:32 ]
最強のとか言ってる時点で現実的じゃないような気もするけど。
理論的な最強を目指しているのか?現時点での暫定的な最強を作りたいのか?
前提が定まっていないような

152 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 23:25:03 ]
>>151
自分は当面目指すのは後者だと思ってる

153 名前:デフォルトの名無しさん [2007/07/27(金) 00:00:00 ]
人間破ったらそれでいいんだ
まずはコンピュータの頂点を目指す

154 名前:デフォルトの名無しさん [2007/07/27(金) 02:13:59 ]
>>142
リンク先を見た。オマオレ、と思った。
俺も中高生の頃こんな感じで大学入ってから忙しくて中断
した口。でもこの人の学習手法はGAに成ってない。
交差と突然変異が無きゃ駄目だし、実際問題として
純粋な弱肉強食だと、変な局所最適にすぐ陥ってしまう
ので、ヘボい遺伝子も少し残さないといけない。
その加減が難しいんだけど。

>>151
上のチェッカーにも有るように「全探索」してしまえば
間違いなく最強だろ。
NP完全問題の全探索は絶望的に大変だが、チェッカーや
6x6オセロくらいまでなら実現してる。ガンガレ。




155 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 03:59:16 ]
>154
「ガンガレ」って誰に言ってるのか知らんが、将棋の全探索は無理だろう?
いくらなんでも現状では。

量子コンピュータが実現するとか、ものすごい理論でも発明?されない限り。

156 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 04:14:32 ]
全探索というゴールが存在するという事実は重要じゃないか?
あとはそれにどこまで近付けるか、あるいは到達するか

157 名前:デフォルトの名無しさん [2007/07/27(金) 12:45:10 ]
>>155
量子コンピュータができれば、将棋の必勝解を一瞬で計算できます。
時間など不要です。
なぜなら量子コンピュータは手順という概念を組み立てる方法では計算しないからです。

将棋というルールを因数分解して必勝という答えを導きだす。
その計算された手順を取り出す(現状は取り出せない)。
量子演算は無限の並列計算ですから無限の計算ができることになります。

みなさんも量子コンピュータを応援しましょう。

158 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:51:25 ]
応援なんかよりアルゴリズム考えろよ

159 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 13:28:58 ]
>>157
量子コンピューターでもNP問題を解くのは難しいって何かで読んだ、
チェスなら>>157に書いてあるように完全解析できるだろうけど将棋はどうなんだろう?
そもそも将棋は全探索できる数学的証明がないと分からん。

160 名前:デフォルトの名無しさん [2007/07/27(金) 13:36:26 ]
>>159
チェスは無限に続くかもしれんが、将棋は同一局面3回出たら引き分け

161 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 13:36:47 ]
順番からいって次はオセロだろう
いやまぁ自分は量子コンピュータのことよくわかってないんだけどね

162 名前:デフォルトの名無しさん [2007/07/27(金) 13:39:56 ]
単純にいって、駒は8種類で成りを加えて、14通り
合計40枚だが、それを考慮しないことにして
高々配置可能な種類は15の81乗程度

163 名前:デフォルトの名無しさん [2007/07/27(金) 13:41:40 ]
敵味方を忘れた 将棋の可能な配置パターンは29の81乗以下
それすべてに、勝ち負けを設定すれば将棋は完全に溶けた

164 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 13:46:38 ]
配置可能なパターンはそれだけでも
次の手番がどっちかとか何回目に出た局面かで勝ち負け引き分け変わるでしょ。



165 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:11:41 ]
>>164
素人考えだけど、手番はともかく、何回目に出た局面かは
必要ないんじゃないかな?だって最強のもの同士が闘っているのだから、
その局面が出た瞬間に、これは無限ループ=千日手と解るはずだから。

166 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:59:13 ]
んぁ〜、あつはなついなぁ〜

167 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 15:13:50 ]
手番は2通りしか無いんだし、2通り作ればいいだけだな。

168 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 15:20:30 ]
>>165
そういえばそうだった

169 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 15:26:39 ]
>>163
それだと一秒間に一兆パターン調べても終わらないいんだがw
何で今更そんな議論を

170 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 15:27:13 ]
>>166
そういえばそうだった

171 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 17:11:57 ]
>>160
チェスにも同じルールがあるよ、次に完全解析されるゲームはダイヤモンドゲームじゃ無いかと予想
最後まで解けないのは囲碁。

172 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 20:53:10 ]
同じ局面が3回というのはルールだろうけど、それを記録できなければ
無限に終わらない罠。記録できてこそ3回一致を判定できる罠。


173 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 22:07:54 ]
>>171
囲碁はもう解けてるだろ
先手必勝

174 名前:デフォルトの名無しさん [2007/07/27(金) 22:13:05 ]
>>173
あれ、囲碁って先手の6目(7目?)勝ちって解明されたんだっけか?
教えてクンですまん。



175 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 22:34:40 ]
>>174
囲碁も将棋同様に解かれてないよ。
囲碁は人間モンテカルロ法で先手有利のような結果が出てるだけで。
ちなみにオセロでも同様な方法だったら後手有利のような結果が出る。
しかしちゃんと最善'候補'のゲーム木を構築したら引き分けの可能性が高いという結果が出る。

176 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 22:50:42 ]
オセロって完璧に全手解明されてなかったっけ?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<284KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef