おまいら最強の将棋プログラムしてみろよ part6at TECH
おまいら最強の将棋プログラムしてみろよ part6 - 暇つぶし2ch503:デフォルトの名無しさん
07/10/23 00:00:10
>500-501
人間のトッププロにはなかなか勝てない(全体的な実力では上回れない)
からこそ、そういう戦略に価値があるのでは?

例えばコンピュータ将棋は詰みのある局面でそれを発見するのが
やたら速いが、相手(人間)もそうだと仮定していたらその利点は
あまりうまく生かせずに>498の挙げたような状況に陥るかも知れない。
詰みを正確に速く見つける能力がむしろ弱みになってしまう。

>502
特定の相手の指し方を事前にじっくり研究していたらどうかな?
たとえば対渡辺竜王を想定して。

ディープブルーも実はカスパロフの指し手を事前にたっぷり研究して
相手の指し方のモデルを持ってたと言う話だし。

504:デフォルトの名無しさん
07/10/23 00:08:06
>>503
個人的には、そういう方向性が好きなのだが、
こと「プロに勝つ」という目的においては、>>500が正しいと思う。
というか>>503の方法でプロに勝つには、とてつもないプログラム技術と
ハードウエア能力が必要になって現実的でない。

プロに勝つというのは、ほっといても100年後には達成できるけど、
楽しめる、指導してくれる、というコンピュータ将棋が今後の課題やね。

505:デフォルトの名無しさん
07/10/23 00:25:15
>504
その考えが甘いとしたら。

つまりコンピュータが人間のトッププロより圧倒的に強くなると言う事は
相手がどんな指し手で来てもそれに対して正しく応手できると言う事だが
将棋と言うゲームがそう御しやすいもので無いとしたら厄介だぞ。

その可能性は多いにある……と俺は思う。

それよりは対戦相手のモデルを持っておいて相手の思考の癖(隙)を突いて
序盤からジワジワ優位を築いて行く方がまだ望みがありそうに思える。
確かにセコイ方法だけどなw。

506:デフォルトの名無しさん
07/10/23 00:57:32
>>505
確かに俺の考えが絶対に正しいとは言えないが、
相手モデルとかでプロに勝てるなどというのは
とんでもなく甘い考えだと思う。

>>505がセコイ方法だとは全く思わない。
実現できたら本当に素晴らしいが、実現が難しすぎる。

507:デフォルトの名無しさん
07/10/23 02:07:42
{41, 85, 45, 12, 02, 77, ・・・}  (これがひとつのデータです) という可変長データが複数あるとします
これらを効率よくメモリに記録するにはどうしたらいいですか?

508:デフォルトの名無しさん
07/10/23 02:08:36
場所まちがえました すみません

509:デフォルトの名無しさん
07/10/23 03:07:52
あんまりセコクない対人戦略だと、
短時間の勝負ほどコンピュータ有利であることを考えて
時間攻めがいいんじゃないかな?

極端な例だと、80台パソコンを連結して並列に先読みさせる。
可能な相手の指し手が80ある局面なら、人間の思考時間に全部考えて、
ほぼノータイムで指すこともできるはず。
そうされると持ち時間2時間でも、正味1時間位に感じるんじゃないかと。

あるいは、"少しよくなるけど局面を単純化する手"より
"よくもわるくもならないけど局面を複雑化する手"を優先する方針にする。
そうすると選択肢が多くなり、人間側の読み筋から外れる率が高くなる。

人間の場合かなり前から現在の局面のことを考えているので、
先読みを空振りさせた場合の負担は、コンピュータよりずっと重いはず。
一から考え直すことになって、かなり苦しくなるじゃないかな。

510:デフォルトの名無しさん
07/10/23 10:16:44
竜王と対戦したボナンザも、予測読みが当たればノータイムで指した。
また、ボナンザは人間なら早期に枝刈りしてしまう手を指すこともあったので
読みを空振りさせるという点でもそれなりにできていた。
80台のパソコンというリソースがあるなら、普通にやらせても強くなるから
下手な小細工では意味がないということになると思う。

いや、、アイデアを否定してばかりであれだが、
実際そういうアイデア自体は貴重だし、生かしていくべきだと思う。
ただ、それはすごく難しい(だからこそ素晴らしい)と言いたかった。

511:デフォルトの名無しさん
07/10/23 10:27:47
相手の指しやすい手から調べるのはかなり有効な手法だよ プロの棋譜、定跡を使うのはその為
個人に限定してもよい

512:デフォルトの名無しさん
07/10/23 19:25:07
>>510
持ち時間1時間として
コンピューターが3回に1回ノータイムでも、1時間つかいきれば
人間側の思考時間は、自分の持ち時間と合わせて2時間ある
コンピューターが全部ノータイムの超早指すると
人間側の思考時間は、自分の持ち時間の1時間しかない
読みを空振りさせる回数が3回位増えると
1回あたり数分位とられるから10分くらい損する
ぜんぜん違うと思うんですが‥

結局、80台を良い手を捜すためにつかっても、2割位しか
最前手が変わらないなら、時間攻めで人間が間違うのに
かけた方がお得なように思うわけで

実際、複数台での並列先読みや、局面の複雑度を測ったりするのは、
相手の指し手の傾向をつかむより遥かに容易じゃない?
自分のプログラムはまだ弱いのでそんな段階ではないけど。
誰か人柱にならないかなあ。


513:デフォルトの名無しさん
07/10/23 20:42:31
台数が80倍になると、一般的に思考時間を9倍にしたくらいの強さになる。
つまり、思考時間:1分、強さ:1台9分相当を選択するか、
思考時間:0分、強さ:1台1分相当を選択するかという問題になる。
(人間が常に同じ時間を消費するという前提)

コンピュータよりも人間の方が持ち時間の価値が高いことを利用するわけだ。
悪い手は切り捨てて愚直に80手読まないようにするなどの工夫もできる。
そうなると普通の予測読みとの境界がぼやけてくる。
俺は、通常の予測読みがいいと思う。俺も実測してないのでこれしか言えない。

514:デフォルトの名無しさん
07/11/01 23:44:59
あの自演犬やってないと言い張ればいいと思ってるな
バレてないと思ってるのは自分だけだぞw


515:デフォルトの名無しさん
07/11/15 01:22:32
ああ?おお?

516:デフォルトの名無しさん
07/11/18 00:48:45
ボナンザVS勝負脳―最強将棋ソフトは人間を超えるか
URLリンク(www.amazon.co.jp)

517:デフォルトの名無しさん
07/12/04 04:01:56
将棋のプログラム作っている人の開発環境が気になります。
VC6++っていうのは古いでしょうか?

518:デフォルトの名無しさん
07/12/04 08:18:42
将棋ならコンパイラやIDEは関係ないと思うが、
VC2005EEがある今、VC6を使う理由がない。

519:デフォルトの名無しさん
07/12/04 08:33:00
VC++6は軽い

520:デフォルトの名無しさん
07/12/04 09:39:10
VC++6ってインテリセンスのだいぶ貧弱だったような

521:デフォルトの名無しさん
07/12/04 19:52:33
まぁ、x64がコンパイルの出来ないでいいならVC++6でいいんじゃね。

522:デフォルトの名無しさん
07/12/04 23:33:57
>>518-521
みなさんどうもありがとうございます。
VC++6でもよさそうですね。

523:デフォルトの名無しさん
07/12/05 01:05:57
VC++6はバグが多くて嫌

524:デフォルトの名無しさん
07/12/05 11:00:20
つーか、>518を読んでどうしてそういう結論になるのか判らん。
まぁ、VS6の正規ユーザで尚且つ時代遅れのPCを使っているというなら止めないが。

525:デフォルトの名無しさん
07/12/07 00:45:10
VC6は2004にバージョンアップ版が出ている
新しいVistaつかうより、バージョンアップされたXPの方がいいということもある

526:デフォルトの名無しさん
07/12/07 10:48:37
仕事じゃなければ好きなのを使えばどれでもいいさ

527:デフォルトの名無しさん
07/12/07 12:17:57
VC6なぜか人気あるが自分の経験から言うとあまり印象よくないな。
特に付属のSTLかなりバグがあってひどかった。


528:デフォルトの名無しさん
07/12/08 00:17:48
今となってはかなり古いコンパイラだから
テンプレートのサポートが微妙だったりするけど
自分の使い方では2003よりもよかったよ
インストール早いし、起動軽いし

STLはSTLPORTいれて使うもんだと思ってる。

そんな私も2005に移行しましたが。

529:デフォルトの名無しさん
07/12/14 14:21:23
VC6の怖いとこは
一見するとコンパイル通って正常に動作しているようでも
トンデモな解釈をコンパイラがしている箇所があったはず。

std::cout << typeid(1.0F==1.0F).name() << std::endl;
std::cout << typeid(1==1).name() << std::endl;

仕事だからVC6とかいう発想は
無責任もいいとこ。

まともなコンパイラの機能テストをしていれば
Noob以外はそのような発想はしないでしょう。


530:デフォルトの名無しさん
07/12/16 18:57:57
ぼ、Borland C++ Builderは? いいの?

531:デフォルトの名無しさん
07/12/22 11:59:41
USIプロトコルの info コマンドって、minmax探索に偏ってるね。
MC+UCTだと info string ばっかになりそう。
もうちょっと融通利かせないとUSIプロトコル使う意味なす…

532:デフォルトの名無しさん
07/12/23 11:08:28
>>531
setifnomenuコマンドなんてのが必要かもね。

533:デフォルトの名無しさん
07/12/23 11:12:16
setinfomenuだった。

534:デフォルトの名無しさん
07/12/23 23:38:23
info pvで「最後のモンテカルロシミュレーションの手順」でも送ってやればいいんじゃね。
GUIがちゃんと対応出来るかどうかは知らん。

535:デフォルトの名無しさん
08/01/08 01:29:44
最強じゃなくてもいいからだれか大局将棋実装しておくれw

536:デフォルトの名無しさん
08/01/08 19:45:25
やるからには最強を目指す!
ところで大局将棋ってナニ?

537:デフォルトの名無しさん
08/01/08 20:11:06
URLリンク(taikyokushogi.hp.infoseek.co.jp)

538:デフォルトの名無しさん
08/01/08 21:05:25
URLリンク(www.chushogi-renmei.com)
やる気しねえw

539:デフォルトの名無しさん
08/01/08 22:32:19
ごめん、やっぱムリ。
てか、駒の動かし方全部把握してるヤツ居るのか、これ?

540:デフォルトの名無しさん
08/01/09 00:20:09
仮に把握できたとしても、動かす気になれねぇ。

541:デフォルトの名無しさん
08/01/09 03:23:18
URLリンク(taikyokushogi.hp.infoseek.co.jp)
>>537のサイトに駒の説明があるけど

ページなげえw

542:デフォルトの名無しさん
08/01/09 03:50:51
スレリンク(bgame板)
最長テンプレだと聞いた。

543:デフォルトの名無しさん
08/01/09 05:23:40
スレを立てるたびに貼る必要はあるのか…
最長の地位を保つための儀式なのか…

544:デフォルトの名無しさん
08/01/09 07:43:19
こんなのランダムに動かしてれば人間の方が飽きて投了するだろw

545:デフォルトの名無しさん
08/01/09 14:41:35
大局将棋はゲーム性が低いな

546:デフォルトの名無しさん
08/01/12 19:35:41
ゲームと言うより占いの儀式みたいなものだったって聞いたような気がした(うろ覚え)。

547:デフォルトの名無しさん
08/01/13 11:05:39
>>537
テレビ番組で、プロ棋士同士が対局してたな
駒の動かし方は本を見ながら確認してたw
1日では勝負がつかず、3日くらいかけていたと思った

548:デフォルトの名無しさん
08/01/13 11:27:29
トリビアだな

549:デフォルトの名無しさん
08/01/13 12:28:25
森羅万象棋作ろうぜ

550:デフォルトの名無しさん
08/01/13 13:31:07
「バーサーカーソウル!」

551:デフォルトの名無しさん
08/01/13 17:43:31
市販の将棋強すぎだろ。なんか将棋もプログラミングもやる気ナクナタ・・・

552:デフォルトの名無しさん
08/01/13 18:23:59
おまいが弱いだけ

553:デフォルトの名無しさん
08/01/13 21:01:55
前回のGA見てみろ。やる気沸くぞ。

554:デフォルトの名無しさん
08/01/17 07:02:17
もっとこのスレ盛りageようぜ

555:デフォルトの名無しさん
08/01/19 02:12:54
【訃報】チェス元世界王者、ボビー・フィッシャーさん死去 64歳
スレリンク(newsplus板)

556:デフォルトの名無しさん
08/01/20 14:49:16
C言語でやってる人いる?
C++の方がいいのかな?


557:デフォルトの名無しさん
08/01/20 14:56:43
C++の方がいい
部分的にC言語やアセンブラも使える

558:デフォルトの名無しさん
08/01/27 14:07:14
スレッド使ってますか?

559:デフォルトの名無しさん
08/01/28 16:28:29
使ってますがなにか?

560:デフォルトの名無しさん
08/01/28 17:11:16
もう、ブルージーンで最強のチェスプログラムできちゃったので将棋プログラムは興味ないわ

561:デフォルトの名無しさん
08/01/28 18:20:44
門外漢がよーいうわ

562:デフォルトの名無しさん
08/01/28 19:46:33
作ってる人近況報告してよ

563:デフォルトの名無しさん
08/01/28 20:34:23
強化学習してる。死にそう。

564:デフォルトの名無しさん
08/01/28 20:45:55
いちから作り直してる。

565:563
08/01/28 21:01:55
>>564
ばかやろう、俺なんてマイナスからの出発だぞ。

566:564
08/01/28 21:16:24
>>565
なんだよ、マイナスってw

以下、マジレス。
おとといのUSIエンジンの登場でモチベーションがかなり上昇した。
弱くても、勝てなくても、笑われても、それでもいいからとにかく形にすることに決めたよ。

567:デフォルトの名無しさん
08/01/28 22:13:56
>>566
ランダムざしに負けるのがマイナスじゃね?

568:デフォルトの名無しさん
08/01/28 23:16:28
俺も強化学習やってる
俺よりは強いんだが・・・

569:563
08/01/28 23:20:41
パソコンぶっ壊れたから修理するところから。
あと、部屋が汚くてどこに本があるか分からないから掃除するところから。

>>567
負けそうだから怖い。

570:デフォルトの名無しさん
08/01/28 23:21:31
>>568
出現頻度の低いパラメータって学習が遅くね?
なんか対策考えないとなぁ。

571:デフォルトの名無しさん
08/01/28 23:32:52
>>570
自分は出現頻度が低いパラメータは保持したまま
別のパラメータが変わるような局面に分岐させたりしてる
ちなみに効果の程は測ってないけど

572:デフォルトの名無しさん
08/01/28 23:45:18
7五玉で投了

573:デフォルトの名無しさん
08/01/29 19:40:24
>>571
なるほど、賢いなぁ。
俺は猿だから対局数でごまかそうかなっと。

574:デフォルトの名無しさん
08/02/05 20:51:11
れさライブラリ使ってる人いる?

575:デフォルトの名無しさん
08/02/07 15:10:40
あの! Delphiで将棋作るとC++より速度遅いですか?

576:デフォルトの名無しさん
08/02/07 16:07:46
ボーランド製品ならどう速度だろ

577:デフォルトの名無しさん
08/02/07 16:13:51
あの! Delphiで将棋作るとVisual C++より速度遅いですか?

578:デフォルトの名無しさん
08/02/07 16:16:26
最適化や個人の技術によるが同程度ならVCの勝ち

579:デフォルトの名無しさん
08/02/09 21:48:35
あの! Delphiでインラインアセンブラだけで将棋作るとC++より速度遅いですか?

580:デフォルトの名無しさん
08/02/10 18:10:11
並列化のことで何年か前にYSS掲示板で議論になってましたけど

すごく初歩的な話なんですがrootでsplit(分割)する/しないってのは
どういう意味だったんでしょうか?

最初の深さ1だけは読んで、そのそれぞれの(1手読みの)手を並列化するのが
「rootでsplitする」でいいのかな?

しない、ってのはどういうことなんでしょう?


581:デフォルトの名無しさん
08/02/10 22:43:52
YSS掲示板で訊いた方がいいんじゃね?

582:デフォルトの名無しさん
08/02/11 09:44:18
あまりに初歩的すぎかなとおもって・・・

583:デフォルトの名無しさん
08/02/11 11:46:16
真面目に質問すれば大丈夫

584:デフォルトの名無しさん
08/02/11 11:48:45
あ,ここより将棋板の方が人(実際に作ってる人)が多いから
そっちでもいい alternative だったか,開発者用のスレがある

585:デフォルトの名無しさん
08/02/11 13:40:49
32bitパソコンを使ってますがintでなくcharを使うと
メモリの節約にはなるが速度は遅くなるのですか?

586:デフォルトの名無しさん
08/02/11 13:45:01
メモリアクセスが減るから速くなるケースもあるかもしれません。
要は、一概には言えないのでテストケースを充分絞って実験してみることです。

587:デフォルトの名無しさん
08/02/11 14:21:17
char や floatが遅いというのはデマ
キャッストに時間がかかるというのはデマ

588:デフォルトの名無しさん
08/02/11 14:22:39
へぇ~今調べて自己解決しますたと言うところだったんですが
一概に言えないのですか。へぇ~

589:デフォルトの名無しさん
08/02/11 15:06:51
そりゃそうだろ。メモリ2GB程度のパソコンごときで1G件のデータを扱おうとしたら
charじゃないとswapしまくりで遅くてしゃぁない。

590:デフォルトの名無しさん
08/02/11 15:18:39
将棋では1Gも使わないでしょう。
ところでYSSの人は配列は2のべき乗にすると速くなると言ってますが
みなさんそうしてるのですか?

591:デフォルトの名無しさん
08/02/11 15:22:57
それはデマ スワップが発生しないように最低限の確保が速い

592:デフォルトの名無しさん
08/02/11 16:05:18
へぇ~デマばっかりなんですね。
今のパソコンと将棋ソフトでスワップはないと思いますが。
でもそう言うには相応の理由があると思いますが、
実際に実験してないけど理論的には速いはず、というところでしょうか。

593:デフォルトの名無しさん
08/02/11 16:07:36
512や1024ならスワップ起こるよ
OS、ほかのプログラムが動いているとハッシュテーブルがメモリ外に出ることがある
するととても弱くなる
たとえばボナンザで実験するとわかる

594:デフォルトの名無しさん
08/02/11 18:13:57
>>580
rootでA,B,Cと候補手があるとして
BやCの評価値の評価値を並列に探索して求める場合はrootでsplit。
Bの評価値が確定してからCを探索する場合はrootではsplitしていない。

595:デフォルトの名無しさん
08/02/11 20:56:25
>592
デマというか、ハードウェアとかコンパイラに依存するので時代によって……

596:デフォルトの名無しさん
08/02/11 22:41:19
>>594
ありがとうございます

>BやCの評価値の評価値を並列に探索して求める場合はrootでsplit。

というのは直観的に理解できそうです
rootでとりあえず指し手を列挙してみて
おらこれとこれとこれがあるから行ってこいやぁ、みたいなw

でも
>Bの評価値が確定してからCを探索する場合はrootではsplitしていない。

というのがよくわかりません
この場合、どこで並列処理(並列化)をしているのでしょうか?

597:デフォルトの名無しさん
08/02/11 23:35:35
Bにも子供たちが…

598:デフォルトの名無しさん
08/02/11 23:46:07
てことは……

深さ0(? 現局面のこと)で指し手を列挙して
おのおのの指し手について並列するのがrootでsplit

深さ0で指し手を列挙したあとその指し手の1つをまず取り出して
そこからの指し手(深さ1以下の指し手)について並列するのがrootでないsplit

ってことですか?

実際の方法論としては
たとえば候補手が50個並んでいて
CPU1が候補手aを、CPU2が候補手bを読んでいって
先に終わったほうが候補手cを読む……という「仕組み」自体はいっしょで
それをrootでやるかそうでないかだけが違う(というかYSS議論では違ってた)
ということでしょうか?

599:デフォルトの名無しさん
08/02/12 02:48:08
>>598
深さ0で指し手がA0、B0、C0と3つあるとすると、今のプログラムは
A0の手を調べるのに全体の50%の時間を使ってしまいます。
そこで、A0の探索が終わった後に、B0、C0の2つの手を並列に探索します。
その方がA0の探索の結果を使えるので効率がいいためです。

A0の手の下にはA01、A02、A03の3つの手があるとすると、
A01の手を調べるのにこれまた50%の時間がかかります。
そこで、A01の探索が終わった後にA02、A03の探索を並列に行います。

こうやって延々続いていきます。
深さ0でも並列に探索するのが「rootでsplit」で
深さ0でのみ並列に探索しないのが「rootでsplitしない」です。
「rootでsplitしない」場合でも深さ1、深さ2、、、、ではsplitします。

600:デフォルトの名無しさん
08/02/12 10:33:34
並列化ド素人の自分だが
Aspiration searchの真ん中の値で二分すれば
単純に二倍速くなりそうという感じは受ける。
ちょっと試せないので分からないけど。

ボナンザも歩の交換値2つぶんでAspiration searchをやってるらしいので。。

やっぱり問題はその次からの一回の探索を分ける方法だねえ。

601:デフォルトの名無しさん
08/02/12 11:08:15
>>599
なるほど・・・
ありがとうございました

602:デフォルトの名無しさん
08/02/12 12:38:42
>>600
お前コンピュータ将棋もど素人だろ。
ウィンドウを2分割すれば探索ノードもキレイに2分割できると思ってる?

603:デフォルトの名無しさん
08/02/12 14:47:26
逆に他の手法はきれいに二分割できるの?やろうとしてるの?

604:デフォルトの名無しさん
08/02/12 16:43:40
ただのPVS使ってるが少なくとも600のやり方よりは効率がいい。
ついでに書くと、MTD(f)の探索木みれば600がいかに効率悪いかわかる。
まぁ、俺は選手権の対局より強化学習の方を高速化したいから、並列探索は手抜きだがな。

605:デフォルトの名無しさん
08/02/12 18:49:22
書き忘れてた。>>604のPVSはPV Splittingの方。

606:デフォルトの名無しさん
08/02/12 19:30:13
あーなるほど、2つほど勘違いしてた。
600をやって他もできると思ってたら、できないねえ。
ノード数が二分できないのではなく、ノードが二分できないのか。
同じ局面を二回作ってるから二で割って一と。

607:デフォルトの名無しさん
08/02/12 19:44:07
そーゆー事だ。

608:デフォルトの名無しさん
08/02/12 19:48:54
>>599に補足すると、「rootでsplitする」場合だと、B0とC0を並列に探索するのでB0,C0の評価値が求まるまでの時間は長くなる。
「rootでsplitしない」場合だと、B0の子ノードOR孫ノードORもっと先のノードで並列化するので、B0の評価値は「rootでsplitする」場合より速くも止まる。
んで、仮にA0の評価値<B0の評価値だと、B0の探索終了時に「B0は(最善手ではないかもしれないが)少なくともA0よりは良い」と分かる。
なんで、「rootでsplitしない」場合は、「仮の最善手」が速く決まる可能性が高い(YSSの掲示板だと「見切り発車」とか表現してた)から、思考時間に制限がある場合にちょっとお得、と。

609:デフォルトの名無しさん
08/02/12 19:49:53
すまん、二行目の「も止まる」は「求まる」だった。
死んできます。

610:デフォルトの名無しさん
08/02/12 19:58:06
まあ、そんなに簡単なら話にも出てこないか。
でも並列化ってイメージしにくいような気がする。
頭を両手で同時に洗うのは並列化?

611:デフォルトの名無しさん
08/02/13 00:31:48
もちろんそうだが,タスクの分割が自明な例だな

612:デフォルトの名無しさん
08/02/13 19:04:11
例えばフライを揚げる時、衣付ける人と揚げる人の二人でやる事あるだろ?
そういうのが並列処理。

613:デフォルトの名無しさん
08/02/13 19:19:45
その例えは誤解の元

614:デフォルトの名無しさん
08/02/13 19:52:42
>>612
それはCPUのパイプラインだ。
並列処理なら、フライパンを二つ用意しなきゃ。

もっとも、将棋の場合は揚げなくてもいいものがあるから、
二つ用意しても倍は速くならないのだ。

615:デフォルトの名無しさん
08/02/13 19:54:02
>613
どういう点が…と聞いてみようと考えたら分かった。
>612の例えは「並列処理」と言うより「パイプライン処理」だ。

616:615
08/02/13 19:54:54
あ、先に言われてしまったw。

617:デフォルトの名無しさん
08/02/14 02:06:09
パイプライン処理も並列処理みたいなもんでしょ。
依存関係があっても適用できるわけだし

そういう細粒度の並列処理を
ソフトウェアでうまく書く方法ってある?

手の生成→並べ替え→手を打つ
     手の生成→並べ替え→手を打つ
          手の生成→並べ替え→手を打つ

手を打たないと、次の手の生成ができないから無理か orz




618:デフォルトの名無しさん
08/02/14 02:22:52
>パイプライン処理も並列処理みたいなもんでしょ。
ぷぎゃー

619:デフォルトの名無しさん
08/02/14 02:41:25
いや、言いたいことはわかるよ

620:デフォルトの名無しさん
08/02/14 16:51:24
>617
普通のPCハードウェア(CPU)じゃ無理だね。
パイプライン処理(それも将棋専用の)が可能なCPUじゃないと。

だから「A級リーグ指し手1号」と言う名前で専用プロセッサを
FPGA使って開発してる人が居るわけで。

621:デフォルトの名無しさん
08/02/14 18:28:27
パイプラインによるオーバーラップさせた処理は並列処理の一種

622:デフォルトの名無しさん
08/02/14 18:31:21
マルチコア環境ではハードでなきゃ無理ということはないと思う
例えばPS3/Cellにはそういう形(パイプライン)の並列処理の枠組みが用意されてる
もちろんアルゴリズムは自分で考えるのだが

623:デフォルトの名無しさん
08/02/14 19:07:21
>622
へー、CellB.E.(SPU?)にそんな仕組みがあるの?
単なるSIMD演算器がさらに8個並列で存在するだけかと思ってた。

個々のSPU内の演算器を自分好みのパイプラインに仕立てられるのか?

624:623
08/02/14 19:37:44
>622
もしそういう機能が本当にあれば非常に興味深い(使ってみたい)ので
どのドキュメントに載っていてどんな名前で呼ばれている機能か教えてくれ。

「Cell Broadband Engine アーキテクチャ」Ver1.01 (by ソニー)
をざっと眺めてみたが見つけられなかった。

625:623
08/02/14 20:06:15
>622
もしかしてSIMD演算機能あるいはSPUを仮想化してマルチスレッド
ソフトウェアを走らせる機能を(ハードウェア)パイプライン機能と
混同してない?

普通の(IntelやAMDのx86)CPUもある種のパイプライン(スーパースカラー)
機能はあるけどプログラマが意識的(明示的)に操れるわけじゃないし。

626:デフォルトの名無しさん
08/02/14 21:11:56
622じゃないけど、

PS3のCellで囲碁をパイプラインってこんなの?
URLリンク(www.geocities.jp)

αβ探索じゃなくて、モンテカルロならパイプライン可能かもな
要はスレッド間の同期をとるだけじゃん


627:デフォルトの名無しさん
08/02/14 21:20:01
>>625 スーパースカラーはパイプラインじゃないよ

フェッチ→デコード→演算→レジスタ書き出し
     フェッチ→デコード→演算→レジスタ書き出し
          フェッチ→デコード→演算→レジスタ書き出し
               フェッチ→デコード→演算→レジスタ書き出し

こういうのがパイプライン。
スーパースカラは複数の命令を同時に実行できる機能


628:623
08/02/14 21:20:17
スレッド間同期とパイプライン処理は違うでしょ?

629:623
08/02/14 21:27:37
>627
スーパースカラー=パイプラインじゃないけど、現在主流のCPUで言う
「スーパースカラー」はパイプライン処理が前提なんだけど。

すなわち複数命令を(同時実行できるものは)同時発行しておいて
さらにそれらをパイプライン化された処理装置に叩き込む。

詳細はWiki等を参照してくれ。

630:デフォルトの名無しさん
08/02/14 21:30:02
どの命令が並列処理できないかコンパイル時点で分かるよね?

631:623
08/02/14 21:34:30
>630
??? 何が言いたいの?
コンパイラに並列化を任せて明示的に(機械語レベルで)複数命令を
並列実行するならVLIWアーキテクチャだね。Itaniumみたいな。


632:デフォルトの名無しさん
08/02/14 23:59:56
ちなみに普通の(VLIWでない)CPUはコンパイラが並列処理可能な
命令を見つけたとしてもそれをマシン(CPU)に伝える手段が無い。

633:デフォルトの名無しさん
08/02/15 00:37:59
さらにちなみにベクタープロセッサ(ベクター型CPU)はひとつの
演算処理(たいていは積和算)そのものを複数のステージに細切れに
分けてパイプライン処理する。したがって同じタイプの演算命令が
次々と間を空けずに来る事が前提。

なのでベクター(行列)の処理に向くと言うか、それにしか向かない。

634:622
08/02/15 02:16:07
およよ,思いっきり勘違いされた
>マルチコア環境ではハードでなきゃ無理ということはないと思う
と書いた時点でソフトの枠組みの話をしてることが分かると思ったのだが
分かり難くてスマソ

635:デフォルトの名無しさん
08/02/15 15:11:57
>634
いいたいことは分かった。
スレッド同士のバケツリレー的なことを API でサポートしてるってことね。きっとイベントキューとかメッセージボックスとか使うんでしょ。
って >622の文脈であの書き方じゃわかるわけねーよ!

636:デフォルトの名無しさん
08/02/15 19:54:51
俺は使ったことがないが,API より上のレベル,
フレームワークが提供されていると聞いている
>じゃわかるわけねーよ!
読み直してみると確かに分かり難い.改めてすまんかった

637:623
08/02/15 22:45:43
やっぱりソフトウェア(開発ツール)レベルでパイプライン(的)
処理をサポートする枠組みがあると言う事だったのか。

>634を読んでしばらく考えてようやく意味が分かったよ。

確かにCellのSPUならマルチスレッド(マルチコア処理)で
パイプライン(的)処理をする仕組みを作りやすいかも知れないな。
キャッシュなしのローカルストレージのみで動くから
インストラクションの実行時間を確実に見積もれる。

そういう話を聞くと>617が書いてるようなパイプライン処理を
Cell(PS3)上で実現できないか、ちょっと考えてみたくなるな。
タスクをそれぞれ均等な実行時間を持つステージに分割できるか、
通信オーバーヘッドがどれくらいあるかが問題だけど。

638:デフォルトの名無しさん
08/02/16 02:00:36
概要レベルだが
URLリンク(research.cesa.or.jp)
にCellの並列化のPipelineモデルとかStreamingモデル等の話が載ってる
(日本IBMの東京基礎研の人の講演)

639:デフォルトの名無しさん
08/02/19 21:43:39
>>638 THX 勉強になった

>>626 のPDFを見ても、cellってMBOXでSPUが通信できる仕組みみたいだねえ

ハードのパイプラインはクロック同期と思うが、
ソフトでも負荷の無い同期方法ってないもんか?
Stramingモデルってのが面白かった


640:デフォルトの名無しさん
08/02/20 00:16:34
>負荷の無い
ってどういう意味?
libspe2 には mbox と signal しか用意されてないけど
自分で作るのもあり

641:デフォルトの名無しさん
08/02/20 11:30:35
>>639
ハードウェアのクロック同期だって負荷があるだろ。
1クロックよりずっと短い処理だってクロック同期を待たなければならないんだから。
それでもCISCの頃よりは計算資源のアクティブ率は上がった。
ソフト側も同様にプロセッサの稼働率を上げていけばよい。

642:デフォルトの名無しさん
08/03/18 10:22:07
保守

643:デフォルトの名無しさん
08/03/19 00:05:55
4/6(日)開催予定のオープン戦案内メールをもらった。
しかしソフトはまだ全然出来ていない。
将棋を指す骨組みと通信部分だけくらいは何とかその日までに
完成させて一回は通信対戦テストをしておきたいのだが。

このままじゃ、ぶっつけ本番になってしまいそうだ。

644:デフォルトの名無しさん
08/03/22 01:46:00
オープン戦に間に合わなければ、
wdoorでテストしておけば?
CSAの対局サーバーとは細かい違いはあるようだが……

がんばれ



645:デフォルトの名無しさん
08/03/23 13:05:20
あげ

646:デフォルトの名無しさん
08/03/23 13:05:40
てなかった

647:デフォルトの名無しさん
08/03/23 15:10:42
ボナンザについて解説してるサイトがあったら教えてください><

648:デフォルトの名無しさん
08/03/23 15:55:11
>>647
作者のサイトの GPW 2006 発表資料 には目を通した?
あの説明で何かわからないことある?

649:647
08/03/23 17:44:26
>>648
見てなかったです.
読んでみます.
サンクスです.

650:デフォルトの名無しさん
08/04/10 23:56:08
>648
あれ読んでも具体的に何と何を入力パラメータとして
選んだのか今一良く分からないんだよね。

各駒種に対してその位置(升目)ごとに重み付けしていって、
それを2個以上の駒の位置関係にまで広げていったら、
あっと言う間にパラメータは1万個どころか百万個以上に
なりそうだし、学習を進めると結局、棋譜に現れたもしくは
探索済みの特定の局面に評価値を与えるだけになりそうな気が。

つまり一般化能力なんか全く無さそうな気がするんだが、
私が何か勘違いしてるのかね?
コンピュータ将棋に詳しくないために。

651:デフォルトの名無しさん
08/04/11 00:38:13
>>650
その論文読んでないけど、テレビでやってたやつ見た限りだと
その発想そのままだと思う。

ボナンザの初期バージョンでは数手先まで読むように拡張してみたところ
うまく読み取れない局面があることがわかった。

そこで、ある程度(?)評価の悪い枝についても読むようにしたところ
かなりよくなった。

完全に総当りじゃなくて、ある程度評価がいい手の中でも
多少悪いぐらいでは枝狩をしない
また、相手の手版のときに、多少悪いぐらいの手をさしてくることを
考慮して読んでおくことで、時間を有効に使う

一般的にどうこうするっていうのではなくて
特定の場合に愚直な実装して、枝狩りの閾値さげたら
割とうまくいきました っていう感じだと思う。
他の検索系のやつもそうだけど
この手の総当りが必要そうなものについて、愚直に実装して
動かしてみたら案外うまくったってのが、最近の傾向じゃないかな
人間があーだこーだ考えるよりPCに考えさせたほうが
早いっていう。

だから一般化というより、ある特定のルールのときに
CPU時間を有効に使えるように変えてみたら
アルゴリズムは今までとほとんど同じだけど
勝率があがりました って思ってるけどこれも違うかな?
あくまで素人の意見なんですが。


652:デフォルトの名無しさん
08/04/11 01:16:23
>>650
> それを2個以上の駒の位置関係にまで広げていったら、

広げない。

将棋は、自玉、敵玉に対する位置関係は重要だが、それ以外の2駒の相対的な位置関係は
あまり重要なゲームではないからだ。

例えば以下の記事が参考になるだろう。
URLリンク(d.hatena.ne.jp)

ただし、銀の退路が歩で遮られていないかだとか、歩越しになっていないかだとかは重要なので、
Bonanzaでもそこは考慮に入れていたはず。

653:650
08/04/11 01:30:39
あり? 良く考えてみると二駒の絶対位置関係の
全ての組み合わせにそれぞれ点数を付与して
行ったとしても、二駒のペアは自由に選べるわけだから
特定の局面に対して点数を付けて行くのとは違うな。
汎化能力はあるか、俺が勘違いしてたわ。

それにしてもパラメータ数が膨れ上がると言う謎は残るな。
愚直にやると駒のペア×位置(マス目)×位置(マス目)で
40×39÷2×83×83で500万以上にもなるか?

654:デフォルトの名無しさん
08/04/11 01:38:22
>652
なるほど、サンクス!
もうちょっと考えてみよう。

655:デフォルトの名無しさん
08/04/11 01:39:58
>>654教授か研究者の方?

656:654
08/04/11 01:52:32
>655
いえ、違います。
ただ単にコンピュータ将棋に関心があって
(できれば自分でも作りたいと思ってる)
ボナンザメソッドに興味を持った
一介のアマチュアです。

657:デフォルトの名無しさん
08/04/11 05:57:50
最善手を求めるときって、引き分けがある場合はちょっと工夫が必要なのかな?
反復進化で求めると思うんだけど、その時未知の局面が現れた場合、引き分けの値との関係が難しい。
負け<引き分け<未知<勝ちという図式になると思うんだけど、未知の局面の値は相手から見ても引き分けより
大きくなければならないので、単純に符号を変えるという普通の方法が使えないわけですが
何か一般的な手法があるのかなと思って聞いて見た次第です。

658:デフォルトの名無しさん
08/04/11 06:05:36
>>657
未知の局面て何よ?

未探索で評価値がわからないなら探索して決めればいいじゃん。
終端ノードなら、静止評価すればいいじゃん。

そんなの反復深化とも引き分けともなんも関係ないよ。


659:デフォルトの名無しさん
08/04/11 06:26:40
えっと、負け<引き分け<未知<勝ちから分かる通り
未探索の局面を全て調べる必要がないわけですが、深さを制限しないで調べるのが一般的でしょうかね。

660:デフォルトの名無しさん
08/04/11 07:03:41
>>659
> えっと、負け<引き分け<未知<勝ちから分かる通り

何が言いたいのかさっぱりわからんよ。

基本的なことを確認するが、あんたは普通のαβや反復深化は理解していて
自分でそのプログラムぐらいはすぐに書けるんだろな?

あんたの言う「未知」って何よ?置換表に登録されていないの意味か?

そしてその「引き分け」っていうのは、なによ?

評価したい局面で引き分けにする指し手が見つかっているのか、
それとも「引き分け」というのが存在する将棋みたいなゲームでの
一般的な探索メソッドについて話しているのかどっちなのよ。


661:デフォルトの名無しさん
08/04/11 12:48:08
>>653
例えば相対位置を使ったり

662:デフォルトの名無しさん
08/04/12 01:16:32
上の方にあった千日手関係の話?

663:デフォルトの名無しさん
08/04/12 10:38:11
で将棋に関するGHI問題の話の結論はどうなったの?

664:デフォルトの名無しさん
08/04/12 11:23:06
>>663
このスレでは >>234 の論文以上の進展はないと俺は理解している。

665:デフォルトの名無しさん
08/04/12 13:18:03
>663-64
結論は既に出てると思うが?
GHI問題と言うのは証明アルゴリズムの不完全性などに起因するのではなくて、
千日手などのそこまでの指し手に依存して勝ち負け(引き分け含む)が決まる
タイプのルールを持つゲーム(将棋、チェスなど)には必然的に生じる問題。

即ち、ある局面からの勝ち、負け、引き分けを厳密に判定するにはその局面に
至るまでの経路(指し手の履歴)も考慮する必要があると言う良く考えれば
ごく当たり前の話に過ぎない。

666:デフォルトの名無しさん
08/04/12 13:19:36
上のアンカーは >663-664 の書き間違い。

667:デフォルトの名無しさん
08/04/12 14:33:23
>657の言う「未知」と言うのは千日手になるかも知れないが初手からの
完全な履歴は残してないので厳密に考えると「千日手になるかどうか不明」
になると言う話なのかな?

しかし「相手から見ても引き分けより大きくなければならない」と言うのが
良く分からんな。不明な局面の場合「悪くても引分け(千日手)」に持ち込める
と言う保証なんか無いわけだから。不利な状況から千日手に持ち込もうとしても
出来ないかも知れない。


668:デフォルトの名無しさん
08/04/13 13:27:01
うさ将棋本に局面で乱数xorを用いるhash(zobrist hashのことだろう)を、乱数ではなく
もう少しいい方法があるらしいことが書いてあるのだが、誰か情報求む。

与えられた数列集合の要素同士のxorを何回かとるときに
なるべく衝突しないような数列を数学的に決定する方法があるのか、
それとも衝突しにくい組み合わせを事前にrandomで選んだ数列集合のうち
良いものを探してみましょう、程度の話なのかどちらなのだ?

669:デフォルトの名無しさん
08/04/13 15:46:14
その本のは知らないけど、以前読んだ何かのプログラムのソースでは
個々の乱数を生成したら立ってるビットの数はチェックしていたな。
うろ覚えだけど16±5くらいの範囲に収まってるかってのだったかなぁ。
この範囲に無ければ再生成。

670:デフォルトの名無しさん
08/04/13 16:32:31
ボナンザでいくつか質問があるんだけど,
・静的評価関数はminimax探索で利用されるんだよな?
・最適化の数値的手法1のスライドの関数f(p,ν)って何?

人工知能は学部で多少勉強した程度で将棋プログラムの経験もないんでとんちんかんなこと
聞いてるかもしれないけど,教えてください

671:デフォルトの名無しさん
08/04/13 17:52:30
>>669
ああ、なるほど。1のビットの数はチェックしたほうが良さそうだね。

672:デフォルトの名無しさん
08/04/14 12:13:14
他の乱数とのハミング距離が小さいのは捨てる
というのもあった(時間掛かるけど最初だけだからOK)

673:デフォルトの名無しさん
08/04/14 12:42:55
>>672
ああ、それもいいね。

674:デフォルトの名無しさん
08/04/14 23:07:55
>670
良く嫁。同じスライドの下に式があるだろう>f()

675:デフォルトの名無しさん
08/04/17 20:19:52
序盤、中盤、終盤はどのように判定したらいいんですか?
50手で終盤の事もあるし、200手で中盤の事もあるので手数とは関係ないと思います
考えられるのは、玉の危険度で測るのがいいと思いますが定番のやり方ってありますか?

676:デフォルトの名無しさん
08/04/17 20:23:10
>>668
数学的な方法って無いと思いますよ 
自分でやってみた方法は、プロの 棋譜を読み込んで衝突が起こりにくい乱数を決めておくって方法です
実際に起こりえない局面で衝突が起こらなくても意味がないので

677:675
08/04/17 20:27:40
読み無しで、玉が詰みそうかどうかを判定する方法がわかれば良いのですが

678:デフォルトの名無しさん
08/04/17 21:04:04
>>677
> 玉が詰みそうかどうかを判定
これを読みって定義するんじゃないか?

679:675
08/04/17 21:31:52
危険度を数値化(危険度の評価関数)するって事ですよ
詰みそうならば詰め将棋を読んで、詰まないことが局面だけから判断できるなら詰め将棋をしなくて済みます
玉の逃げ道の多さが危険度に関係ありそうですけど、穴熊だとうごける所は0なのに堅いです
どのように危険度を判定するといいですか

680:デフォルトの名無しさん
08/04/17 22:10:47
それこそ開発者各々の know-how の部分だろ.
まずは定番の「コンピュータ将棋の進歩」シリーズを読む.
続いてゲームプログラミングワークショップの予稿集を読む.
CSA に入ってトーナメントに参加し,他の開発者から色々教わる.
本格的な議論は将棋板のコンピュータ将棋関係のスレッドで

681:デフォルトの名無しさん
08/04/17 22:19:20
将棋板には人いません

682:デフォルトの名無しさん
08/04/17 22:40:25
>>675
成駒の数とか敵陣にいる駒の数、あとは王将と攻め駒の距離とかかな。
適当に考えただけだから、実装して上手くいくかどうかはわからんが。

683:デフォルトの名無しさん
08/04/17 22:42:44
>679
この辺で聞くと役に立つアドバイスがもらえるかも知れないよ。
GA将!!!さん運営の「コンピュータ将棋等の掲示板@入門編」
URLリンク(www4.rocketbbs.com)

あるいは超有名なYSSの山下さんところの
「コンピュータ将棋や囲碁の掲示板」
URLリンク(524.teacup.com)

最近、掲示板@入門偏は話題が無くて止まってるからちょうど良いかも。
ちなみにダブルポストすると注意されるから気を付けてね。

684:デフォルトの名無しさん
08/04/17 23:05:52
サンクス

685:デフォルトの名無しさん
08/04/17 23:22:10
>679
ちなみに「うさぴょん本」にちょっとだけ書いてあるのを紹介すると

・玉の危険度
「玉の周囲に敵の利きがどの程度あるか、敵の駒がどの程度の距離に迫っているか」

結局、自陣(自玉周囲)にどの程度敵方の駒が利いているかが判定のキモだと思うな。
自陣に利いていても、玉ではない味方の駒で敵の駒の利きを受け止めているんなら
まだ固いと判断できるし、何にも無い空間にバシバシ利いているんなら(裸玉)、
もう詰められる寸前だろうし。

固さと玉の逃げ道の広さは当然、矛盾するところがあるので難しいところだけど。

686:デフォルトの名無しさん
08/04/18 00:04:17
しかし、玉の危険度と、通常の評価関数の二つがあると、どちらを優先したらいいのか混乱しますね
統合した評価関数が出来れば一番良いのですが

687:デフォルトの名無しさん
08/04/18 00:49:07
プロの棋譜で、2回以上現れる局面で必然手のない局面は、互角であると思います。
これを基準にして評価関数を調整するといいと思うのですが…
しかし、問題があり、2手以上出てくる中盤までしか調整が出来ません。
プロが指した手が最も得点が高くなるように調整すれば全局面に対応出来ますが
例えば、10手読みを入れた結果だとすると、評価値の値を間違えることになります。
しかし、何手読んだのか知ることは出来ず、常に一手読みとして学習したら駄目でしょうか?

688:デフォルトの名無しさん
08/04/18 00:53:31
>686
??? そりゃ、両方をひとつの評価関数として統合しないと。
と言うか、玉の危険度も通常は評価関数の一部だよ。
いろんなパラメータを重み付けして足して行くわけだ。

だから手動で調整するとバランスを取るのに四苦八苦するわけだが。

689:デフォルトの名無しさん
08/04/18 01:06:48
>>688
序盤か、終盤か、は通常の評価関数では知ることは出来ないと思います。 
互角であっても終盤である事があります。
終盤であることを知るにはどちらかの玉が危険であると知ることが必要と思います。
そのため、玉の危険度と通常の評価関数がないと終盤がわかりません。

690:689
08/04/18 01:20:20
先手の得点A、後手の得点Bに対して、評価関数をA/(A+B)とするならば
MAX(A,B)の値によって終盤判定が行えると思います。


691:デフォルトの名無しさん
08/04/18 01:45:16
>689
(通常の評価関数の一部としての)玉の危険度と
局面の進行度(終盤度)を計るための玉の危険度の話が
ゴッチャになっているね。(私が誤解したのかも知れない)

後者は例えば
序盤度×パラメータA+中盤度×パラメータB+終盤度×パラメータC
と言うような重み付け係数として組み込む事になると思う。

玉の危険度は終盤度(進行度)と通常の(有利不利を見る)
評価関数の一部としての両方に表れて良いと思うけど、
進行度の方はあまり凝った評価はしなくて良いんじゃ無いかな?

お互いの陣地に成り込んだ駒の数とか持ち駒の数くらいで。
飽くまで私見ですが。

692:デフォルトの名無しさん
08/04/18 01:51:46
5対5でも、8対2でも、最善手を指せば駒交換などの後、数手以内なら状勢は変わらないはずですね。
ボナンザはその前後で評価値が変わらないとして学習しているって事ですか。
何手先の局面と評価が一致するのかが重要ですが。

693:デフォルトの名無しさん
08/04/18 02:15:05
>>691
玉の危険度を正確に評価することは重要と思います。
正確に判定できれば、終盤用の指し手がさせますし、詰め将棋を調べず高速に危険度が求まります。

>>692の続きですが、評価値が保たれている局面を把握する方法は、既に知られているんですか?
ネットで見る限りでは、駒交換だけ進める様な感じと思いますが… 
しかし、それでは飛車・角・香の利きが良く利いているなどの情報は失われます。

694:693
08/04/18 02:26:04
例えば、銀は取られて、と金が作れて互角になったり、
桂は取られるけど、飛車がいい位置に移動できて互角になったりすると思います。
あとお互いに飛・角がいい位置に移動して互角になることもあります。
静止探索では、飛車が好位置に移動することも考慮しますか?




695:デフォルトの名無しさん
08/04/18 10:59:14
>>693
> 正確に判定できれば、終盤用の指し手がさせますし、
> 詰め将棋を調べず高速に危険度が求まります。

あんた、ほんとに将棋弱いんだな。

少しでも将棋が指せるなら、持ち歩の一歩の違いだけで
詰む/詰まないが変わることなんてしょっちゅうあることは
わかりそうなものなのに。

結局、ここからもわかるように
単純な関数で正確に評価することは出来ない。

詰め将棋なんて、静止評価に比べれば終端ノードの評価に
計算量を要しないので、詰む可能性が高そうな局面は全部調べればいいじゃん。


696:デフォルトの名無しさん
08/04/18 11:03:09
>>694
> 静止探索では、飛車が好位置に移動することも考慮しますか?

したければすればいいし、したくなければしなければいい。

その手の評価関数を副作用なしに書くことは非常に難しいので
シンプルな評価関数にして先読みできる量を増やしたほうが
棋力は向上すると思うがな。


697:デフォルトの名無しさん
08/04/18 11:05:35
例えば、三手後に詰みそうな局面が出てきたとします。
先手と後手の指し手が20通りずつあって、そのうち正解手は一手だけとして
その400通りの全てで詰め将棋を0.5秒つかったらそれだけで3分以上かかります。

静止探索でググると「 関連検索: bonanza 静止探索 」というのが出てきます。
みなさん bonanzaの 静止探索に注目してるんですね…



698:デフォルトの名無しさん
08/04/18 11:25:43
>>696
評価関数を書くのではなく、評価関数を自動で調整する為に静止探索をつかうんです。
プロの指し手は最善だとすると、静止の局面から、次の静止の局面への評価値に変化はないと仮定できると思います。
2つの局面で評価値が変化しないようにパラメータを決めるんです。
そのため静止局面が正しく判定出来ないと弱くなります。

699:デフォルトの名無しさん
08/04/18 12:04:29
野暮な突っ込みだけど
>その400通りの全てで詰め将棋を0.5秒つかったらそれだけで3分以上かかります
0.5秒は遅すぎです。正確な時間は分からないけど1ミリ秒でも
遅いと思います。

700:デフォルトの名無しさん
08/04/18 13:20:03
>>697
> 例えば、三手後に詰みそうな局面が出てきたとします。

だから「三手後に詰みそう」だとどうやって正確に判定すんの?

言っとくけど王の近傍だけでは判定できないし、敵王の近傍に
自駒がたくさん利いていても、その利きによって打歩詰めになるかも
知れない。利いてりゃいいってもんでもない。

正確に判定したければ、実際に3手読むほうがよっぽど速い。

> 先手と後手の指し手が20通りずつあって、そのうち正解手は一手だけとして

即詰に関しては平均合法手は20もない。6,7ぐらい。

> その400通りの全てで詰め将棋を0.5秒つかったらそれだけで3分以上かかります。

日本語が意味不明なんだが、3手読むのに要する時間は1ms以下だと思うのだが。
一体、何の話をしてるんだ?


701:デフォルトの名無しさん
08/04/18 13:26:14
>>698
> 評価関数を書くのではなく、評価関数を自動で調整する為に静止探索をつかうんです。
「評価関数を自動で調整する為に静止探索をつかう」なら
その「静止探索」で使うための評価関数がいるだろ。

> プロの指し手は最善だとすると、静止の局面から、
> 次の静止の局面への評価値に変化はないと仮定できると思います。

できない。少なくとも投了の数手前には形勢はどちらかに大きく傾いてる。

あんた本当にプログラム1行でも書けるのか?
プログラムの書けないキチガイの戯言ならこれ以上付き合わないぞ。


702:デフォルトの名無しさん
08/04/18 13:40:38
>>701

> あんた本当にプログラム1行でも書けるのか?

今頃気づくなよw
どう考えても最初から素人の妄言だろ

703:デフォルトの名無しさん
08/04/18 13:42:36
>>701
中・終盤で2対8でもいいんです。
双方が最善を指したならば数手以内なら2対8が保たれるはずです。
例えば、いったん飛車がとられるけど、金と桂を取り返せて
初めの静止局面から、次の静止局面の評価はほぼ等しくなるはずです。
プロがミスをしないものとします。

704:デフォルトの名無しさん
08/04/18 13:46:39
>>700
ルートでは詰みはないけれど、探索中の3手後に詰みそうな局面が現れたとします。
このとき、全てに対して詰め将棋を計算するのは効率は悪いって事ですよ。
だから、局面から危険度が求まれば、詰め将棋をしなくて良い場合がでてくるかもしれないってことです。

705:703
08/04/18 13:48:52
ボナンザの場合、基本は一手後と評価値の変化はないものとして、駒交換が起こる場合は進めた局面と比較するって事でしょう。

706:デフォルトの名無しさん
08/04/18 15:01:02
>>703-705
あんたがプログラムが一行も書けない
掲示板をsageることすら知らない
日本語がままならないキチガイだって
ことはよくわかった。

プログラムが書けないなら、プログラムの勉強から先にやりなよ。
あんたが小・中学生ならいまからでも遅くはないだろう。


707:デフォルトの名無しさん
08/04/18 16:44:04
え、痴呆、知的障碍でなければプログラミングなんて
いつからだって間に合うでしょう。。

708:デフォルトの名無しさん
08/04/18 19:50:23
>>707
もちろんその通りなのだが、703の場合は日本語の勉強とかインターネットを使う勉強とか
たくさん他に勉強しないといけないことがあるように思ったんでな。

709:デフォルトの名無しさん
08/04/18 20:57:18
こいつはリバーシ1くさいな

710:デフォルトの名無しさん
08/04/21 00:30:25
いや30過ぎてからでは難しいと思うぞ<プログラミング

711:デフォルトの名無しさん
08/04/21 00:56:48
どうなんだろうな
一種の芸術技能だと考えると確かに30越えはきつそうだが…

712:デフォルトの名無しさん
08/04/28 07:07:00
すみません、詰め将棋のプログラムつくっているんですけれども、
無駄合いの判断でつまっています。なにかいい考え方はありますでしょうか?

713:デフォルトの名無しさん
08/04/28 10:06:31
>>712
「コンピュータ将棋の進歩」の1を読んだらどうだ?


714:デフォルトの名無しさん
08/04/28 13:04:34
>712
うさ親さんの「コンピュータ将棋のアルゴリズム」にも解決法が
示されているよ。「王手を掛けた駒で合い駒を取り、その合い駒を
玉方にすぐに返した時にそれでも詰むならばそれは無駄合いである」
と言う考え方らしい。

「柿木のアルゴリズム」と呼ばれるのだそうな。

715:デフォルトの名無しさん
08/04/28 13:24:07
玉側の利きが無くて玉の周囲で無い駒はりは無駄合いの確率が高い。
まとめると、引きつけておいて、その駒が取れて逃れられるケース以外は無駄合いらしいということ。

716:デフォルトの名無しさん
08/05/03 14:34:10
URLリンク(homepage.mac.com)

717:デフォルトの名無しさん
08/05/06 16:50:00
アマチャンピオンがAIに負けたようだな

718:デフォルトの名無しさん
08/05/11 19:14:30
山下BBSで初心者が完全スルーされててワロタ

719:デフォルトの名無しさん
08/05/11 23:19:58
皆さんに教えてください。 思考部分の将棋ソフトを作ろうと考えていますが。
GUIに「CSA将棋」を使うか「将棋所」を使ったほうがいいか考えています。
他に何か良さそうな物が有れば教えてください。
行く行くはコンピュータ将棋選手権に出たいと考えています。

720:デフォルトの名無しさん
08/05/11 23:35:19
どちらでもいい。思考本体さえ出来れば入れ替え簡単

721:デフォルトの名無しさん
08/05/11 23:39:10
了解しました。では、サービスがよい「将棋所」で作ります。ありがとうございました。

722:デフォルトの名無しさん
08/05/12 01:22:35
将棋所ってはじめて知った。USI対応のGUIなんてあったんだ。
俺も将棋プログラムしてみようかな…

723:デフォルトの名無しさん
08/05/12 18:07:38
>>718
こいつ?

2回目以降の探索の確率は 投稿者:初心者 投稿日:2008年 5月 7日(水)03時15分22秒    編集済
2回目以降の探索の確率は、どうやって決めますか?
1回目の探索で、たとえば、王手やそれをかわす手、飛車取りやそれをかわす手などは
高い確率にするのは当然と思いますが、2回目は得点に応じて確率を割り振りますか?
しかし、得点比率で割り振ると飛車が逃げる手が10通りあってどれもがほぼ同点だと
重要な手なのに、割り振る値は小さくなってしまいます。
かわす場合は特別で、一手であるかの様に扱うとかわしてすぐに取られてしまう手にも
高確率を与えてしまう事になります。
あと初期の確率は、完全に無視して、得点だけにするかどうかもはっきりしません。

かわす手はその時点で、一番高い一手のみを採用して、あとは無いものとして扱って
確率を分配すれば良さそうですね。その手を使って不利にならなければそのままで良いし
無視したほかの手より得点が下がればそちらを採用すればいいので。



724:デフォルトの名無しさん
08/05/17 18:46:41
将棋所のLaramieとか序盤がめっちゃくちゃで萎える・・・
そのくせ駒がぶつかると強くなる 将棋の勉強にちっともならない

725:デフォルトの名無しさん
08/05/17 19:26:59
CPUで勉強しようとする頭がオカシイんだよ^^たまには外でなよ><

726:デフォルトの名無しさん
08/05/18 01:06:52
逆に考えるんだ。
序盤なんてどうでもいいんだと

727:デフォルトの名無しさん
08/05/20 13:34:56
yaneuraoの宣伝ブログの裏側はこうなっています。
URLリンク(www.pressblog.jp)
yaneuraoのブログを訪問したり、コメントしたりすると、原稿料がアップする仕組みです。

728:デフォルトの名無しさん
08/05/20 14:16:25
原稿料の算定基準が掲載されていないな

729:デフォルトの名無しさん
08/05/20 14:30:15
>>727
キチガイ帰れ

730:デフォルトの名無しさん
08/05/20 14:31:21
727は
URLリンク(d.hatena.ne.jp)
弓月とか言うキチガイの模様。

731:デフォルトの名無しさん
08/05/20 14:46:03
集客力のあるブロガーほど報酬が高いのは当たり前

732:デフォルトの名無しさん
08/05/20 14:53:37
731は弓月とか言う知能障害者っぽいな
URLリンク(d.hatena.ne.jp)


733:デフォルトの名無しさん
08/05/20 14:57:35
ここのところ屋根裏は毎朝宣伝こいてるな

734:デフォルトの名無しさん
08/05/20 14:59:45
集団ストーカー激指&やねうらおはもはや有名

735:デフォルトの名無しさん
08/05/20 15:02:56
弓月とか言うキチガイは、あの天下のやねうらお様に遊んでもらえて幸せだな。

736:デフォルトの名無しさん
08/05/20 15:04:16
>>733-734
お前はお前用のキチガイスレに帰れ
スレリンク(sf板)


737:デフォルトの名無しさん
08/05/20 15:05:50
>>736
この弓月とか言う精神障害者用のスレは、こっちじゃね?
スレリンク(sci板)


738:デフォルトの名無しさん
08/05/20 17:54:45
以上、集団ストーカーの実演でした。

739:デフォルトの名無しさん
08/05/20 18:30:36
>>738
お前は、半角入力すら出来ない知能障害者

740:デフォルトの名無しさん
08/05/20 18:34:00
なるほど。
--
727 名前:デフォルトの名無しさん[SAGE] 投稿日:2008/05/20(火) 13:34:56
yaneuraoの宣伝ブログの裏側はこうなっています。
URLリンク(www.pressblog.jp)
yaneuraoのブログを訪問したり、コメントしたりすると、原稿料がアップする仕組みです。

731 名前:デフォルトの名無しさん[SAGE] 投稿日:2008/05/20(火) 14:46:03
集客力のあるブロガーほど報酬が高いのは当たり前

733 名前:デフォルトの名無しさん[SAGE] 投稿日:2008/05/20(火) 14:57:35
ここのところ屋根裏は毎朝宣伝こいてるな

734 名前:デフォルトの名無しさん[SAGE] 投稿日:2008/05/20(火) 14:59:45
集団ストーカー激指&やねうらおはもはや有名

738 名前:デフォルトの名無しさん[SAGE] 投稿日:2008/05/20(火) 17:54:45
以上、集団ストーカーの実演でした。
--
判りやすいと言うかなんと言うか……

741:デフォルトの名無しさん
08/05/20 19:11:12
やねうらおは明日も宣伝をこく。きっとこく。

742:デフォルトの名無しさん
08/05/20 19:26:30
全角の人以外に空欄はいないので(略)

743:デフォルトの名無しさん
08/05/20 20:23:39
>>741
お前激しくスレ違いだから以下の精神病患者スレに移動願う。。
スレリンク(sf板)
スレリンク(sci板)

744:デフォルトの名無しさん
08/05/20 20:27:46
なんだこいつ・・・きめえ・・・


745:デフォルトの名無しさん
08/05/22 14:35:45
詰め将棋を研究して数学的になぜ詰めるのかが分かればその延長線上に最強プログラムがあると思うよー
あとチェスでいうオープニングの研究もしたほうがいいと思うよー

746:デフォルトの名無しさん
08/05/22 14:43:47
詰め将棋は既に十分に強いんです

747:デフォルトの名無しさん
08/05/22 15:13:43
ki2 書式の質問です。
▲7六歩 △3四歩 ▲2六歩 △4四歩 ▲2五歩 △3三角
▲4八銀 △4二飛 ▲6八玉 △3二銀 ▲7八玉 △7二銀
▲5六歩 △4三銀 ▲5八金右 △9四歩 ▲9六歩 △6二玉
▲5七銀 △6四歩 ▲3六歩 △7一玉 ▲8六歩 △5二金左
▲8七玉 △7四歩 ▲7八銀 △8四歩 ▲3八飛 △3二飛
▲6六歩 △5四歩 ▲6七金 △6三金 ▲6八銀 △8二玉
▲7七銀右 △4五歩 ▲7九角 △5五歩 ▲3七桂 △5四銀
▲5五歩 △同 角 ▲5六金 △4四角 ▲5八飛 △2六角
▲4五金 △5三歩 ▲5四金 △同 歩 ▲4三銀 △3三飛
▲5四銀成 △同 金 ▲同 飛 △3七角成 ▲4六角 △3六馬
▲4四飛 △4三歩 ▲6四角 △7三銀打 ▲4六飛 △6三馬
▲4二角成 △5二金打 ▲3三馬 △同 桂 ▲3一飛 △2五桂
▲3四飛成 △3七角 ▲5四金 △6二馬 ▲2五龍 △5三歩
▲5五金 △1九角成 ▲6五桂 △4六馬 ▲同 歩 △5七飛
▲5八歩 △1七飛成 ▲3三角 △6七香 ▲5九金 △6八歩
▲1八歩 △3七龍 ▲1五角成 △3九龍 ▲4八馬 △1九龍
▲3七馬 △3九龍 ▲4八馬 △同 龍 ▲同 金 △6九歩成
▲6七銀 △7九と ▲2九龍 △8九と ▲同 龍 △5四歩
▲7三桂成 △同 馬 ▲6五金 △5三桂 ▲5四金 △5五桂
▲7八銀 △2七角 ▲5三金 △同 金 ▲6五桂 △5四角成
▲5七金 △6四馬上 ▲5六香 △6三金 ▲8八玉 △7三桂打
▲2一飛 △6五桂 ▲同 歩 △同馬右 ▲6六銀打 △6四桂
この棋譜において最後の行の△同馬右です。これは△同馬直と書くのが正しいと思うのですが。
柿崎将棋では正しく処理されています。何故なのでしょう?
右と書いて右に無ければすぐ下を探すというのが正しいのですか?
ちなみに直と書き直しても正しく処理されました。

748:747
08/05/22 16:01:10
自己レス。同じような記述を複数見つけ、これが正しいと理解しました。 お騒がせしました。

749:デフォルトの名無しさん
08/05/22 16:06:45
>>745
色々考えた結果、最強はデータベースっぽいアプローチなのかなと思った。

750:デフォルトの名無しさん
08/05/24 11:12:38
chessは序盤と終盤がデータベースで済むんだが……

将棋は中盤に入ると毎回、一度も過去に出ていない局面が毎回大量に出てくるので、
100TBぐらいでは全然歯が立たないみたいなんだよな
データベースに全部収まるとカッコイイんだが

要は、ある局面を評価できればいいだけなので、
データベースとしてデータを持っておくことに意味があるわけではない……


751:デフォルトの名無しさん
08/05/24 11:24:13
チェスの終盤は、ポーン2個vsポーン2個くらいの状況でも
普通のコンピュータで完全に読みきることは出来ないくらい難しい。
データベースがあると終盤をかなり上手く指すようになるけど
思考力は人間の半分以下

752:デフォルトの名無しさん
08/05/26 03:00:37
ネタ提供? 2ch棋譜の内40433件の分析したデータ
*:先手の勝ち数:後手の勝ち数:*:*:戦型
1:739:626:0:0:その他の戦型
2:1282:1131:0:0:横歩取り
3:1994:1785:0:0:中飛車
4:4975:4259:0:0:矢倉
5:4208:3825:0:0:四間飛車
6:1647:1608:0:0:相掛かり
7:516:378:0:0:角交換腰掛銀
8:37:33:0:0:袖飛車
9:928:749:0:0:向飛車
10:1699:1679:0:0:三間飛車
11:646:617:0:0:相振飛車
12:114:121:0:0:右四間飛車
13:847:754:0:0:角換わり
14:737:822:0:0:ひねり飛車
15:40:43:0:0:筋違角
16:123:81:0:0:右玉
17:297:227:0:0:陽動振飛車
18:56:38:0:0:5筋位取り
19:139:144:0:0:角交換その他
20:50:60:0:0:角換わり棒銀
21:34:17:0:0:角換わり拒否
22:18:13:0:0:風車
23:38:20:0:0:棒銀
24:29:23:0:0:タテ歩取り
25:93:98:0:0:雁木


753:デフォルトの名無しさん
08/05/26 03:04:33
*:先手の勝ち数:後手の勝ち数:*:*:棋戦
1:968:881:0:0:王位戦
2:5715:5183:0:0:順位戦
3:837:764:0:0:NHK杯
4:1525:1229:0:0:竜王戦
5:146:128:0:0:日本シリーズ
6:228:196:0:0:朝日オープン
7:1438:1385:0:0:その他の棋戦
8:788:680:0:0:棋王戦
9:71:65:0:0:達人戦
10:1503:1308:0:0:棋聖戦
11:741:745:0:0:銀河戦
12:133:107:0:0:レディースオープン
13:865:820:0:0:王座戦
14:653:540:0:0:新人王戦
15:269:212:0:0:名人戦
16:40:43:0:0:朝日アマ名人戦
17:249:230:0:0:勝ち抜き戦
18:127:125:0:0:女流王将戦
19:102:99:0:0:倉敷藤花
20:490:434:0:0:早指戦
21:1122:943:0:0:王将戦
22:116:108:0:0:女流王位戦
23:212:203:0:0:女流名人戦
24:73:80:0:0:近将カップ
25:130:96:0:0:三段リーグ
26:101:104:0:0:早指新鋭戦
27:10:9:0:0:中学生名人戦
28:20:28:0:0:アマ王将戦
29:10:21:0:0:赤旗名人戦
30:59:53:0:0:全日アマ名人戦


754:デフォルトの名無しさん
08/05/26 03:06:15
30:59:53:0:0:全日アマ名人戦
31:13:22:0:0:平成最強戦
32:31:25:0:0:グランドチャンピオン
33:55:63:0:0:鹿島杯
34:25:30:0:0:アマ竜王戦
35:604:538:0:0:全日プロ
36:28:22:0:0:レーティング選手権
37:2:4:0:0:学生王将戦
38:12:20:0:0:小学生名人戦
39:19:15:0:0:学生名人戦
40:11:13:0:0:女流アマ名人戦
41:13:25:0:0:IBM杯
42:177:170:0:0:天王戦
43:95:84:0:0:若獅子戦
44:411:333:0:0:名将戦
45:430:309:0:0:十段戦
46:48:41:0:0:若駒戦
47:76:94:0:0:連盟杯戦
48:19:16:0:0:名棋戦
49:100:100:0:0:奨励会
50:43:53:0:0:最強者決定戦
51:27:16:0:0:古豪新鋭戦
52:82:87:0:0:九段戦
53:19:44:0:0:東京新聞杯
54:36:40:0:0:支部対抗戦
55:4:1:0:0:学生女流名人戦


755:デフォルトの名無しさん
08/05/26 03:07:24
56:1:0:0:0:新春お好み対局
57:1:0:0:0:細:九段設定戦
58:8:10:0:0:アマ女王戦
59:10:7:0:0:育成会
60:47:61:0:0:都名人戦
61:8:4:0:0:高校竜王戦
62:1:3:0:0:その他の棋戦     
63:28:18:0:0:大和証券杯
64:1:0:0:0:NHK杯      
65:0:2:0:0:順位戦       
66:38:30:0:0:朝日杯
67:22:31:0:0:マイナビ
68:0:1:0:0:倉敷藤花戦


756:デフォルトの名無しさん
08/05/26 03:09:33
*:先手で勝ち数:先手で負け数:後手で勝ち数:後手で負け数:名前
1:585:178:491:253:羽生善治
2:644:304:539:378:谷川浩司
3:187:180:155:208:島  朗
4:119:87:122:108:三浦弘行
5:105:88:83:95:畠山成幸
6:258:130:229:176:郷田真隆
7:216:163:203:206:南 芳一
8:90:62:82:77:真田圭一
9:128:92:132:105:中田宏樹
10:341:156:272:202:森内俊之
11:260:103:237:180:丸山忠久
12:208:125:180:150:藤井 猛
13:533:332:468:370:中原 誠
14:363:173:307:224:佐藤康光
15:57:41:62:44:松尾 歩
16:102:83:93:105:日浦市郎
17:97:96:98:69:畠山 鎮
18:179:121:150:143:阿部 隆
19:108:57:115:56:渡辺 明
20:155:104:155:115:中川大輔
21:39:57:29:59:伊藤博文
22:226:205:189:243:桐山清澄
23:169:110:153:130:先崎 学
24:84:58:69:82:北浜健介
25:94:44:96:55:山崎隆之
26:67:85:56:100:前田祐司
27:184:206:145:204:青野照市
28:68:52:58:61:石橋幸緒
29:49:52:53:55:矢内理絵子
30:59:39:53:46:近藤正和
以下省略

757:デフォルトの名無しさん
08/05/28 02:43:54
>>752みて思ったんだけど将棋の戦型って曖昧だよな
四間飛車だけだと先後どちらが振ったか分からないし、角換わりだけやたらと分類されてたり
もっとスマートに記述する方法はないの?

758:デフォルトの名無しさん
08/05/28 23:12:53
定跡データベースの樹形図で葉の数が均等になるようにすればよい

759:デフォルトの名無しさん
08/05/31 03:58:58
DNAの解析を各自のコンピュータで分析した結果をあつめて
実現しようっていうのがあったとおもうけど
それと似たように分散している計算力をあつめて全ての局面を評価するってできない?


760:デフォルトの名無しさん
08/05/31 04:53:19
分散処理は既に行われてるが全ては無理


761:デフォルトの名無しさん
08/05/31 23:53:06
将棋も囲碁もその場が今どちらが有利かなんて人によって考えが違うに決まってる

だから色んな人工頭脳をもった将棋プログラムを作ればいいと思う

俺には無理だけど

762:デフォルトの名無しさん
08/05/31 23:57:37
ログも読まず低レベルながらに頑張って口出ししては消えていく
そういう輩が時々現れるよね

763:デフォルトの名無しさん
08/06/01 04:05:53
9x9の盤面に8種類のコマが自分と相手の分あって、あとは空だから
81**(8*2+1) で、ルールの制約があるからこれよりもっと少ないと思う
URLリンク(www.google.co.jp)

それまでの手がどうであってもルール上許される配置のどれかになる
でルール上許される全ての局面に評価値をつける

勝敗が微妙な局面もあるけど、そこから
自分の勝ちの局面に少ない手で到達できるとか
相手の打ち方によらず確実に勝ち局面に到達できる手とか
があるほど評価値を高くするって案はどう?



764:デフォルトの名無しさん
08/06/01 04:24:12
>>763
成りがあるから81**29か
URLリンク(www.google.co.jp)

で特定局面から持ち駒も含めて別の局面へ遷移する手を考える
つまり各局面間の遷移に分割して解析する

765:デフォルトの名無しさん
08/06/01 04:43:55
>>764
ちがうわ 29**81かw
81C40 * 29**40 でもいいか?

766:デフォルトの名無しさん
08/06/01 04:47:39
81C40 * 29^40 = 6.65363027 × 10^81
URLリンク(www.google.co.jp)


767:デフォルトの名無しさん
08/06/01 10:47:51
このスレの過去スレを読みたいのです。どこかで見れますか?
又は、持っている方UPお願いいたします。

768:デフォルトの名無しさん
08/06/01 12:29:25
つ URLリンク(usapyon.dip.jp)

769:デフォルトの名無しさん
08/06/01 15:21:19
ありがとうございます。

770:デフォルトの名無しさん
08/06/01 15:27:02
どういたしまして

771:デフォルトの名無しさん
08/06/01 19:14:07
仮にすべての局面を評価できるとしたら、投了直前の局面をすべて生成して勝ち負けつけて
開始局面に向かって戻っていくだけだから、連続的な評価値なんて不要

772:デフォルトの名無しさん
08/06/01 19:16:13
>>771
戻して行く?
どこで手駒を使ったかまで遡れるのか?

773:デフォルトの名無しさん
08/06/01 19:24:15
>764
(現在の)局面状態だけを見て各局面への遷移を分類するのは難しい。
あちこちにループが発生する。詳しくはこのスレを頭から良く読んでね。

774:デフォルトの名無しさん
08/06/01 19:31:23
>771と>772が想定している「全ての局面」の意味が違うようだな。
つまり、その局面に至る経路情報を含めて分類してるのか、
経路情報は捨てているのか?

775:デフォルトの名無しさん
08/06/01 19:57:50
将棋でこういうデータ調べてる人っているの?
URLリンク(www9.atwiki.jp)

776:デフォルトの名無しさん
08/06/01 20:11:20
>775
居ないんじゃないかな?
オセロや囲碁と違って将棋は終盤がなかなか収束しない。
終局図が何通りあるのかも良く分からんし。

777:デフォルトの名無しさん
08/06/01 20:26:01
>>771
投了局面から「詰めろ?」を遡ることで
投了局面より前の局面の勝敗を決定できるのは確かだと思う

だけど更に遡ると、遡ったのとは違う経路で将棋が進んで
違う結果の局面になることがあると思う
一手で形勢逆転するような手があると思う

>>773
ループは枝刈りするとか対策は考えられるんじゃないかな

目標の中間局面に到達するまでの手の経路は
手数が多くても少なくても勝敗には関係ないよね
最短でなくて遠回りしてもいい

さしてるうちに、最初目標としていた中間局面じゃなくて
自分に有利な別の中間局面に変えてもいいし

778:デフォルトの名無しさん
08/06/01 20:36:36
・ルール上可能な局面(駒の配置図)はそれぞれがネットワーク状に「手」で繋がる
・局面のサブセットにだけ勝敗の評価が決まっているものがある
・局面の遷移がかなり限定されていれば(詰めろみたいに)勝敗の評価を決められる
・そのほかの局面は手によって評価が変わる
って感じのイメージを持ってる

779:デフォルトの名無しさん
08/06/01 21:47:41
上の方で議論になっているけど
将棋の「局面」を見て形勢を判断するためには
単なる盤上や駒台の様子だけではなく
その局面に至るまでの経緯も必要

極端な話、たとえば指しかけを引き継いだとして
「この盤面は敵玉に詰みがあるぞ!」と思っても
それは千日手の4回目かもしれないとかそういうこと

780:デフォルトの名無しさん
08/06/01 21:49:46
>777-778
末端局面から遡って勝ち、負け、引き分け(千日手)で
確定的にラベル付けするだけじゃなく、
途中局面に中間的な評価値を付けようって事?
おもしろい考え方だが、一体どうやって?


781:デフォルトの名無しさん
08/06/01 21:54:38
末端局面からさかのぼるのなら途中も当然
「勝ち」か「負け」か「引き分け」になるだろうって

782:デフォルトの名無しさん
08/06/01 22:01:06
>>779
> それは千日手の4回目かもしれないとかそういうこと

(現在の技術で可能かどうかは知らんが)データベースを引くのだから、現在の局面に
至るまでに詰みがある局面を逃しているはずはないと仮定できるだろう。

だから、連続王手の千日手のことは考慮しなくて良いと思う。




783:デフォルトの名無しさん
08/06/01 22:03:41
>>779
ソフトが「この盤面は敵玉に詰みがあるぞ!」と思って指したら。
システムから千日手で引き分けと言われるだけで。その事にソフトは何の関係が無いわけ。
それを操作した人間が、あちゃ~~前に勝ってたのか、と思うだけ。
それに何の問題があるのか?


784:デフォルトの名無しさん
08/06/01 22:05:15
引き継ぐ前の事を意識する必要は無い。

785:デフォルトの名無しさん
08/06/01 22:05:59
>781
もちろん、そうなんだが >777-778が何か面白いアイデア持ってないかな?と。
例えば勝ちに至る経路の広さや近さで評価値を付けるとか。

786:デフォルトの名無しさん
08/06/01 22:06:55
なんかminmax法も分かってない奴がいるな

787:デフォルトの名無しさん
08/06/01 22:16:22
>>786
いや、「神ならぬ人間がその盤面を引き継いだとして
どれほど勝ちやすいか」っていう評価値じゃね?

788:デフォルトの名無しさん
08/06/01 22:21:04
>>782
自分についてはそういう仮定を置くのもアリかもしれないけど
少なくとも相手のことについてはまずいだろう

「うむ、俺が勝つにはこの手しかない!
 でも相手にこう王手されるとまずいな…
 しかたない。勝ちはあきらめて千日手に持ち込むか…」

というようなケースってあるじゃんか

ところがこの相手の王手が千日手の4回目かもしれない

789:デフォルトの名無しさん
08/06/01 22:27:28
>>788
与えられた局面が勝ちか負けかを判定するデータベースを構築する話をしているんだろ?

相手がポカして相手が勝てる局面を(その勝ちのための指し手を連続王手の千日手で)負けの状態に
してようが、それはデータベース構築には何の関係もないことだろ。


790:デフォルトの名無しさん
08/06/01 22:27:50
引き継いだ前の人間の意識を、引き継いだソフトは考慮する必要は無い。
もし考慮して欲しいなら、その旨のインターフェースを作るべき。
しかしその人間の目的を読み取る機能は、最強の将棋ソフト作るより遥かに
困難な人工知能が必要。

791:デフォルトの名無しさん
08/06/01 22:34:58
いや、なんかおまいら話が変な方向へ
ひとまず>>165-395あたりは読んでくれ

792:デフォルトの名無しさん
08/06/01 22:37:17
>789
実はそのデータベースを構築する事そのものが、その局面に至る経路を考慮する事を要請する。
さもないと探索あるいは末端局面からの遡りが止まらなくなる。

良く考えてみないと分かりにくい事だが、なぜ千日手のルールがあるのかを考えてみよう。

793:デフォルトの名無しさん
08/06/01 22:37:36
>>789
「それは関係ないことだから関係ないのである。」
では説明になってないぽ

794:デフォルトの名無しさん
08/06/01 22:38:32
だからさ、一連の流れのある局面が、他の流れのある局面と同じと言う事は無いのかと、言う事だろ。

795:デフォルトの名無しさん
08/06/01 22:44:14
流れとか「局面」とか、意味のあいまいな言葉を無定義で使うなよ

796:デフォルトの名無しさん
08/06/01 22:48:07
隣の将棋盤の駒の配置と持ち駒の数や種類が、その隣の違う対局の数時間前のときの全く同じ将棋盤の駒の配置と持ち駒の数や種類がある手において、同一だったと言う事は無いのかと言ってる。

797:デフォルトの名無しさん
08/06/01 22:55:09
>795
「流れ」と言うのはある局面から別の局面に至る経路の事だよ、多分。
>794じゃないけど。

で、違う経路から見かけ上同一の局面に至る事は
それこそ幾らでもあるし、ループする事もある。

798:デフォルトの名無しさん
08/06/01 23:03:43
評価値として
勝ち、負け、千日手、勝ちか千日手、負けか千日手
を定義すれば局面評価DBを作る点では問題無くない?

799:デフォルトの名無しさん
08/06/01 23:11:41
>>798
問題ないかどうかは、どういう目的で作るのかによるけど

そもそもそのような評価が、駒配置だけを見て可能か
ということに対して懐疑的なんだと思うよ

800:デフォルトの名無しさん
08/06/01 23:14:47
今の指し将棋プログラムは現状の局面状態(駒割と駒の配置)だけで持って、
盤面を評価してるように見えるから >789のように勘違いする人も居るんだよね。
ところがその評価はかなり荒い近似に過ぎないから通用するのであって、
厳密に確定局面から遡って評価しようとするとそこに至る経路情報が必須になる。

詰め将棋プログラムは確実に経路情報を考慮してるし、しないと答えを間違う。
いわゆるGHI問題。

801:デフォルトの名無しさん
08/06/01 23:29:54
経路情報は局面間を結ぶ有向線として持てると思う
勝ち負けの決まる局面は確かに存在する
これらの情報で中間局面をどう評価するかだけど
相手の手が何であっても勝ち局面に遷移できる局面は勝ちたが
相手の手によって勝ち千日手負けのいずれも有りうる局面もあると思う
そんな局面は勝ちやすさで評価する
勝ちやすさは例えば勝ち評価値の局面への距離とかで決める
そんな単純じゃないと思うけどね

802:デフォルトの名無しさん
08/06/02 00:19:51
>>800
俺はコンピュータ将棋の開発者で、GHI問題はもちろん知っている。
GHI問題を正しく理解していないのはお前のほうだろ。

詰みのあるすべての局面の集合から逆算してんだぜ?
GHI問題なんか起こるわけないだろ。

ただしそこに至るまでに同一局面が3回以上出てきていないという条件が必要だが。
(連続王手の千日手を発生させないため)

803:デフォルトの名無しさん
08/06/02 00:21:54
>>802
>ただしそこに至るまでに同一局面が3回以上出てきていないという条件が必要だが。

おいおいw

804:デフォルトの名無しさん
08/06/02 00:24:48
>>803
お前、頭おかしいんじゃねーの?

805:デフォルトの名無しさん
08/06/02 00:28:27
> 俺はコンピュータ将棋の開発者で、

権威づけか

806:デフォルトの名無しさん
08/06/02 00:29:35
>>805
実際に作ってもない/作れない/作ったことがない奴に言われたくないね。

807:デフォルトの名無しさん
08/06/02 00:32:17
作ってるのに理屈がわかってないんだとしたら
そっちの方がよっぽど問題のような…

そんなに俺様の言うことを聞けって言いたいなら
コードの断片でもうpしてからにしろよ

できないならおとなしく名無しに戻っとけ

808:デフォルトの名無しさん
08/06/02 00:35:10
>>807
理屈がわかってないのはお前。

お前はGHI問題が何故発生するのかわかっていない。

809:デフォルトの名無しさん
08/06/02 00:37:14
>俺はコンピュータ将棋の開発者
イタイ奴が来たなwww

頭おかしんじゃね?

810:デフォルトの名無しさん
08/06/02 00:38:47
>807
詰め将棋解法プログラムのような答えが
厳密に求められる問題に取り組まないと
開発者と言えども勘違いする可能性はあるな。

811:デフォルトの名無しさん
08/06/02 00:39:57
>>810
お前もGHI問題が何故発生するのか理解できていない。

812:807
08/06/02 00:40:44
>>808
いや俺は横から茶々を入れてるだけで
何も言ってないんだけどな

自分以外(正確には自分に異論をいう奴)を全部
一人の人間だと思っちゃうっていうのは
ありがちなことなんだけどかっこよくはないよ

GHI問題については>>191あたりから始まって
>>234とかの議論でさんざんがいしゅつなんだけど
もちろんそのへんはログ読んだ上でのレスだよな?

しかも「お前はわかっていない」とかじゃなくてさ、
だったらちょっと簡単にでいいから説明してみろよ
ほら

813:デフォルトの名無しさん
08/06/02 00:43:39
経路君のソフト楽しみにしてます^^

814:789
08/06/02 00:44:07
>>812
詰み局面から逆算するんだぜ。GHI問題なんか起こらないよ。
GHI問題が起きるのは、探索中の循環を即、不詰めと判定するからだ。

GHI問題でよく話題になる図を勝ちの局面であるIから逆算して行くとわかる。

815:デフォルトの名無しさん
08/06/02 00:45:06
お前ら、シャープの亀山工場で液晶を組み立ててる工員が
みんな液晶の仕組みを理解してるだなんて思ってないだろ?
そういうことだよ

816:デフォルトの名無しさん
08/06/02 00:48:23
>814
どのように逆算するの?
つまりその逆算する時に経路情報を考慮するの?しないの?


817:デフォルトの名無しさん
08/06/02 00:49:31
>>814
あー詰み局面から逆算していく話が続いてたのか

その場合で、局面というのは駒配置だけじゃなくて
局面の出現回数も持たなきゃいけないよな

そうしないと、千日手になるはずの手順は
永遠に「勝ち」とも「負け」とも塗られないことになる

ような気がするんだが

818:デフォルトの名無しさん
08/06/02 00:52:52
○→○→○→○→○
        ↑      ↓
        ○←○←○

こういうループだけじゃなくて

○→○→○→○→○
↑      ↓
○←○←○

こういうループもあるよな

819:789
08/06/02 00:53:08
>>816
経路情報を考慮しないし、する必要はない。
ただし循環は検出する必要がある。

具体的に書くと

Iが勝ちとわかっている局面。よって、直前のGも勝ち。その直前のEも勝ち。
Eに至る手順はB,K。Bは相手の手番なのでDを選択されて負け。よってBは負け。(勝ち局面の集合にBは含めない。)
Kは勝ち。たどって、Jも勝ち。Hも勝ち。Hに至るのはE,F。

Eは自分の手番だし、勝ちだとわかっている局面。よって、Eのほうの探索はここで打ち切り。
残るはF。Fは勝ち。その直前のCも勝ち。その直前のAの局面は自分の手番なのでCを選んで勝ち。

よってAは勝ちの局面。GHI問題なんか発生していないし正しくAの局面の勝ちを判定できている。

820:デフォルトの名無しさん
08/06/02 00:55:09
ちなみに>>789は意地悪だから図を書いてくれないけど
>>234のPDFを参照な

821:デフォルトの名無しさん
08/06/02 00:56:26
>>818
        ./ニYニヽ
 r、r.rヽ.  / (0)(0)ヽ
r |_,|_,|_,|/  ⌒`´⌒ \   で?っていう
|_,|_,|_,|_,| , -)    (-、.|   
|_,|_,|_人 (^ iヽ__ ノ l |
| )   ヽノ |  `ー'´   /
|  `".`´  ノ
   入_ノ
 \_/
   /
  /

822:789
08/06/02 00:56:33
>>817
> あー詰み局面から逆算していく話が続いてたのか

続いているも何も、最初から最後まで、詰み局面をデータベース化しよう、という話なのだが。

具体的には、これだ。
URLリンク(d.hatena.ne.jp)



823:789
08/06/02 00:57:20
>>820
すまない。俺は意地悪なんじゃなくて図とか苦手なんだ。ほら…わかるだろ。

824:789
08/06/02 01:02:58
>>817
> その場合で、局面というのは駒配置だけじゃなくて
> 局面の出現回数も持たなきゃいけないよな

「局面の出現回数」は持たなくてもいい。

>802で書いたが
「ただしそこ(判定したい局面)に至るまでに同一局面が3回以上出てきていないという条件が必要」だが、
これを前提条件とできるなら「局面の出現回数」のデータベースへの記録は不要。

ただし、勝ち/負け/引き分けとラベリングされた局面はすべて記録(データベース上に保持)していることが前提。


825:デフォルトの名無しさん
08/06/02 01:03:49
>>882
あれ、与えられた局面が勝ちか負けかを判定するデータベース
つまり必勝定跡を構築する話をしているんだと思ってたんだが

そして、その「局面」というのが駒配置だけでよいのか、それとも
駒配置の出現回数も持っていなきゃならないのかだと思ったが

経路という言い方をするからGHI問題と絡んでいるように見えて
いろいろみんな混乱したるんじゃないかな


それで、仮に、駒配置だけで勝ち負けが決まるのだとしたら
もちろん「この局面は千日手」というラベルを貼られる
局面(駒配置)もあると思うのだけど、
詰み局面(駒配置)からたどっていったとき
千日手のラベルを貼る機会というのはどういうとき?

826:789
08/06/02 01:04:53
あと、終盤のデータベース化については >822 以外にも

URLリンク(d.hatena.ne.jp)
URLリンク(d.hatena.ne.jp)

このへんも参考にしてくれ。


827:789
08/06/02 01:06:49
>>825
> あれ、与えられた局面が勝ちか負けかを判定するデータベース
> つまり必勝定跡を構築する話をしているんだと思ってたんだが

その過程で引き分けデータベースも出来るだろ。

> そして、その「局面」というのが駒配置だけでよいのか、それとも
> 駒配置の出現回数も持っていなきゃならないのかだと思ったが

俺の言う 局面 とは 盤上の駒配置・手番。その局面の出現回数は関係ない。


828:デフォルトの名無しさん
08/06/02 01:17:58
>>824
あー、その条件があればたぶんそうだよな
でも前に進むなら、ループしたら「千日手」、でいいと思うけど
後ろに戻っているのだから難しい気が

まあ、どうせ局面(駒配置)の数は有限なのだから
全部調べて「勝ち」にも「負け」にもならなかったものは千日手
でいいのかもしれないけど

829:789
08/06/02 01:20:12
>>825
> 詰み局面(駒配置)からたどっていったとき
> 千日手のラベルを貼る機会というのはどういうとき?

いま、 A,Bが未ラベルとする。Aは自分の手番、Bは相手の手番とする。
このとき A→B→A のような循環を発見した。

AからB以外に行く手は負けとする。
BからA以外に行く手は勝ち(=相手の負け)とする。

このとき自分にとっても相手にとっても千日手を選択するのが最善だからA,Bの局面の最善は引き分け。

このように未ラベルの局面同士の循環を発見して、この循環がお互いの最善であるときこれらの局面を
引き分けのリストに追加する。

825はどうも勘違いしているようだが、このA,Bの局面の「出現回数」を記録しておいてもこの循環の検出の役には立たない。

830:デフォルトの名無しさん
08/06/02 01:21:27
>>818
下の図は「双方最善を尽くしたら出現しないはずの詰み形」かな
つまりループからしか到達できない詰み形

でもそれを排除してしまったら次の一手解答マシンとは言えないよ

831:デフォルトの名無しさん
08/06/02 01:27:55
>>829
あー、うんそれならいいよ
ようするに>>828の後半と同じことだな

神ならぬ人間から盤面を引き継ぐことはない、という前提なら
たぶんそれでいいんじゃないかと思う

「勝ち筋があるけど、引継ぎ元が棋譜汚しをしてくれたせいで
千日手になるからそれは指せない」とかは考慮しないということで

832:789
08/06/02 01:28:14
829の続き。

引き分けの検出のために、局面の循環を発見する方法は別の方法が必要だ。

例えば、次の例を考える。
A,B,Cが未ラベルで、Aは自分の手番、B,Cは相手の手番とする。

・AからB,Cに遷移でき、それ以外は負け
・B,CからAに遷移でき、それ以外は勝ち(=相手の負け)

この場合も双方、千日手にするのが最善である。

この循環を検出するためには、AはポインタでありB,Cをポイントしており、
B,CもそれぞれAをポイントしていると考え、JavaVMなどで見られる
garbage collectorのようなものを実装する必要がある。(この説明でわかってもらえるだろうか?)


833:789
08/06/02 01:31:04
832に書き忘れた。

garbageが起きて回収されるなら、それは循環参照がされていたということだ。
garbage collectorの実装はいろいろあるから、詳しくはその手の本を見てくれ。

834:デフォルトの名無しさん
08/06/02 01:31:38
>>832
あー、GCが循環参照を発見する方法か

でも、現実的な時間にリアルタイムで計算するのではなくて
巨大な次の一手解答集を用意するイメージなのであれば
勝ちでも負けでもないものは引き分け、でいいような

835:789
08/06/02 01:33:45
>>834
おまい、なかなか頭がいいな。
コンピュータ将棋の開発者だな?大会で待ってるぜ!(`ω´)

名無しに戻る。長々と失礼した。

836:デフォルトの名無しさん
08/06/02 01:36:56
いや、俺は松原先生の本を昔図書館で何冊か読んだ程度で
ゲームの数学は全然わからない素人だからあれだが

寝るぽ


837:デフォルトの名無しさん
08/06/02 01:39:22
>830
そうだよな。
>829の話は尤もらしいのでつい信用しそうになったが、
先手後手双方、最善を尽くした場合の局面だけでなく、
任意の局面にラベリングしようと思ったら
扱えない局面が出て来そうな気がする。

詰み局面から逆算してデータベース化するだけであって、
そんなもの知らないってんなら、それはそれで良いけど。

838:デフォルトの名無しさん
08/06/02 01:41:33
ループ内に王手が存在するかどうか吟味しなきゃならないから
>>834の方法はそのままでは駄目だな

839:789
08/06/02 01:45:11
>>837
> 任意の局面にラベリングしようと思ったら

「1手詰みの局面」のすべてを表す集合から逆算するって話なんだぜ?

任意の局面にラベリングできるよ。
将棋の初期陣形とは何の関係もない。

詰みに至ることが出来る局面の解は(無限のメモリと無限の計算時間があれば)
すべて求めるに決まってるじゃないか。


840:デフォルトの名無しさん
08/06/02 01:47:59
盤面が有限だから有限でいいけどな

841:デフォルトの名無しさん
08/06/02 01:52:00
「どうやっても連続王手の千日手に持ち込まれてしまい負け」が処理できない

842:789
08/06/02 01:52:19
>>838
それはその通り。

検出された循環(DCG)内で、連続王手にならないループが一つもなければないほうの負け。

双方が王手しあうループしかない場合、互いに逆王手を繰り返すことになるのだが、これは
よく知らないが、将棋のルールでは引き分けなんじゃないかと思う。


843:789
08/06/02 01:53:07
>>841
>>842

844:デフォルトの名無しさん
08/06/02 01:56:21
千日手になるときに手を変えなきゃならないだから
その4回目に登場する局面を指す方が負けか

すると、「どの地点からループに合流したか」が
重要になってくるような気も…。

845:789
08/06/02 01:57:15
>>844
>>824


846:789
08/06/02 01:58:32
あっ。844は842の双方連続王手のことか。

いま検討していたのだが、双方連続王手は普通の将棋の駒では実現できないようだ。

847:デフォルトの名無しさん
08/06/02 02:02:19
いや、だから A→B→A が連続逆王手のループだとして
A は自分の手番、B は相手の手番だとして
C → B → A → B → A → B → A
と進めば次で B を指せないからこれは自分の負け
D → A → B → A → B → A → B
と進めば次で A を指せないからこれは自分の勝ち

だったら A とか B は自分の勝ちなのか負けなのか

848:デフォルトの名無しさん
08/06/02 02:05:39
>>846
んーそれはほんとなのかな

849:789
08/06/02 02:07:46
>>848
本当だ。俺には証明はスマートには出来ないが。

850:デフォルトの名無しさん
08/06/02 02:21:39
>>849
出来る気がする。考えてみよう

851:789
08/06/02 02:26:14
>>850
俺が1分も考えて出来ないと結論を出した。間違いなく出来ない。

852:デフォルトの名無しさん
08/06/02 02:29:56
>>849
スマートでなくてもいいから証明してくれ


853:789
08/06/02 02:46:56
>>852
王手の種類を
(A) 王の移動による王手
(B)駒を打つ・移動させることによる王手とにわける。

Aは、大駒の利きが王によって遮断されて敵玉をにらんでいる状態でなければならない。
しかし、…(中略)で、そのように配置することは不可能である。

Bは、その駒を打つ・移動させることが直前の王手を防ぐ手になっていなければならない。
しかし、直前の王手を、(A)、(B)それぞれの場合について場合分けして考えると
…(中略)でこれまた不可能である。

よって、双方連続王手は不可能である。

854:789
08/06/02 02:57:31
853補足。大駒には、複数マス進める駒で香も含む、としてくれ。

> しかし、…(中略)で、そのように配置することは不可能である。

この部分は、王の影になっていたのが直進できる駒かそうでないかで場合分けするんだ。

もっとスマートに証明出来るかどうかは知らん。

855:デフォルトの名無しさん
08/06/02 03:02:13
あらゆる局面(駒配置)にラベルを付けられると仮定して
一手目の局面もラベルがつくのかな?

856:デフォルトの名無しさん
08/06/02 03:14:04
人が居るみたいだから質問。
最近ブックを実装したんだけどブックにはどんな情報を保持すればいい?
今のところ自分はハッシュ値と評価値とそれを算出した読みの深さと勝ち負けなんかのフラグ。


857:855
08/06/02 03:17:02
>>856
ごめんよワシには判らんし明日仕事だからもう寝る

858:デフォルトの名無しさん
08/06/02 03:18:48
了解
お休み

859:789
08/06/02 03:24:02
>>855
> 一手目の局面もラベルがつくのかな?

839の話をしていて、「一手目の局面」が初期陣形のことを指しているなら、
初期陣形にも勝ち/負け/引き分けのいずれかのラベルが付く。



860:デフォルトの名無しさん
08/06/02 03:26:26
局面の出現確率がないと古い定跡やマイナーな変化に進んでいきそうではある

861:デフォルトの名無しさん
08/06/02 03:39:08
4649

おまいら最強のシストレFXプログラムをしてみろよ
スレリンク(tech板)

862:デフォルトの名無しさん
08/06/02 10:06:32
>>861
理詰めゲームとサイコロ賭博は全く違う話ですから食いつかないかと

863:デフォルトの名無しさん
08/06/02 22:53:42
未来の名人戦は振り駒というランダム要素を
4回取った方が勝ちというゲームですが何か

864:デフォルトの名無しさん
08/06/03 00:28:09
未来将棋は同時指しでしょ

865:デフォルトの名無しさん
08/06/03 00:55:47
戦争シミュレーションにターンとかわけワカランよな。
リアルタイムだろどれもこれも。

866:デフォルトの名無しさん
08/06/03 02:26:47
局面の遷移履歴によって持駒が変わると思う
そうすると次に遷移可能な局面の集合が変わる
局面の履歴か持駒のバリエーションを考慮する必要がある


867:デフォルトの名無しさん
08/06/03 21:16:32
今頃読んだけど、
>>819
データベースを作ったとして、実際に使う時には経路があるにこしたことはないよね。

例えば、データベースには負けと書いてあっても、実際に指し続けて、もし証
明木のどこかで今までに3回あらわれた局面を通過すれば引き分けになるから。

反対意見ではなくて、経路の活用の余地について関連コメント。

868:デフォルトの名無しさん
08/06/03 22:22:40
>>867
そんなデータベースは現実的に作れる規模ではないというのはおいとくとして・・・
一体、おまいは何の経路をデータベースに保存しとこうと思うんだ?

与えられた局面から勝ちまでの手順か?勝ちまでの手順は木になってるわけで、
そんなものは全部保存しておけるわけないだろ。

しかし、仮にストレージが無限にあって保存できるとしよう。

では、初期局面から勝ちまでの手順をデータベースから取得しようと思うと、
それこそ終局までのありとあらゆる変化を含んだ木が得られるわけだよな。

これがメモリに入るか?宇宙に存在する原子の数より多いんだぞ。

869:デフォルトの名無しさん
08/06/03 22:25:47
868の続き。

でも、仮に、無限にデータの入る秘密の箱があって、メモリに読み込まなくてもいいとしよう。

この木のなかに、その局面に至るまでに3回現れた局面があるかどうか調べるのに
どれだけのコストが必要になる?仮に現れていることがわかったとして、ではその局面を
回避して勝ちに行く経路があるかどうかをどうやって調べるんだ?

それってこのAND/OR木を探索しているのと同じだけコストがかからないか?

うまくすれば探索しなくてすむとは思うが、1つの局面に対して莫大なindexを貼る必要があるだろ。
宇宙に存在する原子の数の2乗や3乗で済まないと思うぞ。

870:デフォルトの名無しさん
08/06/03 22:36:23
まあ、そんな完璧なデータベースがあれば、コンピュータは神様と同じ棋力があるわけで、
人間みたいな間違いだらけの棋力の低い将棋を神様に指継いでもらうということ自体が失礼ってもんだ。

でも、もうちょっと建設的な意見を。

勝ち/負け/引き分けをラベリングするときに、勝ち/負けなら「何手で詰む」というのを記録しておけば、
与えられた局面から終局への距離がわかるから、与えられた局面から終局に近くなるほうに向かって、
「3回あらわれた局面を通過」しないように勝ちを探して探索すればいい。

そうすれば、その探索の深さの範囲内では「3回あらわれた局面を通過」しない勝ちを探すことは出来るだろ。
このときの「探索の深さ」が深ければ深いほど正解に近くなる。この手法のほうが経路なんかをデータベースに
保存するよりよっぽどいい。



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch