おまいら最強の将棋プログラムしてみろよ part7at TECH
おまいら最強の将棋プログラムしてみろよ part7 - 暇つぶし2ch421:デフォルトの名無しさん
09/06/25 19:27:37
>>420
すべてがやねうらおに見えている死ねば世のためである自演豚人間のクズ基地外知能障害自称SF作家(自費出版で1冊も売れない)についてよくわかるスレ
スレリンク(sci板)
スレリンク(sf板)

自称ネットストーカー被害者の正真正銘の基地外についてよくわかる記事
URLリンク(d.hatena.ne.jp)

422:デフォルトの名無しさん
09/06/25 23:44:03
おれはやねうらおじゃないけど、ブログは結構好きで時々読んでる。
ちなみに俺も八尾出身(高美のほうだけど)。
やねうらおがんばれ。



423:デフォルトの名無しさん
09/06/26 00:38:47
>>422
前から感じていることなんだが、将棋ソフト開発者の気質には、ちょっと普通とは変わった特徴があるようだ。
善悪を判別する道徳観が弱いこと。良いか悪いかではなく、自分に近い人間のほうを応援する。かくして容易に悪が連合する。
これは他の開発者個人にも共通して見られる特徴だ。「将棋ソフト開発者気質」というものか。
まず根底にあるのは自己中心。自分を中心とした世界観を持っており、自分に都合の良いものは「善」、都合の悪いものは「悪」だと思っているようだ。
あるいは「好きか嫌いか」という自分の好みと「善悪」を安易に混同してしまうところがある。
これは博愛主義の対極に位置するもので、差別主義・民族至上主義など、満州で悪虐の限りを尽くした大日本帝国の日本人の気質にも見られる特徴だ。

424:デフォルトの名無しさん
09/06/26 01:33:12
すべてがやねうらおに見えている死ねば世のためである自演豚人間のクズ基地外知能障害自称SF作家(自費出版で1冊も売れない)についてよくわかるスレ
スレリンク(sci板)
スレリンク(sf板)

自称ネットストーカー被害者の正真正銘の基地外についてよくわかる記事
URLリンク(d.hatena.ne.jp)


425:デフォルトの名無しさん
09/06/27 11:51:58
スレが伸びてると思って来てみれば・・・

426:デフォルトの名無しさん
09/06/27 13:30:02
こんなので埋まってしまうのかと思うと
かなり情けないよな。

427:デフォルトの名無しさん
09/06/27 16:17:33
あまりコピペがひどい場合、運営に通報すれば規制対象になるよ

428:デフォルトの名無しさん
09/07/01 18:03:45
ほんと久しぶりにスレが伸びてると思ったのにorz

429:デフォルトの名無しさん
09/07/01 18:25:51
スレリンク(bgame板)
こちらもどうぞ

430:デフォルトの名無しさん
09/07/02 23:16:15
スレリンク(bgame板)

431:デフォルトの名無しさん
09/07/15 15:05:32
記事入力 2009-07-15 02:59
“ナロ号発射直接見に行こう” 高興(コフン)は今‘部屋を手に入れる戦争’

■韓国最初宇宙ロケット発射D-15…現地表情

民宿はもちろんテントまで品切れになって

遊覧船予約も3日ぶりに終わり

肉眼観測するビューポイント選定

駐車場-特設舞台新設奔走

30日韓国最初宇宙ロケット‘ナロ号(KSLV-I)’発射を控えて韓半島南の端すそ全南(チョンナム), 高興
郡(コフングン)がうきうきしている。 発射当日を前後して, 峰来面(ポンネミョン),ナロ宇宙センター近隣
宿泊施設予約がほとんど終わって, 時宜外れの‘部屋を手に入れる戦争’も広がっている。 ‘宇宙都市’
高興郡(コフングン)は大韓民国の夢と希望をのせて宇宙へ行くナロ号発射祝い行事準備で忙しい。
ロケットが空へほとばしる場面を肉眼で見られる‘ビューポイント’を選定して発射特需を生かすために
観光商品も作った。


“残った部屋がないです。 民宿はもちろんで海水浴場モンゴル式テントまで….”

全南(チョンナム),高興郡(コフングン),影南面(ヨンナムミョン)ナムヨルリ。 この村はナロ宇宙センター
へ直線距離で15km離れているが, 肉眼で宇宙センター建物が見えるほど展望が良いところだ。 この村
のマ・ヨンマン次長(63)は “29日から31日まで部屋を探し当てようとする人々のために大変な苦労をし
ているが, それでも気持ちは良い”と笑った。

こちらは夏ならば10世帯余りが民宿を運営する。 先月開場した海水浴場には避暑客のためのモンゴ
ル式テント60棟が設置されている。 民宿とテント予約は先月10日ナロ号発射日が発表されてすぐ皆終

432:デフォルトの名無しさん
09/09/02 15:55:31
ほs

433:デフォルトの名無しさん
09/09/02 22:28:07
生き残っていたか。俺もプログラムしてみよーかなー。

434:デフォルトの名無しさん
09/09/25 09:54:31
また、ほs

435:デフォルトの名無しさん
09/09/28 00:40:40
将棋所用になんとか将棋のルールだけはプログラミングしたw
思考ルーチンはどう作ればいいんだ?ww

436:デフォルトの名無しさん
09/09/28 13:58:20
総当り

437:デフォルトの名無しさん
09/09/28 14:24:56
反復深化

438:デフォルトの名無しさん
09/09/28 16:01:08
>>435
まず定石を全て登録してからだ、話はそれから

439:デフォルトの名無しさん
09/09/28 16:04:59
定跡入れたほうがやっぱ強いのか?
新しい定跡を編み出したいんだがw
もうそれは不可能か

440:デフォルトの名無しさん
09/09/28 17:51:57
なんか本買えよ

441:デフォルトの名無しさん
09/09/28 18:56:15
うさピンさんの本
マジおすすめ

442:デフォルトの名無しさん
09/09/28 19:27:51
マルチださぁ~~~~~ん!!

443:デフォルトの名無しさん
09/09/28 21:44:05

マルチ打算

444:デフォルトの名無しさん
09/09/29 16:16:50
浅読みくんのブログ参考になるなぁ

445:デフォルトの名無しさん
09/09/29 16:26:21
どの将棋ソフトも成功した例を強く記憶するようにできてるね
でも人間って成功例よりむしろ失敗のほうを強く記憶するよね

成功例を記憶するようにすると指し手が収束し、新しい発見の可能性を
減らしていることにならないのかな
このソフトはこの局面の時いつもこうするみたいな

446:デフォルトの名無しさん
09/09/29 16:34:16
>>445
成功している間は使いつづければいいんじゃない?
相手が違う応対を考えて、うまくいかなくなったら
別の指し手を考えるようになる。

お互いが切磋琢磨して作りあげる。
それを定石という。

447:デフォルトの名無しさん
09/09/30 02:07:37
ある局面の合法手と駒の座標すべてのマス目を赤と青の2値化にして
図形としてイメージで記憶させる
これで標準のPCでも30手先まで読めるようになった
局面を完璧に記憶させて行くよりもデータ量も少なくて済むな

448:デフォルトの名無しさん
09/09/30 06:44:49
意味がわからん

449:デフォルトの名無しさん
09/09/30 12:58:17
>>447
30手って、それ実装したの?
局面をイメージと言い替えてもPCのやることは変んないんだけど。

情報量がどんだけ減ったとか計算量がどう減ったとか
言わないと相手にしようがない。

450:デフォルトの名無しさん
09/09/30 13:14:41
jpeg圧縮や顔マッチングなどの画像用の手法が使えるって言うことじゃね?

451:デフォルトの名無しさん
09/09/30 13:22:59
>>450
エスパー乙
本当なら論文が書けそうだが、
画像をデコードして次の手を指して画像にエンコード
の繰替えしってことか?
SSEとか駆使したら実用になるのかね

452:447
09/09/30 13:54:07
画像マッチング法と同じようなアルゴリズムだよ
ただ、画像で保存してたら普通に局面を数値化して保存したほうが
はるかにデータ量が少なく済むのでそんなバカなことしませんよw
あくまで数学的図形として保存してますです

簡単にいうと、曖昧記憶、曖昧検索を実装した感じです
局面を具体的に記憶せず抽象的に認識する手法です
またその図形で保存した局面を8分割(ドットの荒い画像と思ってください)にしてより検索効率を上げる予定
人間が一瞬にして状況を把握できるのはイメージとして記憶しているからなんです
それを具現化してみようという作戦です

453:デフォルトの名無しさん
09/09/30 14:03:52
なるほど

454:デフォルトの名無しさん
09/09/30 14:11:58
あー、ある種の検査装置と似たような考え方だな。
全面検査したデータを画像化するとテラバイト級になるから、
特徴のみを検査して危険点だけ画像解析するの。

455:デフォルトの名無しさん
09/09/30 15:37:06
端歩をついてるついてないとかいう部分が曖昧になったりしない?
検索にはいいけど次の手を決められるのかしらん?

456:デフォルトの名無しさん
09/09/30 17:31:04
bitboardではなさそうだし、既存のチェス・将棋の
アルゴリズムとは根本的に異なる探索っぽい。
本当ならボナメソやUCTをゴミ扱いできるほどの大発明だな。

457:デフォルトの名無しさん
09/09/30 17:33:58
そんな曖昧な局面マッチングではろくに探索できないと思うよ

458:デフォルトの名無しさん
09/09/30 18:21:50
それが実際にどうなのかはやった奴が一番わかってると思うよ


459:447
09/09/30 18:28:20
重要なのは正確性ではなく先読みする力だと考えています
先が見えない真っ暗な道をしらみつぶしに進んでいくような
今の手法はハードの性能が上がれば強くなるりますし
そういう考え方で作られているソフトは多数あります
わたしは違うアプローチをしてみることにしました

わたしのソフトは50手先だろうと瞬時にイメージすることができるのが強みです
またそれに対する勝ち筋を求める場合も通常の完全一致参照手法と比べ
探索が深くなればなるほど、スピードの差が顕著になります
目標地点をイメージして進むわけですから当然ですよね

中盤など天文学的な局面を完璧に覚え、探索していく手法は逆に無駄が多いわけで
重要なのはその局面における個々駒が持っているベクトルです
ベクトルに分解して図形として抽象化させることで
局面データの削減と参照量の増大を実現することができました

460:447
09/09/30 18:50:49
>>456
ほかのそれと同じようにミニマックス法も採用してますよ
そしてそれとは別にテンプレートマッチング法(かなり違いますけどわかりやすく言うと)も取り入れているわけです

前者が論理というなら後者は直感という感じですね
後者による探索の場合は何手先なのかはあまり重要ではありません

人はある思い出を断片的に覚えていますよね?
そして人に話す時にその記憶の断片を論理的に繋げていくわけです

461:デフォルトの名無しさん
09/09/30 23:22:43
前向き枝刈りで深く読むのと同じ気がする

462:デフォルトの名無しさん
09/09/30 23:24:31
要は実現確率探索のようなものか
見込みのあるところだけ深く読むっていう

463:デフォルトの名無しさん
09/10/01 02:27:54
447は凄く電波だと思う。

一言で言うなら、「こいつただのキチガイじゃないか。」

将棋って先を読むことが重要なんじゃなくて、意味のある変化をくまなく調べることが大切だろ。

ぼろぼろ取りこぼしながら先まで読んだところでそれは独善的な読みと同じで何の意味もなさない。

464:デフォルトの名無しさん
09/10/01 02:37:41
効果があるか無いか勝率で検証すればいいだけのこと


465:447
09/10/01 03:02:46
??
言っている意味がよくわかりませんが
プログラマの意見では無さそうですね

逆に言うなら、取りこぼさない人間やソフトは存在するのでしょうか?
すべての意味のある変化を理解することができる人間やソフトは存在するのでしょうか?
ハードやソフトウェア面において、昔より進歩した現在でもまだまだ非力です
何億局面も瞬時に読み取れる性能はありません
そういった中での1つの手法とお考えください

466:デフォルトの名無しさん
09/10/01 05:47:48
次回のコンピュータ将棋選手権に間に合うように頑張ってくれ。

467:デフォルトの名無しさん
09/10/01 08:18:39
別人だか、俺は元物理系学生の今本業プログラマ

その経験からすると、このお方>>465
プログラマというより学者な感じがするな。

万偶師匠の次のネタかな?
新手法として発表されるよう期待してます。

468:デフォルトの名無しさん
09/10/01 09:03:46
447は妄想者。相手にするな。京都大のハブキラーよりひどい。

469:デフォルトの名無しさん
09/10/01 13:09:12
発想も実装も両方うまく出来る人材はあまいいないよね。

470:デフォルトの名無しさん
09/10/01 15:58:52
>>465
> 逆に言うなら、取りこぼさない人間やソフトは存在するのでしょうか?

取りこぼしが問題ではないんだよ。

詰め将棋が詰むことを証明するのに必ず一定量の変化は調べないといけないように、
本将棋だって棋力を上げようと思えば、一定量の変化は調べないといけないということだよ。

それを重要な変化をはしょって、30手先を調べてもそれでは棋力向上しないってーの。

471:デフォルトの名無しさん
09/10/01 16:07:50
大事なのは、良い指し手を低コストで生成すること。
機械学習では、プロ手が選ばれやすいようにしているが、
2手、3手読んでから、価値の低い手を切り捨てている。
これはコストが高い。
0手読みで最善手が得られれば最も理想的。しかしこれは神の領域で無理。
なるべく低い手数で良い手が生成出来れば、読みを駆使してより良い手が選べる。


472:デフォルトの名無しさん
09/10/01 16:17:33
その前に現在の局面を正確に記録できているのが前提のはず。
イメージにする際に情報落ちさせてたら、
その後最善手を選択できると思えない。

結局bitboradと同じ情報量が必要なはずで、
そうすると優位性はなくなると思う。

473:デフォルトの名無しさん
09/10/01 16:45:49
イメージ厨は相手にするなよ。
プロが強い理由は、読みが多いからではなく一目で最善手の見当が付くから。
無意味な手を30手進読めたところで意味がない。ランダムに30手進めることは簡単。
30手読めるってことは、(取りこぼしがあっとしても) COMの判断では
すべての30手後の中で一番有利になる手が選べるってこと。

474:デフォルトの名無しさん
09/10/01 16:54:14
30手厨もよくわかんね

475:447
09/10/01 17:07:06
>>470-473
またプログラマでない人の発言ですね
どのレスも文体が同じなのですぐわかります

言ってもいないことでっち上げてそれに対してダメ出しされても困るんですが・・
最良の選択肢を選ぶための手法が違うということでご理解頂けませんか?
わたしのソフトに完璧を求めているのならそれは無理です
見落としはあります、それは人間でも他の将棋ソフトでも同じことです

それと>>460をもう一度読んでください

476:デフォルトの名無しさん
09/10/01 17:15:17
自分は今日初めてレスしたんだけど・・・
それ以前に居ないのだから文体でわかるはず無い。
ここに文書上げるより、ソフト上げてもらったら明快。
いつになっても完成しないか、まんぐう以下とは思うが。

477:447
09/10/01 17:15:58
プロでさえ、今まで対局した棋譜をすべて正確に記憶している人はいません
ただ、断片的に記憶しそれを論理的に繋げることはできます

現在多くのソフトウェアはある程度合理的な手法を取り入れてはいますが
無作為(あなたが言っているランダムです)に探索しているに過ぎません
また現在のハードウェアではその探索できる範囲も全体の極わずかです
それを飛躍できるのが直感であるとわたしは考えています
そしてわたしはその形作りをしているわけです

478:447
09/10/01 17:28:29
>>470
重要な変化を重要であると完璧に理解できるソフトや人間がいると思いますか?

>>472
完璧に最善手を選択できるソフトや人間がいると思いますか?

そうではなくて、貴方が言っている最善手がある種のアルゴリズム上での結果というなら
それはわたしのソフトにもありますよ
それがなければ次の一手がさせないわけですからね

プログラマにしてもそうでないにしても、将棋プログラムに対しての知識が浅いのは明確ですね

479:デフォルトの名無しさん
09/10/01 17:30:11
低コストで質の良い手を生成する事と、次に読むだろう局面の下準備をして高速化する事
くらいの改良で大分よくなるとおもうが。
ようするに重要なところを沢山読むってことだけど。
ハード面でも、ソフト面でも無駄な読みをしないって事。

480:デフォルトの名無しさん
09/10/01 17:38:44
俺はマだって言ったのに全員マじゃないって
一緒くたにしちゃってるよ。この人

2chも研究して自分の脳味噌も、もうちょっと最適化してよ

481:デフォルトの名無しさん
09/10/01 17:59:24
勝ち:447
負け:30手厨


482:デフォルトの名無しさん
09/10/01 18:37:09
447はただのキチガイだな

483:447
09/10/01 18:37:28
>プロが強い理由は、読みが多いからではなく一目で最善手の見当が付くから。
最善手と思われるものが脳裏に浮かぶのは、過去の経験の賜物です
しかしながら、過去のどの局面においてもまったく同じものはないはずです

ソフトウェアの場合はどうでしょうか?
少しでも配置が違うとまったく別物と判断するソフトと
類似するものを抽出するソフトとどちらが有能でしょうか?
さらにその局面のそれぞれの駒が持っている利きや重みを図形として保存したデータから
類似する局面を抽出できたらどうでしょうか?
合理的な手法とは思いませんか?
正確に局面を保存する通常のやり方では90%類似する局面を抽出することはまず無理です
膨大な局面データが必要になりますし、検索にも時間がかかります
また見つけられたとしてもまったく意味を成さない局面かもしれません

曖昧な記憶と曖昧な検索、これが局面をすばやく認識し
過去の経験を無駄にしないものだとわたしは思っています

484:デフォルトの名無しさん
09/10/01 18:43:30
>>483
そうかそうか、ここ以外でやったほうがいいよ。
来年のGWに選手権で合いましょう。

485:デフォルトの名無しさん
09/10/01 18:49:40
>>483
端歩や玉の位置が違うなどは、たとえば盤面を1/4ずつ分割して覚えておけばいい。
そして1カ所、2カ所の一致など調べればいい。
1/4箇所で指された指し手をすべて記録しておけば、低コストで指し手を生成出来る。

486:デフォルトの名無しさん
09/10/01 18:56:31
>>484
涙拭けよ

487:デフォルトの名無しさん
09/10/01 18:57:31
>>483
類似局面検索と30手後に現れるだろう局面を当てることはあまり関係ないが。
想定する局面になるかは、相手の指し手次第だ。
やはりmin-max検索の方法で、選ぶのが無難では。

488:デフォルトの名無しさん
09/10/01 19:14:23
>>487は素人


489:デフォルトの名無しさん
09/10/01 19:19:33
447氏の講釈もいいけど、実装してどのくらい有効だったかを知りたい。
とりあえず現段階での完成度はどのくらいか教えてもらえますか?

490:デフォルトの名無しさん
09/10/01 19:21:21
447の妄想です。 有効度などは測れません。 全く出来ていません。

491:447
09/10/01 19:21:34
>>483=470-473さんご理解頂けてなによりです

>>485
??
「例えば」といいながら「覚えておけばいい」「出来る」と断定的な口調になってますが・・・
重要なのはその分割方法ですね。どこを削ってどこを重要視するか
その分割方法が良くないと良い手もさせないわけで・・・
こういうことはプログラマなら言わなくてもわかると思うんですが・・
単純にその例でいうと3/4を見落としているわけですよね
詰めの段階ならまだしも、その考え方が中盤でも生きてきますか?
でも、低コストで指し手できるというのは合致ですね
だから?って疑問は残りますがw


>>487
何度も言ってますが、直感的イメージとそれを橋渡しする論理で成り立ってます

492:デフォルトの名無しさん
09/10/01 19:24:33
自演乙

493:447
09/10/01 19:32:27
鳥の造形を模した飛べない乗り物と飛ぶことを重視したジェット機
どちらに乗りたいですか?
いくらプロの真似をしても勝てなければ意味を成さないのですよ

494:デフォルトの名無しさん
09/10/01 19:35:37
抽象論はいいから
効果を検証しろよ


495:デフォルトの名無しさん
09/10/01 19:36:37
口だけ厨はまんぐうにも劣るがな 勝てるファイルをうpしてからいえよ

496:デフォルトの名無しさん
09/10/01 19:37:31
>>483
例えばボナンザの評価関数は3駒の位置関係で、
意味を失わない程度に細かく分解したパターン。
局面に現れた全てのパターンの値の総和が評価値。
やりたいことはほぼ同じでは?

497:447
09/10/01 20:33:15
>>496
優劣については来年の選手権で実証できるのではと思いますです。

498:デフォルトの名無しさん
09/10/01 20:34:55
来年ではなく、いまここでうpしたらわかること。

499:デフォルトの名無しさん
09/10/01 20:37:10
すべてが妄想なんだろ。 
来年の選手権までには完成している。来年の選手権は優勝している。イメージ、ベクトル理論は最強。・・・・

500:447 ◆PrkG0SXy1gHg
09/10/01 20:37:23
>>497
言い負かされて悔しいからって成りすまししないでね

501:447 ◆PrkG0SXy1gHg
09/10/01 20:40:11
いずれ納得行くものができたら
ソフトもソースも公開するつもりです
それと選手権には出るつもりはありません

502:447
09/10/01 20:42:12
おお、鳥付けられる知能はあるらしい

503:447 ◆PrkG0SXy1gHg
09/10/01 20:42:37
>>497-499は同一人物ですね
何が目的か知りませんけど幼稚ですね
人を妬むのは人として一番愚かな事ですよ
もっと自分に自信を持ってください

504:447 ◆PrkG0SXy1gHg
09/10/01 20:47:30
ちなみに
>>497-499=>>470-473=>>485=>>487
仮にプログラミングをやっているとしても初心者レベルでしょう

505:447
09/10/01 20:59:21
>>504
その内、俺のレスは>>472だけだよ
前から、俺を含めても3人はいるって言ってるのに。
あんた、人の話聞いてないね。

好意的なレスもしたのに誰も信じない人だね。
選手権出なくてもfloodgateに出せる品質にはなるのかな?
検証できないと話の相手にもならないし、
ここでの話も妄想となるからそうならないよう
せいぜいがんばってね。

506:デフォルトの名無しさん
09/10/02 00:51:30
誰と誰が会話してるのかわからんなw

まあ>>447も、そのうち効果の低い手法であることがわかるだろう。
将棋では効果的な前向き枝刈りは実に難しい。
俺もいろいろ試してみたことがあるが、適当にやると驚くほど弱くなる。

507:デフォルトの名無しさん
09/10/02 15:42:19
やねうらおが混ぎれ込んでいるなw

508:デフォルトの名無しさん
09/10/02 19:59:20
ひと目見て形勢が判るのは人間も評価関数も同じ
人間すげーなって思うのは、
印象を覚えておいて、それを持ったまま探索できる
COMは王手ラッシュして水平線効果ですべてを忘れるけど、
人間は印象を保持したままなので水平線効果を起こさない

このへんが自分の印象

探索せずに50手読める理論を構築したら447はノーベル賞獲れるよ!
ちなみにゲーム理論もモンテカルロ法もフォン・ノイマン(マメ知識な)

509:デフォルトの名無しさん
09/10/02 20:03:18
>探索せずに50手読める理論
?????


510:デフォルトの名無しさん
09/10/02 21:33:44
>>509
447の話してるんじゃないの? 30手読めるなら50手読めるでしょ?
読めるわけ無いので言ってるわけだけど


511:デフォルトの名無しさん
09/10/02 23:00:21
>30手読めるなら50手読める
?????

512:デフォルトの名無しさん
09/10/02 23:04:38
バカが必死に理解しようとしても無理無理

513:デフォルトの名無しさん
09/10/02 23:13:22
いかにも素人が背伸びしてる感じだな

514:デフォルトの名無しさん
09/10/02 23:25:46
>>447
画期的なことが出来たと思うならfloodgateに参加させてみればいいんじゃないの。

まさか、プログラム書けないの?

515:デフォルトの名無しさん
09/10/03 00:40:20
447じゃないけど、いい感じの局面(次の1手問題の解答とか)の駒の全組み合わせを
アソシアトロン風+Count Sketchで分散して記憶して
覚えが悪ければハッシュの違うサーバ増やしてちょっとづつ記憶確率を上げる
というのは考えたことがある。考えただけ。

あと、厨な質問で済まんが、勝敗が決まらない状態の1パラメータのゼロサム前提って
ホントに有効なの?
「自分がいい感じ&相手もいい感じ」と「自分が嫌な感じ&相手も嫌な感じ」を
差が同じだからって単純に比較していいのかと思ってさ。
たぶん、差が単純比較できるのって戦術目標が同じ枝同士だよね?

いきなりMinMax否定でゴメン


516:デフォルトの名無しさん
09/10/03 02:21:50
>>514
まあ、普通に
王手を無視しないとか
2歩、打ち歩詰め、とか作りこむだけでも
かなり手間だしね。
その手間と概念的に優れてるを両立させるのは
むつかしいよね。

マングースみたいになる。

517:デフォルトの名無しさん
09/10/03 02:25:44
最近またレベルが下がったなここ

518:デフォルトの名無しさん
09/10/03 02:31:57
>>515
回答になってるかわからんが、関連の話として
局面を判断する進行度というのがあるが、
先手と後手で分ける人もいる
その場合、ゼロサムといいながらも、
評価値と進行度の両方が混ざった評価になる

評価関数を先手後手で変えれば、当然、ゼロサムにはならない。
手番を考慮する場合も非対称になる


519:デフォルトの名無しさん
09/10/03 09:07:45
トン死、2歩、打ち歩詰め

これのプログラムが難しいって
プログラマとして初心者レベルだろw

520:デフォルトの名無しさん
09/10/03 12:25:34
2歩はFizzBuzz並に難しいぞ

521:デフォルトの名無しさん
09/10/03 12:25:46
>>519
脊髄な奴だなw

516は447の手法だと「2歩」を厳密に判定できるのか?
って質問しているんだよ。
情報の保存形式を荒くした場合も、ルール的には正確性が必要になる
516は519よりはるかにレベルが上だよw



522:デフォルトの名無しさん
09/10/03 16:26:09
パターン想起だと、千日手もありそうですね

523:デフォルトの名無しさん
09/10/03 18:38:41
>>521 >>522
そんなもん、別判定すりゃいいだけの話。
というか、自然にそういうプログラムになる。実際に作ればわかる。

お前ら将棋プログラムはおろか、簡単なプログラムも組めないだろ。

524:516
09/10/03 18:45:23
>>523
そうなんだよ、概念的な部分に凝り過ぎると
その他の別判定部分がおそろかになったり、
概念と実用を両立させるのは面倒と言いたかった。

525:デフォルトの名無しさん
09/10/04 14:32:13
>>523
別判定するなら歩の位置は完全に持っておく必要がある
それをやっても447の手法は維持できるのか?って話
プログラム組めるとか組めないとか、
小学生レベルの煽りがやりたいなら将棋板に帰れw

千日手は局面ハッシュで判断できるか無問題
打ち歩詰めも、手の履歴を保存していればわかる


526:デフォルトの名無しさん
09/10/04 16:15:40
できるよって話

527:デフォルトの名無しさん
09/10/04 21:21:27
思いついたのが2歩や打ち歩詰めでも
香で代用するかぐらいの度量が必要だな

528:デフォルトの名無しさん
09/10/05 08:14:38
>>528
  ∧_∧    
 (´・ω・)ドウゾ
 ( つ旦つ ∬ 
 と_)_) 旦


529:デフォルトの名無しさん
09/10/06 10:31:52
将棋ゲー作り始めるのが先か
将棋のスキルを上げるのが先か
それが問題だ

530:デフォルトの名無しさん
09/10/06 11:24:35
囲碁ソフト、あと10年で人間を破る?
URLリンク(sankei.jp.msn.com)
2009.10.5 13:17
 コンピューターソフト同士がチェスや将棋、囲碁などの“腕”を競う「第15回コンピュータ・オリンピアード」が来秋、初めて日本で開催されることになり、5日午前、会場予定の
石川県ペンギン村の北陸先端科学技術大学院大学
で調印式があった。注目は、人間の世界チャンピオンに勝ったチェスやオセロに比べ、「大局をみる」人間の方が有利とされてきた囲碁ソフト。今年の同大会囲碁部門では、
新たな日本製プログラムを搭載したソフトが初優勝し、期待を集めている。

◆大局観より確率を重視
 9月中旬に発売された“史上最強”をうたう対局ソフト「天頂の囲碁」(発売元・毎日コミュニケーションズ)。5月の「コンピュータ・オリンピアード」(スペイン)で優勝した
思考エンジン「Zen」を搭載し、アマチュア三、四段の実力があるという。
 強さの秘密は、数年前に登場した計算方式「モンテカルロ法」だ。従来のプログラムは、盤上の局面の大きさを判断したのち数手先の読みを加える、
人間に近い考え方だった。一方、同法はある局面でどう打てば勝ちにつながる終局にたどりつけるかを、コンピューターに数十万回計算させ、
最も勝率の高い一手を選ぶやり方。「大局をみる」囲碁の考えを排除し、確率を重視することで大幅な“昇段”を遂げた。発売元では「相手を気にせず長考したい60代以上の方が購入されているよう」と話す。

531:デフォルトの名無しさん
09/10/06 12:18:15
>>529
ルールの理解以上のスキルいらないでしょ。
詰みとかの概念は理解しないといけないけど。
詰めろ、必死なんかは不要かもね

532:デフォルトの名無しさん
09/10/06 20:35:56
>529
つーか、開発者自身の棋力が低くても強いプログラムが作れるのは
既に証明されてるのに対して、将棋を指すスキルがどのくらい将棋ソフト
開発に役立つのかはあまり良く分からないからね。

と言うか、作り始めると勉強しなきゃならない事がたくさん出てくるから
とっとと作り始めるのが吉!

最初の段階で時間を掛け過ぎると挫折しがちだし。

533:デフォルトの名無しさん
09/10/06 21:34:25
強さ以前にまともに動くのが難しい
まずは同じブログラムで終局までいけることを目指せ


534:デフォルトの名無しさん
09/10/07 01:05:18
説明になっていない時点で447が電波だからなぁ。
ある程度具体的な話をしてもらって、ツッコミいれるのはそれからだ。

535:デフォルトの名無しさん
09/10/07 01:57:07
失せろカス^^

536:447 ◆PrkG0SXy1gHg
09/10/08 02:16:22
ボナンザには勝てるようになった
234勝199敗
報告以上

537:デフォルトの名無しさん
09/10/08 03:04:48
良かったね( ´,_ゝ`)

538:デフォルトの名無しさん
09/10/08 04:34:16
>>536
54%か。パッとしないね。条件が全然わかんないけど。

ところで、なんで将棋板でなく、こんなところに書いてるの?

539:デフォルトの名無しさん
09/10/08 07:38:09
>>536
報告いいからバイナリおいてけ。
一秒とか、メモリ512Mの環境とか、一方が有利になる条件の場合がある。
強さは、みなが判定してるからバイナリおいてけ。

540:デフォルトの名無しさん
09/10/08 07:40:37
共通フレームワークを設定・共有して思考部分つくるだけですむようにしないか?
ビットボードや他ボードなども切り替えできるようにして。


541:デフォルトの名無しさん
09/10/08 09:53:36
>>540
既にあるが?
初心者が横着しようと考えるな

542:デフォルトの名無しさん
09/10/08 13:10:27
どれですか。GUIではないんですが。

543:デフォルトの名無しさん
09/10/08 17:35:18
それくらい調べろよ…

544:デフォルトの名無しさん
09/10/08 22:49:56
あれ?テンプレになかったんだっけ?
と思ったらやっぱりあるじゃん
>>4

545:デフォルトの名無しさん
09/10/09 16:44:21
>>536
おめでとう。
24で3000超えるぐらいの実力あるならファイルうpして欲しいな

546:デフォルトの名無しさん
09/10/09 19:51:12
>>536
おぉ、すげー
先手後手で分けた時の勝敗数も知りたい
あと勝った棋譜負けた棋譜を1局ずつ載せてくれると嬉しい

547:デフォルトの名無しさん
09/10/10 16:11:40
447はただのキチガイ。相手にするな。

548:デフォルトの名無しさん
09/10/10 16:19:46
細かい情報がないとこれ以上相手にしようもない。
皆、結構現金だから無条件では相手にしないよ

549:デフォルトの名無しさん
09/10/10 18:28:05
去年の今頃もボナンザに勝ち越したとか言ってる奴いたなあ……


550:デフォルトの名無しさん
09/10/10 19:16:19
秋の虫の時期ですね

551:デフォルトの名無しさん
09/10/10 19:18:55
そうだよな。

今まで何回か(何人か?)そういう主張をする人が出て来たが
誰も(一回も)証拠を示さないので、もはや狼少年扱いだと思うぞ。

552:447 ◆PrkG0SXy1gHg
09/10/11 04:56:51
納得行くものができたらいずれ公開します

553:デフォルトの名無しさん
09/10/11 09:01:28
100年後くらい?w

554:デフォルトの名無しさん
09/10/11 15:02:11
打倒名人竜王が果される前に出さないと意味ないぜ

555:デフォルトの名無しさん
09/10/11 16:31:07
今となってはボナンザなんて骨董品だからなぁ。
勝ち越したところでわざわざネットで自慢するほどのことでもないよ。

あ、自慢しちゃったね(^^;;

556:デフォルトの名無しさん
09/10/11 16:45:44
>>555
してないしてない。
君実績ないしw

557:デフォルトの名無しさん
09/10/12 06:13:41
>>555
骨董品に勝ち越したことを自慢に思ってしまうお前ってwwwショボwwww

558:デフォルトの名無しさん
09/10/13 00:40:00
>>528
     
      ∧,,∧ ∧,,∧
   ∧,,(´-ω-)(-ω-`)∧,,∧
  ( ´-ω)旦o) (o旦o(ω-` )
  (_  o[(  ´-) (-`  )]o _)
  └'ー-(_   )][(   _)ー'┘
      'ー'^ー'   'ー'^ー'


559:デフォルトの名無しさん
09/10/17 15:47:58
今NegaScoutをマルチスレッド化してるところなんですけど
PV以外を並列で探索する他にどんなタスク分割の仕方がよさそうですか


560:デフォルトの名無しさん
09/10/17 16:02:00
並列するなら、先読みに使うべき。ノードを分割すると読みの無駄が出て損。

561:デフォルトの名無しさん
09/10/17 17:54:13
だから聞いてんだろ

562:デフォルトの名無しさん
09/10/20 00:12:10
要のアイデア位自分の頭で考えろ!

563:デフォルトの名無しさん
09/10/20 21:00:28
>>559
分割せずにルートから複数探索させて合議

564:デフォルトの名無しさん
09/10/21 19:08:17
無駄の多さは、並列読み <<< 合議 だが。

565:デフォルトの名無しさん
09/10/21 20:38:14
そのかわり評価関数の不正確さをカバーできる利点があるのでは

566:デフォルトの名無しさん
09/10/21 23:24:10
つasynchronous parallel game-tree search


567:デフォルトの名無しさん
09/10/21 23:39:12
なるべく無駄を無くすなら並列読みすべきではない。
ルートかルートに近いところで並列にしたら、
もし一手が最善だったら、並列に読んでいた2手目以降は無駄になる。
逆に一手目が悪かったとして、並列に回した分深さが足らずそれが判定できないかもしれない。
COMが重要だと思うところに読みを集中させるべき。
数打てば当たる的なやり方は、コンピュータを1万-100万台とかでやれ。

568:デフォルトの名無しさん
09/10/21 23:43:51
指し手生成、局面更新、評価値の計算など作業は多くある。
そこでCPU資源を使い切るようにすべき。
たとえば、指し手生成を4並列でやるとか。
次局面状態の計算して
それでも空いてたら、次局面の指し手生成していればいい。

569:デフォルトの名無しさん
09/10/21 23:46:47
>567
ある箇所に読みを集中させたくても、CPUのコアあたりの
処理能力(クロック周波数)向上が頭打ちしている現状だから
後は並列読みするしかショウガナイじゃマイカ。

無いものねだりをしてもどうしようも無い。

570:デフォルトの名無しさん
09/10/21 23:54:05
>>568
現状のスレッドレベル並列ではスレッド切り替え時間の負荷で無理
探索全体の中では手生成なんて一瞬
FPGAなら可能

571:デフォルトの名無しさん
09/10/22 00:11:05
それでは応答が500ms程度かかるだろうと所まで進めて
そこを1CPUに割り当てるか。
このくらいの時間だったらスレッド切り替えコストは微少だろう。

572:デフォルトの名無しさん
09/10/22 00:15:05
困難な点は、500msの予定が1秒かかった場合、呼び出した親は処理待ちになる点だな。
探索中に、終了予定時間を更新していき、
時間かかりそうな所は再び500ms程度ごとに分割すればいいかもしれない。

573:デフォルトの名無しさん
09/10/22 00:21:59
なるべく500msが小さい方が直列読みに近づくけど、
小さすぎるとスレッド生成コストでロスする。
αかβか(どっちかは忘れた) カットが起きれば、
別スレッドは破棄して上ノードへ戻していい。
長い時間を計算したものを破棄すると無駄になるから、小さい方がいい。

574:デフォルトの名無しさん
09/10/22 11:26:00
残りの深さ、確率が少ない局面 = 短時間で探索が終了する局面で
いかに速く解を得るかという事だ。
想定するのは、通常探索、1CPUで5秒かかる局面くらいでいいと思う。
並列処理で何秒に縮められるか。

575:デフォルトの名無しさん
09/10/22 21:55:14
言いたいことはなんとなくわかるけど、国語力が弱すぎる


576:デフォルトの名無しさん
09/10/22 23:44:44
ようするに、末端を並列読みすればいいって事。末端の集まりが全体。
末端の探索速度が1/2に出来たら、
上位が並列でなくても、全体の速度も1/2になるだろう。
なるべく末端近くまで並列にしない方が無駄が無くせるけど
あまりに処理時間が短すぎると、スレッド生成コストが無駄になる。

577:デフォルトの名無しさん
09/10/23 00:31:29
それはわかってて
そこからどう工夫すればいいだろうかって話


578:pgBqBmlfItEeX
09/10/23 00:41:43
But she has been more recently stressed out because of work, and rightfully so. ,

579:まともに動いてない
09/10/23 02:54:38
URLリンク(wdoor.c.u-tokyo.ac.jp)
死んでる?

580:デフォルトの名無しさん
09/10/23 03:11:18
囲碁のモンテカルロ碁は3段が限界みたいだな
囲碁ソフトはこの三、四年間ほとんど棋力が上がってない

581:デフォルトの名無しさん
09/10/23 03:55:53
寝言は寝て言え

582:デフォルトの名無しさん
09/10/23 04:06:32
いや、実際に販売している囲碁ソフトは全然進歩してない

583:デフォルトの名無しさん
09/10/23 04:57:03
なにこの情弱

584:デフォルトの名無しさん
09/10/23 05:14:32
当然とはいえ、棋力相応の読みしか入っていないと感じる。
今の延長線上じゃKGS2~3dくらいで頭打ちじゃないのかな。
zenはd持ちだけど一手15秒なんで半分インチキだし。

585:デフォルトの名無しさん
09/10/23 06:48:18
囲碁板でやれよ

586:tgiyzLCYNBgN
09/10/23 22:12:39
Yet, these same opponents would trust gov- ernment to provide the coinage. ,

587:デフォルトの名無しさん
09/10/24 00:40:58
futility cutってprobcutの簡易版ですよね


588:デフォルトの名無しさん
09/10/24 02:34:08
>>587
Lazy Evaluation(評価関数内で駒割など差分計算可能な処理だけを
先にやり、重い処理をサボれそうだったらサボる)の過激版っぽい。
URLリンク(chessprogramming.wikispaces.com)

589:デフォルトの名無しさん
09/10/24 09:31:49
probcut、Lazy Evaluation、どっちの側面もあるよ

590:デフォルトの名無しさん
09/10/25 11:45:12
>>589
Lazy Evaluation
という概念で考えたことはなかったので勉強になったよ
言われてみればその通りだな。
ProbCutは予想が甘いとリスクがある
futilityCutは評価関数の一部と考えればいいな

591:デフォルトの名無しさん
09/10/25 12:08:10
Futility Cutだってマージンが甘いとリスクがある
Probcutだって人間の裁量で調整できるんだから結局同じ事


592:デフォルトの名無しさん
09/10/25 21:21:39
初心者なのでようわからんのですが
FPGAによる局面生成ってどこらへんにメリットがあるの?
局面だけポンと生成されても評価値計算のためには結局CPUが9x9=81マス読まなくてはならなくて
差分計算も糞も無くなる木がする、
一方FPGAに評価値計算までやらせる話になると、
評価ロジックの自由度は大幅に増すかもしれないけど(H/Wの並列性を生かせば差分計算に依存する必要が薄れる)、
演算精度のために支払うLE数が壁になりそうな
(1局面の指し手数が平均80として、6手先で0.26兆局面あってそいつらに有意な順序づけを行うには
浮動小数点でも仮数部40 bitぐらい要ることは論をまたない)


593:592
09/10/25 21:27:10
>浮動小数点でも仮数部40 bit
なおこれは学習を安全に収束させる前提の話
ゲーム木全体をAND/OR木的に読み切って必勝局面を与えるだけなら1 bitでいいだろうけど

594:デフォルトの名無しさん
09/10/25 22:10:41
速い
そんだけ

595:デフォルトの名無しさん
09/10/25 23:39:41
>>592
試合のときに浮動小数点なんか使わないぞ。
学習はC++でエンジン書いてやればいいだけ。

FPGAなら少なくとも手生成がマスや駒ごとに並列に行える。
位置評価も並列に行える。
探索自体は再帰だから結局はコアの数だけの並列になるけどな


596:デフォルトの名無しさん
09/10/26 06:34:24
今までにない将棋を作ってみた
将棋のGUIを3Dにした

ただそれだけだけどねw

597:デフォルトの名無しさん
09/10/26 07:00:36
残念、「3D将棋」でググれ

598:デフォルトの名無しさん
09/10/26 13:31:16
>>592
> 浮動小数点でも仮数部40 bitぐらい要ることは論をまたない)

Bonanzaですら16bitしか使ってないけどな。40bitって何を根拠に言ってるんだ?
またプログラムが一行も書けない妄想バカのおでましか。

599:デフォルトの名無しさん
09/10/27 02:46:55
昼間のヒキコモリが言ってても

600:デフォルトの名無しさん
09/10/27 10:49:24
>>599
プログラムが一行も書けないことがバレると人を引きこもり扱いか。とんでもないクズだな。

601:デフォルトの名無しさん
09/10/27 10:55:16
>>599
夜中のヒキコモリが言ってても


602:デフォルトの名無しさん
09/10/27 22:53:34
>592さん
6手先で0.26兆局面あって、それら全てを順序づけるためには
40bitも必要になるのは認めるとしても、それらの局面すべてに
対してことごとく異なる評価値を与える必要は無いのでは?

現状、任意の局面に対してそんなに細かく厳密な評価が出来るとは思えません。

つまり、幾つかの局面がグループにまとめられて同じ評価値を
持ったとしても大した問題では無いはず。

実際、数手先まで読むと同じ局面が異なる手順で何回も出てきたりするし、
16bit整数(-32767 から +32767)で表せる値以上に細かく評価値を与える
意味と言うか、実用性が私には良く分かりません。

603:デフォルトの名無しさん
09/10/28 00:08:37
α-β法くらい勉強すればいいのにね


604:デフォルトの名無しさん
09/10/28 23:03:09
性能評価のため、共通のフレームワークでアルゴリズムの研究するか。
ボード、評価関数は同一にする。

605:592
09/10/29 00:56:22
>>602
>それらの局面すべてに
>対してことごとく異なる評価値を与える必要は無いのでは?
逆に、同じでいいというのもあまり根拠の無い話に思える感じ

>現状、任意の局面に対してそんなに細かく厳密な評価が出来るとは思えません。
確かに現状壁が3つぐらいある(と思う)
 (1) 学習パターン自体のノイズ
 (2) 学習時間の壁 (パターン数に対して指数オーダー)
 (3) 次元の壁 (評価因子を増やすと球面集中現象でヤられる)
これらの壁がほどよく立ちふさがってくれているから整数演算で通用しているのだと思う

>実際、数手先まで読むと同じ局面が異なる手順で何回も出てきたりするし、
それはそうだけども、サイクル手順を除去しても6手先までの指し手が数十万のオーダーまで降りるとは思えない感じ
一方評価関数の高精度化による指し手の最適化とは、その中から常にα最大かβ最小のものを選ばねばならないから
16 bit整数では足りない、というプログラム前の皮算用

606:デフォルトの名無しさん
09/10/29 01:23:42
違う局面で同じ評価値の場合はあってもいいに決まってんだろ


607:デフォルトの名無しさん
09/10/29 01:27:01
>>602
一つ反応し忘れたス、
>つまり、幾つかの局面がグループにまとめられて同じ評価値を
>持ったとしても大した問題では無いはず。
評価関数の高精度化による指し手の最適化では(非常に単純化して言うと)指し手は評価関数の値のみに依存するから、
局面をいくつかのグループにまとめて問題ないかどうか決めるのは評価関数自体なんであって、
上記主張は、評価関数の精度が低くていいことの根拠としては循環論理めいて聞こえる

もちろん実際は序盤・中盤・終盤その他のモード分けをプログラマがやってるから評価関数依存一辺倒ではないのは承知してる
つもりだが、最強コンピューター棋士はその手のフレーム問題も適当に解決する強いAIたるべき、

608:デフォルトの名無しさん
09/10/29 07:34:10
いまからつくりはじめたぞ。共同フレームワーク開発するぜ。

609:デフォルトの名無しさん
09/10/29 12:26:38
さいはつめい?

610:デフォルトの名無しさん
09/10/29 20:32:50
>>602
何故598でとっくに結論が出ているのにそんなに長々と意味の無い文章を書くんだ。

611:デフォルトの名無しさん
09/10/29 20:34:32
>>605
>>対してことごとく異なる評価値を与える必要は無いのでは?
> 逆に、同じでいいというのもあまり根拠の無い話に思える感じ

あんた(592=605)は、αβ法すら自分で書けない妄想バカだな

612:デフォルトの名無しさん
09/10/30 06:21:21
あたりの生成は、各ますにどのコマから利きがあるかを記録しておくんですか。

613:612
09/10/30 06:29:24
どのコマの利きかを記録するか、2手前の位置を調べるかと思います。
詰将棋に限定したら、前者の方が速いですか。

614:デフォルトの名無しさん
09/11/01 04:19:15
Wikipediaで将棋プログラム関連技術の記事を充実させません?


615:デフォルトの名無しさん
09/11/01 04:25:40
何の項目?

616:デフォルトの名無しさん
09/11/01 22:47:22
>>611
俺はバカじゃない!俺はばkじゃない!
jふぃおhdるおb

つかαβ探索は探索の時間計算量削減には寄与するが、得られるmax{min{...}}の値自体は完全探索と一致するのだから
αβ探索を作れること(及びαβ探索を採択すること)は評価関数の精度が低くていいことを担保しない
評価関数の計算精度の十分条件とは全く関係ない話


617:デフォルトの名無しさん
09/11/02 00:52:14
現時点では評価関数の精度が低いから現在のような広い値域が必要なわけで
今後精度が高くなればなるほど値域は狭くていい
まあ別に広くしてもいいけどね
無駄なだけで

618:デフォルトの名無しさん
09/11/02 09:43:43
完璧な評価関数なら-1、0、+1ですな。

619:デフォルトの名無しさん
09/11/02 14:05:21
将棋に引き分けってあるんだっけ?


620:デフォルトの名無しさん
09/11/02 14:16:06
千日手、持将棋、同時反則

621:デフォルトの名無しさん
09/11/06 18:37:55
>>558
`∧_∧
(´・ω・)
( つ旦O
と_)_)
ちょっと休憩。


622:デフォルトの名無しさん
09/11/10 22:49:28
水平線効果は静止探索で対処しているものがいくつかあるが、

静止探索は遅いので困る。

もっと良い水平線効果はないのだろうか?

しかし、もし静止探索以外で水平線効果を対処できたとしても

静止探索には水平線効果以外のメリットがあるのかな?

良く分からないが、とりあえず静止探索以外の水平線効果対処方法を考えてみると

623:デフォルトの名無しさん
09/11/12 00:40:26
>>621
  ∧ ∧ 彡
ミ ( ^ω^ )っ 彡
  O ノ タタタタ…
 ミ| (_) 彡
ミ し´ 彡


624:デフォルトの名無しさん
09/11/14 11:10:53
>>618
二人零和有限確定完全情報ゲームである以上2値でおk3値もイラン、
というのは次局面のどれが神の手筋に乗ってるか否か、それだけわかればいいから
仮に神の手筋の分岐する先に引き分けの局面があっても2値でいいことは変わらない(もしそうなら、
引き分けは保証されるが相手がミスしない限り勝てないこともあるゲームだったと認める他ない)

もっとも、先手がどうがんばっても神の手筋が後手の手番から始まってしまうゲームにおいて
初手からしばらくは先手後手ともに神の手筋に乗っていないから、どの手がベストかを確率的に判断
する他ないというのはある(が、そのこと自体は3値が必要十分とする根拠にはならない)


625:デフォルトの名無しさん
09/11/14 14:02:15
αβ法もわかってないゴミは黙ってな

626:デフォルトの名無しさん
09/11/15 00:05:10
神の手筋を知っている前提で解くやり方はαβ探索というよりむしろdf-pn探索(証明木の取得)の領分
残念ながら将棋は完全な証明木を現実的手段で取得したり記憶できたりするほど単純でないから
(何しろ局面数が10^220もある)
αβ探索(と評価関数のヒューリスティックな作り込み or 統計的最適化の組み合わせ)が幅を効かしてゐるのだけどね
故に漏れ涙目

統計的手法を駆使して勝利の蓋然性を積み重ねていったらぴったり敗着の穴がふさがれちゃった
(それより優れた手筋を示す解法は存在しない)という可能性もあるっていやーあるが、


627:デフォルトの名無しさん
09/11/15 00:19:21
そいつは無限の猿定理

628:デフォルトの名無しさん
09/11/30 13:37:55
ぼなんざー

629:デフォルトの名無しさん
09/12/09 21:33:28
かそ

630:デフォルトの名無しさん
09/12/15 18:34:18
なんか知らんけど無料ソフトがいっぱいあるな
URLリンク(www.magnolia.co.jp)

631:デフォルトの名無しさん
10/01/09 09:50:24
とうとうきたか・・・
URLリンク(d.hatena.ne.jp)

632:まともに動いてない ◆R/rLuLKeEI
10/01/28 11:12:20
さて

633:デフォルトの名無しさん
10/01/29 23:01:58
がんばろうや

634:まともに動いてない ◆R/rLuLKeEI
10/01/29 23:07:25
がんばってpn-searchを…

635:デフォルトの名無しさん
10/01/31 18:59:20
しーん

636:デフォルトの名無しさん
10/01/31 19:37:43
また花粉症の季節だ。これさえ無ければなぁ。

637:デフォルトの名無しさん
10/02/02 00:56:39
起きると目ヤニがついてて、取ろうとしても硬くて取れない

638:デフォルトの名無しさん
10/02/02 01:08:10
時々息子の目やにがひどいことになってるんだが
妻がそれ見るとペロペロなめて溶かしてやってる。
初めて見たときギョッと思ったけど
妻も小さい頃は親にこうされて育ったのかなと思った。


639:デフォルトの名無しさん
10/02/02 01:15:32
だんだん何のスレだか良く分からなくなってますが‥
母親と言うのは有難いものですね。

640:デフォルトの名無しさん
10/02/06 12:21:50
質問質問!
CSA拡張プロトコルの仕様文書ってどこにあるのよさ?
floodgateから
URLリンク(www.sgtpepper.net)
がリンクされてるから評価値や読み筋の送信はこれでいいの?
これとログイン手順その他諸々が合わさった完備した仕様文書が知りたいのだけども

641:デフォルトの名無しさん
10/02/06 15:03:00
CSAプロトコル
URLリンク(www.computer-shogi.org)
拡張プロトコル
URLリンク(shogi-server.sourceforge.jp)

642:デフォルトの名無しさん
10/02/06 16:26:53
>>641
㌧クス
拡張プロトコルと、評価値や読み筋の送信の書式とが別文書(さらに後者はRFC)ってことは
実装はともかく仕様の確定がまだな感じ

643:デフォルトの名無しさん
10/02/06 20:58:28
>>642

このスレと前のスレ読めば流れが見えてくるんだけど

まずCSAプロトコル(旧バージョン)ありきでサーバーが立ったわけよ
それでCSAプロトコルのみではいろいろかゆいとこに手が届かないので
拡張モードを追加して行ったというわけ今も進化中ってとこかな

古い文書はあまり更新されてないっぽい
CSAのほうがバージョンあがってたりして文書と微妙に食い違ってきてる

CSAプロトコルはコンピュータ将棋協会のものなので別文書にしとくほうが
よいのではないかと




644:デフォルトの名無しさん
10/02/18 00:37:44
URLリンク(d.hatena.ne.jp)
ナナナンダッテー


645:デフォルトの名無しさん
10/02/19 23:58:47
>>644
4ヶ月も前の話じゃんそれ

646:デフォルトの名無しさん
10/02/20 03:31:31


647:デフォルトの名無しさん
10/02/20 14:21:36
>やねうらお氏と和解しました 傑作(0)
>2009/10/14(水) 午前 10:31その他練習用 Yahoo!ブックマークに登録


648:デフォルトの名無しさん
10/02/22 02:10:47
いいぞもっとやれ

649:デフォルトの名無しさん
10/02/27 10:34:09
なんか向こうに迷惑がかかっちゃいそうなのでこっちにきました
スレリンク(bgame板)

結局、NullMoveとScoutの違いって

NullMove:いい手と思われる手を(手数の少ない評価値より超えてるだろう、とみなして)はしょることで探索数を下げる
Scout:悪い手と思われる手を(NullWindowで)はしょることで探索数を下げる

って感じでいいんでしょうか?

・・・ただ
276 名前:名無し名人[sage] 投稿日:2010/02/26(金) 00:46:49 ID:6fTYYu0I
>>273
対局じゃありえないけど
先手「この手はどうだ?」
後手「ばかもん!こっちがパスしても形勢に影響ない手を指すな!探索却下だ!」
先手「ひええっ、じゃ他の手を...orz」
NullMoveはこんな感じ

だと、「後手がパスしてくれたとしても形勢に影響を与えられないような悪い手」を探索しない
→悪い手をカット
っていう風にも読めるしなぁ・・・

650:デフォルトの名無しさん
10/02/27 11:43:49
NullMoveは探索深さを減らす前向き枝狩り
Scoutは二番目以降の手はカットされるだろうと予めウインドウを狭めておく手法
失敗したら広げてやり直す

651:デフォルトの名無しさん
10/02/27 19:37:01
・・・だめだぁ・・・よくわからない・・・
Scoutの方はよくわかりました

>NullMoveは探索深さを減らす前向き枝狩り

NullMoveの場合
深さ7手くらいのところをとりあえず5手くらいで読んでみて
それでβを超えてたら「7手読んだことにしちゃう(その枝は最後の7手まで読んだことにして次の枝へ行っちゃう)」
っていう意味ですか?

652:デフォルトの名無しさん
10/02/27 21:03:10
ちょっとちがう。
NullMoveはパスをするところが肝。
将棋って相手が連続で指してくるとすれば自分は不利になるでしょ。
そこでまず自分はパスをして相手に連続で指させる。
そのハンデを負った上で浅い探索をしても自分が優勢であると判断されるようなら
パス無しだとさらに優勢である可能性が高いからカットできる。


653:デフォルトの名無しさん
10/02/28 05:32:45
>>651

順番が逆かな
目的は「パスしてもβを超えるなら枝刈り」
※手を指した側はαを超えられず採用される可能性が無いのでこれ以上探索しても無駄

「浅く探索する」は「浅く探索しても探索結果にほとんど影響が出なかった」という結果論

654:デフォルトの名無しさん
10/03/03 13:04:06
ヌルムーブは、少なくともいい手がひとつはある、って判断するためだよね
全部悪い手しかないときにヌルムーブでカットできる

655:デフォルトの名無しさん
10/03/03 13:16:25
一回パスして続けて指しても悪い手しかないから、打ちきるべきってことだよね
そこにパスする意味があるんだね
たとえば数手先で詰むとき どう読んでも負けしか見えないなら、それをなるべく
早く判断しなけりゃいけない

656:デフォルトの名無しさん
10/03/14 13:10:07
>ヌルムーブ
ガッ!


657:デフォルトの名無しさん
10/03/14 13:18:03
>>656
「めるぽ」って言ってるわけでも無いのに「ガッ!」してたらキリが無いだろう?

658:デフォルトの名無しさん
10/03/14 13:47:38
プログラムやってる女だけど何か質問ある?

659:デフォルトの名無しさん
10/03/14 13:50:54
触らぬ神に祟りなし

660:デフォルトの名無しさん
10/03/20 17:52:05
ボナンザってコンソールアプリのはずだよねぇ

Main関数の中に MessageBoxを呼ぶ個所があって、ビルドエラーが出た。
コメントアウトで対応できたけど、なんだかなぁと思った。。

661:デフォルトの名無しさん
10/03/20 18:10:40
Bonanzaの思考エンジンは自分用の小さなwindowも開くよ。

NPS値とかパラメータ表示用。

ビルドエラーが出るのはライブラリのバージョンの問題とかなんじゃ無いかな?

662:デフォルトの名無しさん
10/03/20 18:19:27
>>660
コンパイルオプションをつけ忘れていませんか。
makefileかreadmeのほうに書いてあったはずです。


663:デフォルトの名無しさん
10/04/02 22:32:03
つ URLリンク(www.ipsj.or.jp)
ついにこの日が来たか。

664:デフォルトの名無しさん
10/04/03 00:33:11
>>663
やらせっぽいけどな。

665:デフォルトの名無しさん
10/04/03 08:30:56
話題になるように努力していることは素晴らしいけど、寒い小芝居は引く。
何で握手してんの。

666:デフォルトの名無しさん
10/04/04 16:00:25
将棋連盟に勝算はあるのか?

667:デフォルトの名無しさん
10/05/01 12:16:42

 V V
(´・ω・`) うさちゃんピース



668:デフォルトの名無しさん
10/05/09 22:12:15
ちゃゆううううぅぅぅぅぅぅぅぅぅぅぅぅぅぅぅぅぅぅ

669:デフォルトの名無しさん
10/05/14 09:01:28
人vsロボ
URLリンク(www.youtube.com)


670:デフォルトの名無しさん
10/05/16 02:41:08
>>669
まだ将棋はコンピュータより人の方が強いみたいだな

671:デフォルトの名無しさん
10/05/20 13:45:42
チェスソフトにあって将棋ソフトに決定的に欠けているのがこれだな
URLリンク(gs.inside-games.jp)

672:デフォルトの名無しさん
10/05/20 15:35:38
>>671
暗いと不平を言うよりも、進んで明かりをつけましょう。
だいたい将棋の方が向いてるんじゃないか? 駒を取る時は相手の上にするのもいいだろうし、馬がいたり、槍を付いてみたり。

673:デフォルトの名無しさん
10/05/20 15:52:44
将棋だと全部寝技がらみになってしまうのが難点だな。

674:デフォルトの名無しさん
10/05/20 19:09:29
で、萌キャラで作ってほしいのか?w


675:デフォルトの名無しさん
10/05/20 19:40:00
ブルゲ的脱衣将棋ディスってんのか

676:デフォルトの名無しさん
10/05/21 13:00:42
エロをつければいいなんて厨房の浅墓な発想

677:デフォルトの名無しさん
10/05/21 15:24:04
HENTAI大国でそんな意見が出てくるとは実に嘆かわしい。

678:rei
10/05/30 16:35:45
え~、bulbulの作者です、え?それ何って?wdoorの初期の頃に存在した人間用クライアントです
アップローダーがスパムに押し流された後、PCのHDDクラッシュでソースコードもろとも綺麗さっぱり無くなってしまったので
一から作り直してます。

というわけで、また駒画像を提供してくださる神はいらっしゃいませんでしょうか

もしかして、すでに需要が無いかもしれないですけど・・・・






679:デフォルトの名無しさん
10/05/30 16:37:59
バックアップすら取らない人に提供してもね


680:デフォルトの名無しさん
10/05/30 16:56:26
駒画像くらい自分で描けば
酷かろうが、公開してしまえばそのうち提供してくれる人が出てくれるでしょ

681:デフォルトの名無しさん
10/06/02 11:56:35
URLリンク(mucho.girly.jp)

682:デフォルトの名無しさん
10/06/04 20:19:22
>>679
ごもっとも

>>680
そうですね、のんびりつくってみます

>>681
サンキューです



683:rei
10/06/09 17:47:22
え~、ついでに、外部の思考エンジンへのインターフェイスを付けようかと思います。

DLLでいいやとか、EXEを蹴ってくれとか、ご要望がありましたらどんぞ

あ~、でも、この過疎り具合じゃ思考エンジンなんか作ってる人居ないかな・・・


684:デフォルトの名無しさん
10/06/09 18:55:15
USIプロトコル(将棋所やプチ将棋)、sikou.dll(CSA将棋)が
既に(コンピュータ将棋界では)メジャーな存在としてあるからねぇ...

685:デフォルトの名無しさん
10/06/09 23:09:55
USI と CSA ですか
ちょっとググッてみたところ、USIはお互いにコマンドのやりとりなどが
有って結構複雑、ここまで実装する労力あればサーバーと直接お話できちゃいます
って感じですね

CSA将棋のほうは仕様を書いてるとこが見つかりませんでした。




686:デフォルトの名無しさん
10/06/26 19:13:21
 V V
(´・ω・`) うさちゃんピース


687:デフォルトの名無しさん
10/06/26 20:39:12
>>685
> CSA将棋のほうは仕様を書いてるとこが見つかりませんでした。

↓これでねーの?
URLリンク(www.computer-shogi.org)


688:デフォルトの名無しさん
10/06/26 20:41:42
開発始動中


【囲碁?】囲連星のAIを作ってみよう【連珠?】
スレリンク(gamedev板)

689:デフォルトの名無しさん
10/06/29 18:17:19
>>687
それは将棋サーバーのプロトコル

探してたのはCSA将棋の本体と思考プログラム間のプロトコル
CSA将棋のダウンロードファイルの中にテキストが有ったので解決しますた

なんかずっと規制中なので(永久規制に突入するかもらしい・・・)
ネットカフェからカキコ


キーボードがムニョ~ンとしてる・・・・・
誰かジュースこぼしやがったな・・・


690:デフォルトの名無しさん
10/07/03 00:30:19
こっちのキーボードはポゲムタビニョーンとしてる

691:デフォルトの名無しさん
10/07/05 10:02:21
USBポートは大抵開いているから、キーボードを持ち歩いたらどうよ。あ、マウスもか。

692:デフォルトの名無しさん
10/07/29 03:29:26
将棋棋戦でさ、「この局面は○○局あり~」とかあるけど、
ああいうのはどういう風にDBに登録してるか分かる人いる?
普通に、一手一手レコードで入れてたらかなり重くなると思うんだけど。
一局の記譜を一つのレコードにして入れてるんかな?
としたら「手順前後の同一局面は○○局」とか、「さらに端歩を突いた形は○○局」とか
検索すんの大変だと思うんだけど。
データベース板いったけど将棋スレがなかった。
スレチだったら該当板を教えてくりゃれ。

693:デフォルトの名無しさん
10/07/29 06:44:18
ふつうに1局面1レコードだと思う。
だってデータベースってのは何万レコードぐらいは扱えるの普通だし。

対人戦の話題で荒れ気味だけど、将棋チェス板のコンピュータ将棋スレで聞くといいかも。

694:デフォルトの名無しさん
10/07/29 09:14:11
>>692
常識的には普通、インデックスを張るわな。

各局面recordにunique id(連番だと思いねぇ)を振ってあるとして、
・11に先手の銀がいる局面のrecord idの集合
・11に先手の金がいる局面のrecord idの集合
・11に先手の角がいる局面のrecord idの集合
…(中略)
・99に後手の王がいる局面のrecord idの集合

みたいなものを別途持っておくってことな。

695:デフォルトの名無しさん
10/07/29 09:16:37
続き。

11に先手の銀が居て、99に後手の玉がいることがわかっているなら、上の
・11に先手の銀がいる局面のrecord idの集合
・99に後手の王がいる局面のrecord idの集合
の交差をとるわけ。局面数が少ないならそれぞれをメモリにまるごと読み込んでもいいけど、
局面数が多いなら、record idがsortされているならそれぞれの先頭から少しずつ読み込んでって
merge sortのようなことをすればいいよな。

3駒以上でも同様。もう少し手のこんだことをすれば速くなるだろうけども、プロ棋士の将棋の棋譜限定なら
record数は1000万は越えないだろうから上のようにやるぐらいでもそこそこの速度が出るんじゃね?

棋泉とかどうやってるかは知らね。誰かもう少しいい方法があるなら教えとくれ。

696:デフォルトの名無しさん
10/07/29 17:58:01
>>693-695
ありがとう。
まず一手指す
→その局面の全駒配置を1レコードにして保存。
→その局面の各駒の該当unique idをレコードに関連つけて保存。

また一手指す
→その局面の全駒配置を1レコードにして保存。
→その局面の各駒の該当unique idをレコードに関連つけて保存。

ということだろうか。
RDBに書き下すのって難しいな。
コンピュータ将棋スレも覗いて見ます。
よい方法あったらまた教えとくれ。



697:デフォルトの名無しさん
10/07/29 18:18:00
>>696
> ということだろうか。

うん。

> RDBに書き下すのって難しいな。

難しいか?

table 局面INDEX {
・盤面上の位置(11~99と手駒の位置)
・駒ID
・局面id
}
こういうtable用意して、たとえば、33に先手の桂がいて、55に後手の角がいる局面を持ってきたければ
このtableのなかから、{ 盤面上の位置=33 , 駒ID = 先手の桂 } であるレコード集合と
{ 盤面上の位置=55 , 駒ID = 後手の角 } であるレコード集合の交差をとるだけだ。

SQLならサブクエリで書けるだろ。ただ、この手のサブクエリを高速に実行できるDBエンジンはなかなか無くて
たいていはひどいパフォーマンスになるんだけどな。まあ自分で実装するならそんな心配ないよな?

698:デフォルトの名無しさん
10/07/29 18:28:46
そういうの売ってないの?
買った方が速いとか野暮なこと考えちゃった

699:デフォルトの名無しさん
10/07/29 18:38:40
>>698
「そういうの」ってなんのことだろう?

棋泉というソフト(フリーソフト)なら
「33に先手の桂がいて、55に後手の角がいる局面」を探したければ、
「33に先手の桂、55に後手の角」を配置すれば即座にDB上に何局面あるか表示してくれる。

それで事足りるならそれを使えばいいだろう。

>>692の質問者は、コンピュータ将棋の何かを自作するためにその部分のデータ構造を
どうすればいいのかという質問をしているのかと俺は思ったので、>>694-695のように俺は回答した。

また、こういうのを高速に検索できる将棋の棋譜専用のDBエンジンがあるのかという質問なら、
「ない」と俺は答える。そんなニッチで金にならない商品なんて誰も作らんだろう。

趣味か研究で作ったものを無料で公開する人ならいるかも知れないが、将棋の棋譜専用のDBエンジンは
俺は知らん。あるなら俺が教えて欲しい。

700:デフォルトの名無しさん
10/07/29 19:24:52
692に期待

701:デフォルトの名無しさん
10/07/29 22:41:22
>>692の質問者は、コンピュータ将棋の何かを自作するためにその部分のデータ構造を
>どうすればいいのかという質問をしているのかと俺は思ったので、>>694-695のように俺は回答した。

ずばりそのとおり。
将棋の棋譜の、ifの検討の部分、もしこう指してたら~・・・ってのを再生できるソフトを作りたい。
基本は、棋譜の一本道なんだけど、それぞれの手から枝葉が伸びるので、指し手のデータはツリー上になる。
これをどうDBに入れて管理するかを考えてる。
まずは一本道の棋譜をどうやって拡張性を持たせてRDBに格納するか、で思案中。

702:デフォルトの名無しさん
10/07/29 23:06:02
>>701
> まずは一本道の棋譜をどうやって拡張性を持たせてRDBに格納するか、で思案中。

俺は指し手だけでなく、局面そのものもDB上に格納しとけばいいと思うけどね。

どうせ棋譜なんて100万局分あったとしても1局面100バイト程度。平均100手として
1M局×100B×100手 = 10GBでしかない。いまどきのHDDなら余裕すぎるだろ。

DBの容量がもったいないなら前の局面からの指し手だけ保持して局面そのものが欲しい場合は、
そのtreeを根元まで辿ってそこから現局面までの指し手を順番に適用して現局面を得る方法も
あるけどな。それでもいいんじゃネーノ。

703:デフォルトの名無しさん
10/07/29 23:07:52
そんな難しいことしなくても棋譜なんかたかだか10万個程度だし、
全部ベタに保存しといて、検索時には全部再生してifで判定してるだけだよ。
同一局面のチェックだけならハッシュ関数を使えば高速。

704:デフォルトの名無しさん
10/07/29 23:32:02
>>703
> 全部ベタに保存しといて、検索時には全部再生してifで判定してるだけだよ。

将棋倶楽部24の24万局集とかマージしてると100万局にはなるだろうけどな。

100万局だと>>702に書いたように10GBあって、メモリを2GB程度しか載せてない
パソコンだとメモリに収まらないし、HDDにアクセスしに行って全部舐めてたら数分~10数分かかるだろうな。

それで使い物になると思うならそれでもいいがな。

705:デフォルトの名無しさん
10/07/30 19:00:34
棋泉のフォーマットは1手2バイトで、1棋譜512バイトしか使ってないよ。
100万棋譜としても488MB。実際は半分以下にできるだろうけど。

それに>>692のような事をやりたい人はたぶん、プロの棋譜だけで
24万局集に入ってる弱い人の棋譜はいらないだろう。

706:デフォルトの名無しさん
10/07/30 19:15:55
>>705
棋泉は初手から全部makeMoveして行く実装なのかな?
まあ、全部の棋譜をまるごとメモリに読み込むならそれでもいいだろうね。

>>692はコンピュータ将棋の思考ルーチンとか学習ルーチンとかで使う、
もう少し良好なレスポンスが必要な実装を必要としている気がしなくもないのだが。

707:デフォルトの名無しさん
10/07/30 19:35:51
>>704
>>HDDにアクセスしに行って全部舐めてたら数分~10数分かかるだろうな。

いくらなんでも端から全部なめるようなアホな実装するやつは居ないだろw


708:デフォルトの名無しさん
10/07/30 19:48:02
>>707
「居ないだろ」って言われても、>>703
「全部再生してifで判定してるだけだよ」って書いてるんだがな。

突っ込みは>>704ではなく>>703に入れろよ。

709:デフォルトの名無しさん
10/08/01 16:26:08
そんなことはどうでもいいから
Codepadの棋譜版、Kifupad作って将棋板住民が使えるようにしてくれ。

710:701
10/08/03 07:10:19
いろいろレスサンクス。
とりあえず、空き時間を利用して、RDBに登録するコード書き始めた。
RDBへの持たせ方はとりあえずいいとして、
棋譜を再現するときに、棋譜はツリー上にどんどんひろがって行くから、
初手
 →二手目その1
  →三手目その1
   →四手目その1
   →四手目その2
 →二手目その2
  →三手目その1
   →四手目その1
   →四手目その2
  →三手目その2
   →四手目その1
みたいな感じで、どんどん広がっていくんだけど、
これをどうやってデータ構造に持たせるかで思案中。


711:701
10/08/03 07:12:25
間違えて送信しちった。
データ構造とアルゴリズム、あたりでも久々に読み返してみようかなぁ。
とりあえずは、RDBに登録するコードだけ書いてる。
読み出して活用するコードはまだまだ先のお話。
いろいろ助言サンクス。
参考になったぜ。


712:デフォルトの名無しさん
10/08/03 07:47:08
そもそもRDB向きじゃないという話はありそうだな。
棋泉はともかく柿木はどうしてるんだろう。

713:デフォルトの名無しさん
10/08/03 07:54:10
>>710
> これをどうやってデータ構造に持たせるかで思案中。

どうやっても何も↓みたいなtableひとつあればいいだけだと思うんだが。

table {
(現在の)局面ID
指し手
(↑の指し手が現在の局面に適用されたあとの)局面ID
}

714:デフォルトの名無しさん
10/08/03 08:08:59
>>713
冗談で言ってるんだよな?

715:デフォルトの名無しさん
10/08/03 08:18:48

               .|  
               .|  
    ∩___∩    |  
    | ノ\   ,_ ヽ  .|  
   /  ●゛  ● |   .J  
   | ∪  ( _●_) ミ 
  彡、   |∪|   |     
 /     ∩ノ ⊃  ヽ
 (  \ / _ノ |  |
  \  "  /  | |
   \ / ̄ ̄ ̄ /
   

716:デフォルトの名無しさん
10/08/03 09:01:55
>>714-715
いや、本気だけど

RDB上は>>713のtableが一つあればいいだけだし

それをメモリ上にdeployするなら
struct 局面Node
{
局面ID id;
List<指し手> move;
}
ぐらいでいいんじゃネーノ?何か問題あるの?

717:デフォルトの名無しさん
10/08/03 09:05:05
書き間違えた。局面IDと局面Nodeとごっちゃに書いてしまった

struct 局面Node
{
List<pair<指し手,局面Node> > moves;
}

こうか?

struct 局面Node
{
局面まるごと board;
List<pair<指し手,局面Node> > moves;
}

こうなってるほうが使いやすいか?

718:デフォルトの名無しさん
10/08/21 16:25:44
動的な(要素数可変な)リストの動的なリスト、とか
動的な木構造の動的なリスト、とか、動的集合の多段や再帰はそのままの形ではRDB上で表現しないが吉
(関係演算が固定回数で済まなくなる等、一筋縄でいかなくなる。)
つかRDBに入れるといいつつstructで説明しようとするあたり大丈夫なのか、


719:デフォルトの名無しさん
10/08/21 18:25:52
>>718
> 動的集合の多段

日本語でおk

> (関係演算が固定回数で済まなくなる等、一筋縄でいかなくなる。)

棋譜に対してどんな関係演算をしたいって言うんだ?
現在の局面とぴったり一致する局面を引っ張ってこれて、それに対する定跡の指し手のリストが得られればそれでいいという話ではないのか?

部分一致している局面集合を得たいならメモリ上において全検索しろってことじゃなかったのか?

それとも部分一致している局面集合を一発でRDBから取ってこれるようなデータ構造を要求してんのか?

お前の話の前提がわからん。お前が何がしたいのか、何を目的とするのかを書かずに「~しないが吉」とか言われてもな。

720:デフォルトの名無しさん
10/08/21 19:29:10
>>719
>動的集合の多段
動的集合を要素とする動的集合の意(動的集合は一般用語でなく、Ad-Hocな造語めいたものなので>718内で説明しておいた)

>棋譜に対してどんな関係演算をしたいって言うんだ?
RDBの文脈で関係演算といえば関係代数の演算しかない(と受け取って貰えるつもりで書いた)
つまりSELECTとか、JOINとか、WHERE句による絞り込みとかいったRDBに対して行う検索操作そのもの

>現在の局面とぴったり一致する局面を引っ張ってこれて、それに対する定跡の指し手のリストが得られればそれでいいという話ではないのか
確かに、元レスの>692の目的は(リストと木構造の違いを除き)そうだと思うが、
定跡の指し手のリストをリスト構造のままRDBに格納するのは厳しい、という話

>部分一致している局面集合を得たいならメモリ上において全検索しろってことじゃなかったのか?
>それとも部分一致している局面集合を一発でRDBから取ってこれるようなデータ構造を要求してんのか?
部分一致、という話は出ていないハズ。>701において「ifの検討の部分(中略)ってのを再生できるソフトを作りたい」というのは
思うに目的は、ある対局でn手目に現れた局面p_nに対して、その対局ではp_(n+1)で指されたわけだが
他の対局ではどう指された実績があるのか?(←ifの検討)をRDBで実現したい、の意だと思う


721:720
10/08/21 19:32:14
なお部分一致している局面集合の検索ならRDBだけですみやかに実現できる。
将棋の局面は81マス+持駒の数(8種類分x2)で特定できるから、
盤の表現に81列、持駒の表現に16列、対局情報レコードへの参照に1列程度、という100列程度のレコードのテーブルを作ればいい
(Microsoft SQL Serverのようにレコードサイズに制限があり、それに収まらない場合はテーブル分割などの工夫が要るが)

たとえば、2010年に指された5五が金将である局面を全てリストアップするには、(year列、"対局ID"列とかを設けるとして)
 SEELCT * FROM (局面table) JOIN (対局table) ON (対局table).ID = (局面table)."対局ID"
 WHERE (対局table).year = 2010 AND (局面table)."5五" = 5
とかやると良い(金将のコードを5、局面テーブルに"5五"という列があり、コードが格納されているとして)

さてこれはRDBの理屈に即した演算で済むから良いのだが、問題は1つの対局内の局面を時系列順に全て得たい、というときだ
ぶっちゃけ、RDBのレコードでリンクリストを実現してリスト構造(や木構造)を作ってやっても、
それをたどるのにn回SELECTを発行する羽目になって効率が悪い
だったら、リンクリストなどやめて1回のSELECTで局面をまとめて取得→オンメモリで並べ替える(ただし、あらかじめindex列を設けておく)
というのが多分正解

structで一生懸命説明している人はここらの話(レコードのオブジェクトへのマッピングをどうするのが良いか)について説明していないし、
多分ポイントを把握もしていない


722:720
10/08/21 19:58:48
ああすまん、落ち着いて読んだら
>現在の局面とぴったり一致する局面を引っ張ってこれて、それに対する定跡の指し手のリストが得られればそれでいいという話ではないのか (>719)
これは>692の目的と違うよ!全然違う

多分こっちね↓
>ある対局でn手目に現れた局面p_nに対して、その対局ではp_(n+1)で指されたわけだが
>他の対局ではどう指された実績があるのか?(←ifの検討)をRDBで実現したい、の意だと思う (>720)

この目的での検索性のためには、検索対象データは「指し手のリスト」ではなく、「局面のリスト」として格納されていなければならない
だがRDB上ではリスト(や木構造)をストレートに表現しても良いことがない(>721に述べた理由で)
だから、この場合も、RDBは集合を得るのに使い、オンメモリでリストなり木構造に構成する、というのが多分正解
部分一致の検索をも目的とするなら>721の第2パラグラフ以下で述べた様にすればいいし、
完全一致しか興味がないなら上で誰かが言っているようにハッシュ値で格納しとけばいい


723:717=719
10/08/21 21:41:13
>>720-722
>>720-721の意見は取り消して、>>722がお前の言いたいことなのか?
俺は>>720-721に反論する必要ないのか?あるのか?
お前は>>718は、撤回するのか、しないのか?

724:717=719
10/08/22 00:24:40
>>720
> 定跡の指し手のリストをリスト構造のままRDBに格納するのは厳しい、という話

リスト構造ってどれのことを言ってるんだ?
ひょっとして>>717で俺が書いたListをリスト構造だと思ったのか?これは言語はC#風の擬似言語だ。
Listと書いてあるのは単なる配列だと思っとくれ。

「配列構造のままRDBに格納するのは厳しい」に対しては間違いだ。
C# + SQL ServerならBinaryFormatterでserializeしてvarcharに突っ込むだけだ。

次の局面に遷移するための指し手に対して条件絞ったりしないだろうから、それで問題ないだろう。


725:717=719
10/08/22 00:34:57
>>721
> Microsoft SQL Serverのようにレコードサイズに制限があり、

お前は一体いつの話をしているんだ。SQL Server 2008でvarchar(max)を使ったら
実質的にサイズ制限は無いに等しいんだが。

お前のなかではSQL Server 2008はSQL Serverでは無いのか?


726:717=719
10/08/22 00:42:14
>>722
> だがRDB上ではリスト(や木構造)をストレートに表現しても良いことがない(>721に述べた理由で)

その721だが、残念ながら
>>721
> SEELCT * FROM (局面table) JOIN (対局table) ON (対局table).ID = (局面table)."対局ID"
> WHERE (対局table).year = 2010 AND (局面table)."5五" = 5

部分一致局面を
AND (局面table)."5五" = 5 AND (局面table)."4六" = 3 AND …
のようにAND条件をいろいろ書いてqueryかけた場合のパフォーマンスは恐ろしく悪いぞ。

MySQLでもSQL ServerでもSqlLiteでも何でもいいから試してみろ。そんなもん使い物にならんわ。
普通に全局面メモリに読み込んで、メモリ上で調べたほうがまだマシというぐらいのひどさ。

だから最初からそんな馬鹿なことはせずに>>717のようにしてるというのにお前ときたら馬鹿のくせに余計な知識をひけらかしにきやがって。

727:717=719
10/08/22 00:49:28
>>722
> 完全一致しか興味がないなら上で誰かが言っているようにハッシュ値で格納しとけばいい

これも間違い。部分一致を調べたいときはメモリに丸読み(メモリに入りきらない場合は
実際は一定レコード数ごとに読み込む)して一つずつ調べるんだよ。そのときにハッシュ値しか
格納されてなかったら部分一致を調べられないじゃないか。だから>>717がベストなんだよ。

728:デフォルトの名無しさん
10/08/22 01:01:23
↑話を理解してない馬鹿

729:717=719
10/08/22 01:22:05
>>728
池沼は出てくんな

730:デフォルトの名無しさん
10/08/22 01:29:12
↑馬鹿

731:デフォルトの名無しさん
10/08/22 08:49:40
うんこすれ

732:720
10/08/28 16:39:54
1からか?1から説明しないとだめか?

>>723
撤回するのは>720の第3パラグラフのみ(>719による元問題の解釈に同意した点)

>>724
配列であっても、配列の個数と長さの両方が変わり得るのであれば同じ話(動的集合の動的集合)
RDBへの格納を考えることはできるが、そうするとRDBの検索の理屈にはなじまず検索効率が悪い(SELECT n回等を要する)
なお、可変長型というのはあるっていやーあるが、そうした可変長データを利用したところで、
内部の部分検索については線形探索、高速化手段としてはせいぜい前回検索結果をキャッシュしておくぐらいしか
RDBから見て打つ手がないからパフォーマンスの解決にならないことを>717=719には念のため言っておく

>>725
レコードサイズを超える格納は、特定の型を使えば可能だがパフォーマンスへの影響がある
レコードサイズ上限8192バイトというのは、これはSQL Server内部のBuffer Cacheのサイズから来る
パフォーマンス上本質的な上限なわけだが(2008でもこの点は変わらない)
URLリンク(www.atmarkit.co.jp)

>AND条件をいろいろ書いてqueryかけた場合のパフォーマンスは恐ろしく悪いぞ。(>726)
総レコード数Nとして、
インデックスを張らずにn列のANDをとれば、SELECTの時間計算量は 線形探索*n回=O(N*n)
インデックスを張れば、O((N*log(N))*n)ぐらいが期待できる
n列の条件演算でn倍という部分自体にはキャッシングぐらいしか向上の余地がない
オンメモリにすれば高速化し得るというのは、上記インデクシングのメカニズムまで自前で実装すればの話
ところでRDBも検索性能命であるからして検索処理をオンメモリで実行しているのを>717=719はご存じだろうか?
(上記URLから辿れ)

>>727
RDBがやるんだヨ


733:717=719
10/08/28 17:38:23
>>732
> インデックスを張らずにn列のANDをとれば、SELECTの時間計算量は 線形探索*n回=O(N*n)
> インデックスを張れば、O((N*log(N))*n)ぐらいが期待できる

で、それが速いとでも思ってんの?頭おかしいとしか言いようがない。
普通に全レコードをメモリにとってきてすべて検索するほうがよっぽど速いんだよ。

だからお前が言ってることは全くの空論。何の役にも立たないわけだよ。

734:717=719
10/08/28 17:40:15
> レコードサイズを超える格納は、特定の型を使えば可能だがパフォーマンスへの影響がある

パフォーマンスへの影響って具体的にどういう条件で影響があると思ってんの?

そもそもそのvarchar(MAX)の部分をキーにして検索するわけでもないから、
別のページに格納されてようが、そこからデータを取得するときにオーバーヘッドがあるだけだぞ。

俺はvarchar(MAX)に格納しろと言ったのは、その曲面における定跡の指し手をserializeして
格納しろって言ったわけで、指し手をキーとして検索することは無いんだから、何も遅くならんよ。

735:717=719
10/08/28 17:40:49
×曲面
○局面

typoした。ごめん。

736:720
10/08/28 18:41:10
>>733
>で、それが速いとでも思ってんの?頭おかしいとしか言いようがない。
>733が、
>n列の条件演算でn倍という部分自体にはキャッシングぐらいしか向上の余地がない (>732)
を読み落としている件について

内容が未知でソートもキャッシングもされておらずインデックスも張られていないn個のデータからの検索を
線形探索以上に速くする方法など>717=719の脳内にしか存在しないわけだが

>普通に全レコードをメモリにとってきてすべて検索するほうがよっぽど速いんだよ。(>733)
>717=719が、HDD上にあるレコード全部をメモリに持ってくるI/Oの時間をまるきり無視している件について
インデックスが張られていない列に基づく検索ならRDBも同条件(Nレコード全部をHDDから取ってくるI/O時間がNに比例)
インデックスが張られていればRDBが有利(Nレコードの中の一部をとってくるだけで済み、I/O時間がN*log(N)に比例)
なんでメモリにとってきて検索したら速くなると言い切れるの??

>>734
いやはや>717=719の発言には驚くことの連続だが、指し手のみRDBに格納、なんて言ってること一つとっても驚嘆もの
指し手のみRDBに格納しておき局面の検索条件で検索するには、レコード総数をN(これは対局総数に等しい)として、
N個レコードを、いちいち(1) HDDからメモリにロードし、(2)平手局面から指し手を順次適用し、局面を得た後に
(3)検索条件と比較、という手順になる
まさにレコードN個(その対局の指し手が書かれている)全部をメモリにロードしてきて、線形探索するという話なわけだが
さらに悪いことに、指し手の適用ステップ(2)が追加で必要だ


737:720
10/08/28 19:11:18
ちと補足(つか訂正と言った方がいいかな(汗

>n列の条件演算でn倍という部分自体にはキャッシングぐらいしか向上の余地がない (>732)
これは一般論としてはそうだが、特定条件ではそうでもない

>721で述べたクエリのように、n列のANDで検索をかける場合、メモリ上に展開されるべきレコードの集合が
列1の検索条件で絞られ、列2の検索条件でさらに絞られ…という単調減少を示すから、n倍より速くなる
また、メモリにロードされるべきレコードの総数は、列1の検索条件で絞られた件数が上限となる
故にHDDからレコードを持ってくるI/O時間についても得をする

訂正とはいいつつ、これはますます
>普通に全レコードをメモリにとってきてすべて検索するほうがよっぽど速いんだよ。 (>733)
の否定材料になるわけだが


738:717=719
10/08/28 21:48:21
>>736
> n列の条件演算でn倍という部分自体にはキャッシングぐらいしか向上の余地がない (>732)
> を読み落としている件について

読み落としてないよ。インデックスを張って、
> インデックスを張れば、O((N*log(N))*n)ぐらいが期待できる
なんだろ?その時間を実際に測定してみなよ。遅すぎると言ってんの。

> インデックスが張られていればRDBが有利(Nレコードの中の一部をとってくるだけで済み、I/O時間がN*log(N)に比例)
> なんでメモリにとってきて検索したら速くなると言い切れるの??

そもそもあんたは何故それが遅いのかわかってないだろ。
DBがどういう実装になってるかちっともわかってないじゃん。

繰り返しになるけど、そんなにDB初心者なのだったら
その時間を実際に測定してみなよ。遅すぎると言ってんの。

739:717=719
10/08/28 21:54:36
>>736
> 指し手のみRDBに格納、なんて言ってること一つとっても驚嘆もの

俺、そんなこと言ってないじゃん。俺の実装なら最初から>>717にあるじゃん。
局面まるごとがちゃんとstructの中にあるじゃん。
どこに指し手のみRDBに格納されているように見えるの?
俺は指し手は(C#の)Listで持って、これserializeしてvarchar(MAX)に突っ込んどけって言ってんの。

で、部分一致局面を高速に調べたいなら、この局面まるごとなんかRDBには保存せずに
初期局面とあとはそこからの指し手だけの集合のほうが遥かに速いだろうし、俺はそうする。

>>737
> >721で述べたクエリのように、n列のANDで検索をかける場合、メモリ上に展開されるべきレコードの集合が
> 列1の検索条件で絞られ、列2の検索条件でさらに絞られ…という単調減少を示すから

そんな馬鹿な実装になっているDBがどこにあんの?
あんたの脳内にある馬鹿な実装してあるDBの話をされてもな。

740:717=719
10/08/28 22:00:35
結局、あんたはSQL queryのANDがそれぞれのDBでどういう実装になっているのか
それすら全然理解してないじゃん。だからqueryでANDでやればあとはRDBがなんとかしてくれる
だとか妄言じみたことを言うわけじゃん。そんだけ馬鹿なんだったいちいちしゃしゃり出てこなくていいのに。
素直にDB初心者スレを10年ぐらいROMってればいいレベルなのに。本当迷惑だな。

741:デフォルトの名無しさん
10/09/15 23:45:17
おまいら最強の麻雀プログラムしてみろよ Part3
スレリンク(tech板)

742:デフォルトの名無しさん
10/09/29 01:40:28
実際にコード書いて比べてみりゃいいんじゃね

743:デフォルトの名無しさん
10/10/04 12:47:45
理屈こねるより選手権で優勝してしまうほうが楽なんじゃね?

744:森岡@GA将棋!
10/10/04 22:22:00
>>740
ここはあんたの日記帳じゃないぞ。
きっちり「実装して」成果が出てから書き込んでね。

745:偽物? ◆HxwXMuc5Pw
10/10/04 22:25:49
キターっ ってかw

746:デフォルトの名無しさん
10/10/04 23:11:57
>>744
終わってる話にSQL超初心者のくせにしゃしゃり出てきて間違いだらけのことを書いて行ったのは>>720だろ。
>>717は最初から何も間違っちゃいないよ。

747:森岡@GA将棋!
10/10/04 23:56:45
だからさ、そんなに正しくて有望な手法なら、さっさと実装すりゃいいのにっつってんだよボケが。
実装していない時点で>>720>>717も同じ。
単なる妄想癖のあるパンピーだろうが。

748:デフォルトの名無しさん
10/10/05 00:01:20
717==746必至だなw
RDBついて論破したから、自分の考えたアルゴリズムの先進性も証明されたと思ってる?
その二つは全然別ですから。

749:デフォルトの名無しさん
10/10/05 00:37:48
勝負の世界じゃあ、実際には間違ってても勝ったほうの言い分が正しいことになるのだ
だから勝て、話はそれからだ



750:デフォルトの名無しさん
10/10/05 00:38:15
必至なのはお前

751:デフォルトの名無しさん
10/10/05 00:51:27
>>747
> だからさ、そんなに正しくて有望な手法なら、さっさと実装すりゃいいのにっつってんだよボケが。

君は、よほど馬鹿なんだね。>>720がRDB超初心者だってことすらわからないんだね。

>>748
先進的なアルゴリズムなんて>>717は書いてないのにそれすらわからないんだね。
君はどうしようもない馬鹿なんだね。

752:デフォルトの名無しさん
10/10/05 00:58:00
森岡@GA将棋!って偽物だろ
本人なら、森岡@GA将!!!!!なんじゃね?

753:デフォルトの名無しさん
10/10/05 07:22:44
>>751
>普通に全レコードをメモリにとってきてすべて検索するほうがよっぽど速いんだよ。
ここら辺、>>717は従来手法より優れてるって思ってるんじゃね?
それを「先進的」って言うんだよ。
本当にそうならね。
>君は、よほど馬鹿なんだね。>>720がRDB超初心者だってことすらわからないんだね。
「720がRDB超初心者」と「717の言ってることが正しい」は全く別問題。
一方が真だと分かっても、もう一方がどうかは全く不明。
この理屈、理解できる?

754:デフォルトの名無しさん
10/10/05 07:29:13
てか、>>749が全てじゃね?
「強いソフト作った者=正しい」。シンプルでいいじゃないか。

755:デフォルトの名無しさん
10/10/05 07:47:49
いい加減実りのある議論したらどうだ、お前ら。

756:デフォルトの名無しさん
10/10/05 09:19:26
つwよwいwかwらwたwだwしwいw

757:デフォルトの名無しさん
10/10/05 09:21:11
そりゃそうだ。
一二三九段が弱かったら只の変質者だ。

758:デフォルトの名無しさん
10/10/05 10:10:46
んまい

759:デフォルトの名無しさん
10/10/05 12:14:46
>>756
弱者乙



760:デフォルトの名無しさん
10/10/05 12:27:36
>>753
>>普通に全レコードをメモリにとってきてすべて検索するほうがよっぽど速いんだよ。
> ここら辺、>>717は従来手法より優れてるって思ってるんじゃね?

RDB使うより「よっぽど速い」って書いてあるだけじゃん。
そりゃ>>720のような馬鹿な設計するよりはよっぽど速いに決まってるじゃん。

それすらわかんないの?

君は20万棋譜メモリに全部置いて部分一致検索する時間が
だいたいどれくらいになるかもわかんないの?

そりゃ重症だよ。本当にプログラマなの?そんな馬鹿で生きてて楽しいの?

761:デフォルトの名無しさん
10/10/05 12:48:20
ハイハイ717様は天才ですねー

762:ながと ◆32ZI32xxZI
10/10/05 15:12:42
置換表の話?
チェスのstockfishだと、2^nのエントリを作り、局面から作られる64ビットのキー値でアクセスする。
2^nのエントリなら、キー値の下位nビットでアクセス。1つのエントリに4つまで、局面を格納できて、
上位のキー値が一致しているものを拾ってくる。
数百メガバイトの大きな置換表のエントリを拾うのは時間がかかるが、プリフェッチ命令というのを使って、
あらかじめL1/L2キャッシュにロードしておくから速いらしい。

763:デフォルトの名無しさん
10/10/05 15:51:15
>>762
置換表の話は誰もしていないよ。
どうやれば棋譜から部分一致している局面を高速に見つけられるかという話。

例えば68飛、66歩である棋譜を高速に引っ張ってくるだとか。
棋泉だとそういうこと出来るよね。

それをRDB使えばRDBの集合演算が使えるので高速に出来るという
SQL超初心者の基地外>>720が現れて話がおかしくなったわけ。

それでその話は>>738-740でもう終わってるのに、その終わった話を内容も理解せずに
2ヶ月もしてから蒸し返す>>747のような基地外が現れたわけ。しかもこの基地外は
森岡さんの名前を騙ってやがるんだよ。

764:デフォルトの名無しさん
10/10/08 01:24:47
実装できた?

765:デフォルトの名無しさん
10/10/08 01:55:27
717君は、もうとっくに692も720もいないのにスレ違いの事に粘着して
延々喚き続けてる自分が「基地外」だと理解できないのかな?


しかし、こっちはあからの話題がまったくでてないんだな……。

766:デフォルトの名無しさん
10/10/08 03:03:20
>>765
それは違うな

明らかに>>720>>747が基地外だ
そしてそれがわからないお前は池沼


767:デフォルトの名無しさん
10/10/08 06:59:12
-------------------------ここから次の話題-------------------------

768:デフォルトの名無しさん
10/10/09 01:31:24
そりゃこれでしょ
いま将棋板ではこれでもちきり

コンピュータ将棋vs清水市代女流王将 その7
スレリンク(bgame板)

769:デフォルトの名無しさん
10/10/09 04:36:29
合議制がよほど変なふうに働かない限り、あからが史上最強の将棋マシンなのかな
その割にはfloodgateで結構負けてるけど……

770:デフォルトの名無しさん
10/10/10 01:35:41
素人目には合議制をうまく活かすのは結構難しい気がするんだが……

例えば、どれか1個の思考エンジンが巧妙な手を見つけても
他のエンジンが見つけられなければ、結局それらが提案する
(平凡な)手の中に埋もれてしまって表に出てこないよね?

思考エンジンを増やせば増やすほどそういう傾向が強まるわけで、
妙手を打てなくなる方向にしか行かない気がするんだけど……


771:デフォルトの名無しさん
10/10/10 01:54:56
いや、でもそのかわり失着もなくなる方向になるわけで

772:デフォルトの名無しさん
10/10/11 09:36:26
良く分からんが、見つけた妙手については、
他の思考エンジンに通常よりも少し深読みさせれば、
却下させる率を下げられんのかね。

773:デフォルトの名無しさん
10/10/13 16:23:48
合議制はエヴァオタの趣味だろw

774:デフォルトの名無しさん
10/10/13 16:48:02
スペースシャトルのコンピュータとか、もっと古くからある。

775:デフォルトの名無しさん
10/10/13 17:52:48
>>773
オタク死ね

776:デフォルトの名無しさん
10/10/14 11:54:54
コンピュータ同士の対戦で一番強かったからといって
プロ相手に強いとは限らない。

と、二位以下の作者がごねてWC日韓共同開催的な結論に落ち着いたのだろう。

777:デフォルトの名無しさん
10/10/14 13:58:28
URLリンク(htn.to)

778:デフォルトの名無しさん
10/10/15 20:29:24
よくわからないですけど、将棋界はコンピューターに負けるのを恐れて戦わないんですか?

779:デフォルトの名無しさん
10/10/15 20:40:16
>>778
昔、大口たたいたのが居て、引っ込みがつかなくなってるんじゃにない?

780:デフォルトの名無しさん
10/10/15 20:45:05
>>778
そう思ってる人も多いし
どうせ負けるのは時間の問題だから小出しにして
せいぜい話題を集めようとしてるんだろうと裏読みする人もいる
結局真相は外からじゃ分からないよ

なんにしろ羽生7冠以来のでかいネタであるのは間違いない

781:デフォルトの名無しさん
10/10/16 16:33:33
>なんにしろ羽生7冠以来のでかいネタであるのは間違いない
人間棋士がコンピュータに圧勝という状況が続くなら将棋連盟にとって収益的に悪い話ではないが、
やってみて実はそうでなかった、となると怖い
人間弱しということで将棋自体への世間の関心が低下すれば、タイトル戦の提供元がいなくなる
関心が高まったとしても、コンピュータが強くて将棋連盟にお金が入る道理はちょっと見あたらない



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