「サルかも将棋」 その6 詰め将棋 DF-PN Search

我が初めて詰め将棋ソフト「詰め太郎」を書いた時のアプローチは基本的に「しらみつぶし検索」でしたが、それなりの工夫をこらして「人間の真似」を試みました。

①王手の内、玉に近い枡での着手を優先...王からの距離に応じて点を付けます。
②成っての王手に加点
③合い駒は玉に近い枡に打つ

...そして結果はそれなりの加速になりました。理由が解らなくても「人間の真似」をするだけで恩恵が出るわけですね。

「DF-PN 検索」 はアプローチの観点が全然違います。

DF-PN Search = Depth First Proof Number Search

↑は訳して、「深さ優先 証明数検索」...です。

「サルかも将棋」の精神に従い、物凄く簡単に説明すると...

「攻め手は王手を掛ける時、守り手の応手が少なくなる手を優先して選ぶ。
守り手は応手が攻め手の王手候補が少なくなる手を優先して選ぶ。」

...となります。

「詰め」は「王手に対する応手が無い」のと同義なのでこれが詰めを検索するための指針となり、
守り手は「王手が掛からない状況」が望ましいので王手の減る方向へ逃げるのが作戦となります。

(参考リンク)
http://blog.livedoor.jp/wildcat2005/archives/51101569.html

投稿者: webMaster 投稿日時: 水, 08/17/2011 - 07:41 categories [ ]

コメントの表示オプション

お好みの表示方法を選択し、「設定の保存」をクリックすると、表示方法を変更することができます。

遠大なる計画

>記事の更新を楽しみに待っております。

ありがとうございます。至らぬ所満載ですが、何かのお役に立てれば本望です。

>「コンピュータ将棋・人工知能のプログラミングにチャレンジ!」

これ、ものすごく ムズカシイ です。

将棋ソフト「うさぴょん」の作者による

「コンピュータ将棋のアルゴリズム―最強アルゴリズムの探求とプログラミング」
「Java将棋のアルゴリズム―アルゴリズムの強化手法を探る」

...が現存する多分「一番敷居が低い」入門書と思われます。CかJavaでプログラムを書けることが必須ですね。

これよりもう一段降りるには 「一から書いて組み立てる」 のでは道のりが遠すぎて子供には拷問になる恐れがあるので、我が以前から考えてる方法は

構造が比較的簡単ではあるが完全に動くプログラムを与え、変更・改造することで基本を学んでいく

...のがよろしいのでは?と考えています。

真吾オジサンの思いつきです。

いつも更新御苦労さまです。
真吾オジサンは非常に記事の更新を楽しみに待っております。 ^^

真吾オジサンは、頃合いを見て、「コンピュータ将棋・人工知能のプログラミングにチャレンジ!」とでも題された連載をされてみてはどうかなぁ~?と思っております。
一週間に一回くらいか、連続して書かれてあっても面白そうな気がいたします。

子どもさんが友達・学校の先生・父親から将棋のことを教えてもらって、興味が沸いたようでしたら、100円ショップにいってマグネットの将棋盤を買いにいくと思うんですよ。
こうしておいて「将棋入門」とかを本屋さんで買ってきて、いろいろと学んでいくものだと思います。

「コンピュータ将棋・人工知能のプログラミングにチャレンジ!」のようなものをお書きになられると、将棋で言うと、マグネットの将棋盤を買った子どもさんが、「将棋入門」を手にしてあれこれと考えながら、駒を動かして学ぶようなことになるのではないかぁ~と思ったりも致します。

プログラマの方をF1レーサーだとすると、これは子どもさんがミニカーを手にして「ぶーぶー」と言っているようなものだと思うのですが、そのうちゴーカートに乗って「わーい!!」くらいになれると、結構、コンピュータ将棋・人工知能に親しみを感じて頂けるのではないかな?と思います。

コメントの表示オプション

お好みの表示方法を選択し、「設定の保存」をクリックすると、表示方法を変更することができます。