<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/aliceproject/">
    <title>Aliceproject @ ウィキ</title>
    <link>http://w.atwiki.jp/aliceproject/</link>
    <atom:link href="https://w.atwiki.jp/aliceproject/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>Aliceproject @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2008-07-05T18:14:47+09:00</dc:date>
    <utime>1215249287</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/aliceproject/pages/23.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/aliceproject/pages/22.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/aliceproject/pages/21.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/aliceproject/pages/20.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/aliceproject/pages/19.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/aliceproject/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/aliceproject/pages/17.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/aliceproject/pages/16.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/aliceproject/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/aliceproject/pages/14.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/aliceproject/pages/23.html">
    <title>ジャンク橋かがみ製作</title>
    <link>https://w.atwiki.jp/aliceproject/pages/23.html</link>
    <description>
          </description>
    <dc:date>2008-07-05T18:14:47+09:00</dc:date>
    <utime>1215249287</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/aliceproject/pages/22.html">
    <title>ジャンク橋すみか製作</title>
    <link>https://w.atwiki.jp/aliceproject/pages/22.html</link>
    <description>
          </description>
    <dc:date>2008-07-07T11:16:51+09:00</dc:date>
    <utime>1215397011</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/aliceproject/pages/21.html">
    <title>並列化</title>
    <link>https://w.atwiki.jp/aliceproject/pages/21.html</link>
    <description>
      かつてある偉大な剣術家は考えた

――人間の腕は二本
――ならば扱う刀も日本であるべきだ

こうして生まれたのが宮本武蔵の二天一流である。

二つのCPUで二つの探索を並列に行う。
現代に甦る二天一流――それが並列化である。    </description>
    <dc:date>2008-06-20T03:56:09+09:00</dc:date>
    <utime>1213901769</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/aliceproject/pages/20.html">
    <title>ありがたリンク集</title>
    <link>https://w.atwiki.jp/aliceproject/pages/20.html</link>
    <description>
      ありがたいリンクをとにかくはりつけまくります


-コンピュータ将棋協会
--http://www.computer-shogi.org/

-コンピュータ将棋協会blog
--http://www.computer-shogi.org/blog/
-よい記事です
--http://www.computer-shogi.org/blog/chronicles_of_wcsc18/#more-84

-コンピューター将棋のwiki
--http://shogi.yaneu.com/
--http://usapyonsoft.jp/shogi/wiki/

-bitboard関連
--[[craftyの概略についてYSSの人が書いてるページ&gt;http://www32.ocn.ne.jp/~yss/csa0307.txt]]←ごめんなさい。よく読んだらbitboard関係なかった。並列化の手法について書いてあります。
--[[craftyのソースがダウンロードできます&gt;http://packages.ubuntu.com/ja/source/hardy/crafty]]
--[[craftyのドキュメント RotateBitmapsとやらについて書いてある&gt;http://www.cis.uab.edu/info/faculty/hyatt/bitmaps.html]]
--[[ビットボードを用いたコンピュータ将棋実装法の評価&gt;http://www-nkn.ics.nitech.ac.jp/paper/H19-S/oso.pdf]]
--[[USING BITBOARDS FOR MOVE GENERATION IN SHOGI&gt;http://gamelab.yz.yamagata-u.ac.jp/RESEARCH/ICGAJournal2007.pdf]]


-初音ミク
--[[初音ミクと学ぶコンピュータ将棋&gt;http://misakirara.s296.xrea.com/misaki/words.html]]

-これ面白いかも
--[[この中にあるfloodgate観戦室っての&gt;http://www.geocities.jp/shogi_depot/]]

-モンテカルロ法
--[[YSSと彩のページからの    </description>
    <dc:date>2008-07-21T20:43:00+09:00</dc:date>
    <utime>1216640580</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/aliceproject/pages/19.html">
    <title>Ordering</title>
    <link>https://w.atwiki.jp/aliceproject/pages/19.html</link>
    <description>
      Orderingとは指し手の並べ替えのことである。
常に最善手(そのプログラムの評価を基準として)を最初に読むことが出来ればαβ探索において探索する局面の数は全幅探索の場合の平方根になるはずである・・・ま、そんなこと無理ですけど。

現在ノーアイデアです。    </description>
    <dc:date>2008-06-07T19:12:03+09:00</dc:date>
    <utime>1212833523</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/aliceproject/pages/18.html">
    <title>用語集</title>
    <link>https://w.atwiki.jp/aliceproject/pages/18.html</link>
    <description>
          </description>
    <dc:date>2008-11-10T22:51:44+09:00</dc:date>
    <utime>1226325104</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/aliceproject/pages/17.html">
    <title>Hash Table</title>
    <link>https://w.atwiki.jp/aliceproject/pages/17.html</link>
    <description>
      局面の評価をハッシュテーブルで管理することで同一局面を再度読む必要がなくなるので高速化されます・・・きっと。

-ハッシュのエントリ
--その局面の評価値
--その評価を与えた深度がその局面の何手先であるか？

-利用方法
ある局面を探索する際にまずハッシュテーブルにその局面の情報を問い合わせ、評価値の深度が探索深度より深ければその評価値を返す。
また、探索関数で評価値が決定してリターンする際にその情報をハッシュテーブルに登録する。

-つかさへの導入
してみました。(ジャンク橋つかさ_Hash.zip)
結構適当。ハッシュを消すタイミングとかいい加減なモン。
てか、あんま速くなってない。    </description>
    <dc:date>2008-06-05T22:30:31+09:00</dc:date>
    <utime>1212672631</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/aliceproject/pages/16.html">
    <title>指し手差分生成</title>
    <link>https://w.atwiki.jp/aliceproject/pages/16.html</link>
    <description>
      指し手を局面情報から逐次生成するのではなくて、局面情報を書き換える際に古い局面の指し手と局面の差分から新しい局面の指し手を作るというアイデアです・・・おそらく。
十数倍だか数十倍(どっちだったか忘れた)速くなる by 激指教授

-具体的方法？
--40枚それぞれの駒にIDを与えて管理し、それぞれを動かす指し手を別々に管理する。
--但し、持駒を打つ手は別に逐次生成する。
--先手が指した際は後手の指し手を更新、後手が指した場合は先手の指し手を更新と1手おきに先後入れ替えて指し手を更新する。
--各駒種ごとに指し手更新関数を用意し、更新直前の二つの指し手に対して、移動元移動先に利いていた駒、動かした駒、取った駒が更新対象。
--この際、利きが更新されてから利きを参照しないように工夫が必要。(利きの更新直前に更新必要IDを保存する？それなら一手ごとに更新しても一緒？)
--王手に対する応手の際は差分生成が有効でない。しかし、さらに2手先のために王手無視になる指し手も更新しておく必要がある。
--王に対する利きを遮っている駒の処理をどうするべきか？最終的に指し手とする前にその駒が動けるか確認すればいいが、遅いか？(影利きデータがあればそうでもない？)

-ちゃぱのデータ構造(これで実装できそう？)
#highlight(cpp) {{
/* 駒 */
typedef int Koma;

/* 駒個別管理用構造体 */
typedef struct _KomaState {
	int fPos;				/* 駒の位置 */
	Koma fKomasyu;			/* 駒の種類 */
} KomaState;

/* 各駒個別の利き情報 bit積で特定駒の効きがあるか調べる */
typedef unsigned long long Kikibit;
typedef unsigned int KageKikibit;

typedef struct _KikiData {
	Kikibit fSeme;
	KageKikibit fSemeKage;
	Kikibit fUke;
	KageKikibit fUkeKage;
} KikiData;

/* 局面最小情報 */
typedef struct    </description>
    <dc:date>2008-06-03T21:25:00+09:00</dc:date>
    <utime>1212495900</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/aliceproject/pages/15.html">
    <title>BitBoard</title>
    <link>https://w.atwiki.jp/aliceproject/pages/15.html</link>
    <description>
      局面の駒のあるなしや利きなどの情報をBitで管理計算することで処理を速くしようってアイデアです・・・たぶん。

-実装方法
盤面情報をBitBoard化するので最低81bitの値が必要。よってint型3つで表現する。
#highlight(cpp){
int bit[3];
}
に対してたとえば
#highlight(c){
#define BB_OR(result,x,y) (result)[0]=(x)[0]|y[0];(result)[1]=(x)[1]|(y)[1];(result)[2]=(x)[2]|(y)[2];
#difine BB_LSIFT(result,x) (result)[0]=((x)[0]&lt;&lt;1)|((x)[1]&gt;&gt;31);(result)[1]=((x)[1]&lt;&lt;1)|((x)[2]&gt;&gt;31);(result)[2]=((x)[2]&lt;&lt;1);
}
みたいなかんじでビット演算子を定義しておくのかな。

-参考
かなり簡単ながら下記に飛び駒の利きの実装方法について書かれている。
http://www4.ocn.ne.jp/~grf/bitboard01.txt
盤面情報をいちいち参照して利きを生成するよりかなり速そうである。    </description>
    <dc:date>2008-06-03T18:51:53+09:00</dc:date>
    <utime>1212486713</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/aliceproject/pages/14.html">
    <title>高速化に関する諸々</title>
    <link>https://w.atwiki.jp/aliceproject/pages/14.html</link>
    <description>
      やはり将棋プログラムにおいて速さこそ正義だと思う。(200手先まで全検索できたら将棋の結論がでてるだろう・・・たぶん)
というわけで高速化に関するアイデアなどを書いていくコーナーです。

-[[BitBoard&gt;BitBoard]]
-[[指し手差分生成&gt;指し手差分生成]]
-[[Hash Table&gt;Hash Table]]
-[[Ordering]]
-[[並列化]]    </description>
    <dc:date>2008-06-18T19:01:18+09:00</dc:date>
    <utime>1213783278</utime>
  </item>
  </rdf:RDF>
