|
象歩将棋
Webと将棋で何か具体的なもの作って行こうとしてます。
-
410
pon
2007/12/17 12:31
id: .T8utNC06Zk
prob: 7.3%
-
-
>15手詰めに一秒くらいだろうか。
>それはちっとレベルが低すぎ
そんなことないですよ^^
-
409
shu
2007/12/16 21:25
id: 3BVR6NRi4pQ
prob: 0.2%
-
-
ビットボード版作成中
別に悪い手は指して無いつもりなので、それなりのものは出来そう。
現在、詰将棋の先手番の詰め手抽出に1秒/百万。そんなに速くは無い。
費やしたソースはやはり1000行前後。(成りと二歩が抜けてる)
問題になる後手番を作って見れば、あらかた想像できるはず。
ビットボードを利用して良いところはロジックがすっきりするところ。
いまのところ、大雑把に予想すれば、15手詰めに一秒くらいだろうか。
それはちっとレベルが低すぎ...orz
ただこの辺は将来ハードに吸収され、二桁くらいは向上するのかも。
追記:
空き王手と二歩の処理以外は完了。
-
408
shu
2007/11/21 00:42
id: 3BVR6NRi4pQ
prob: 11.5%
-
-
酒場に入ってきた男が...
http://shogi.typepad.jp/brainstorm/2007/11/post_e9a1.html
http://web-japan.org/trends/07_tales/tal071005_j.html
たまにはこういう話も。
-
407
shu
2007/11/11 23:10
id: 3BVR6NRi4pQ
prob: 2.5%
-
-
フィクションですが
宇宙歴0x07df年4月1日ダーウィン将棋マッチを開催します。ルールは以下の通り。
; 参加希望者は自分の "代理思考モデル" を期日までuploadしてください。
; なお対戦の結果は公開されますが、思考モデルは公開されません。
このシナリオは思考モデルをプログラムと考えれば現在でも実現可能です。
ではルールを次のように置き換えたらどうなるでしょう。
; 参加者は "自分の思考モデルX" と "相手の思考モデルY" を期日までuploadしてください。
; 思考モデルX,Yは一般公開されているものを含め自由に指定することができます。
; なお対戦の結果と思考モデルは一般に公開します。
先手は自分の手番の時、自分の思考モデル AX を使い、次の手は AY を使い読みを進めます。
後手は自分の手番の時、自分の思考モデル BX を使い、次の手は BY を使い読みを進めます。
つまり A が負けたら AY を BX に置き換えて AX を教育しなおせば上達できるかもしれない。
ん〜なんかうまく説明できないなー;;
-
406
pon
2007/11/11 08:15
id: .T8utNC06Zk
prob: 0.5%
-
-
>一人将棋
同じような幼少の頃の思いです。
私の場合は一人詰め将棋と一人将棋観戦でした。(T_T)
将棋プログラムがプロを超えても、それが人を超えることにならない
このことは誤解されやすいですが、所詮、そのプログラムは一つの
ルール上で強くなるだけでそれ以上のものではないと考えればわかり
易いと思います。
一つのルール上で、ゲームの目的が勝つことであれば、下記の昔話が
語るとおりです。成長ロジックの優れたプログラムが勝つことになり
ます。プログラムが別のルールを創造ようにするためには、自然界の
乱数を入力する必要があるでしょう。
ただ、修ちゃんの言ってる意味では、長手数で勝つことや詰ませない
ことなどのパラメータを持たせればプログラム同士の面白い戦いを楽
しめそうです。^^;
-
405
shu
2007/11/07 22:46
id: 3BVR6NRi4pQ
prob: 0.0%
-
-
強いか弱いかでは無く...
僕が子供のころ回りに将棋の強い人が居なかったんですが、
将棋が好きだったのでしょうがなく一人で将棋指してたなんてことがありました。
自分が考えた手だけだと、ほんとつまらないと思いました (T_T)
> プログラムは擬似乱数しか作れない
今は各ソフトが独自に評価関数とかモデルを持ってますよね、
実際はわかりませんが、先手と後手については同じロジックで判断してる気がします。
でも将棋の解が現実的に無いとすれば、先手と後手は別人格と考えた方が自然だと思います。
乱数を持ち出さなくても組み合わせ的なそれゆえ複雑で面白い状況が実現されると云う発想です。
-
404
pon
2007/11/07 12:10
id: .T8utNC06Zk
prob: 0.2%
-
-
>後手番は誰が考えるのか?
30年ほど前になりますか、酒席で熱く語ったことがあります。
私 「コンピュータは人を越えられるかな~」
M氏「そりゃあんた、無理よ」
私 「ふーん、そんなもんかな~」
・・・以下続く
要約すると、
・プログラムを作るのは人なので、プログラムが人を超えることはない。
・プログラムは擬似乱数しか作れない。
・プログラムAがプログラムBを作ったとしても自然界の乱数を入力しない
限り、プログラムBはプログラムAを超えることはない。
程度の話だったと思います。当時、プログラムどうしがネットワークを介して
互いに知恵を付けていくようなSFが流行でした。
-
403
shu
2007/11/02 23:57
id: 3BVR6NRi4pQ
prob: 10.7%
-
-
後手番は誰が考えるのか?
二手目を考えるのは誰かってことなんですが、
指した人と同じものが考えるのじゃ面白くありませんよね。
そんな将棋はつまらん。
先手 B は後手キャラ W を内包し読みを進めるけど、実際の相手は W' なので変化が生じて予測通りにはいかない。
そして勝負の結果、B は W' を取り込むけど W' は次の対局では W" に進化してるはず。
つまり先手は (B と過去の W) を手がかりに読み、後手は (W と過去の B) をもとに対戦することが普通。
その結果を見て B と W は進化を繰り返すことになりますが、
そういう過程を実現するには B なり W のモデルが必要と云うことになります。
-
402
shu
2007/10/27 23:29
id: 3BVR6NRi4pQ
prob: 0.3%
-
-
王様はブランチ
詰将棋の手は王手かどうかの単純な判定なので、やはりビット演算が有力な手段だと思う。
玉側の手の広さなどを考えると、どうしてもビットマップで一括処理したくなる。
そして汎用ロジックを考える前に、詰将棋のような特殊なケースでの練習も必要。
試しに考えて見ることが役に立たないことは無いだろう。
-
401
shu
2007/10/26 22:41
id: 3BVR6NRi4pQ
prob: 0.8%
-
-
> お疲れ
一応まとめ (備忘録ですスマソ)
下↓は現状のプロファイル出力です
処理% (積算%) クラス::メソッド
A ----------------------------------------------------
28.41% (28.41%) CMoveList::addMove(CMoveSet&)
24.42% (52.83%) CMoveSet::getLongPath()
22.61% (75.44%) CMoveSet::getShortPath()
B ----------------------------------------------------
9.00% (84.44%) CMoveSet::setPiece(CPiece const*)
7.43% (91.87%) CTraceMove::getMoveList(CMoveList&)
C ----------------------------------------------------
8.13% (100.0%) その他
----------------------------------------------------
Aランクの処理はすべて移動可能手の抽出(CMoveSet)と保存処理(CMoveList)です。
現在バイト単位で可能手を判定してますが75%以上の時間を費やしています。
|
|