コンピュータ将棋の勉強メモ

総論

お手軽に強い将棋プログラムを作る10の方法 - 2009-02-19 – aki.の月記
ヘナチョコプログラマが一人でお手軽に強い将棋プログラムを作る10の方法 – 毎日がEveryDay!
Transposition Table, History Heuristic, and
other Search Enhancements
(PDF)
Programming a Computer for Playing Chess

盤面構造(Board Representation)

盤構造をどう持つか – 2012-02-11 – sakurapyonの日記
GPS将棋のソースレビュー – PukiWiki
Miyako Shogi System
駒情報の持ち方 – 小宮日記
駒はsignedがいいのかunsignedがいいのか – 2011-10-03 – Bonanzaソース完全解析ブログ

-bitboard
ビットボードによる手の生成その1 – Daiius Programming
まねしまねぞうさんのブログ – 小宮日記

-magic bitboard
www.graco.c.u-tokyo.ac.jp/~issei/GPW_Proposal and Implementation of Magic Bitboards in Shogi.pdf
2010-11-23 – ながとダイアリー
magic bitboard – スズメレンダラー・クマ将棋の開発日記

-kindergerten bitboard
Kindergarten Bitboardsの将棋への応用 – コンピュータ将棋開発中
ツツカナのkindergerten bitboardの飛車の縦利き – ながとダイアリー
Kindergarten Bitboards マジ素晴らしい – 2012-05-10 – sakurapyonの日記
chessprogramming – Kindergarten Bitboards
chessprogramming – Congruent Modulo Bitboards

-Rotate bitboard
Rotated bitboard角筋メモ – 2012-04-21 – sakurapyonの日記
bitboardに移行中(もうへろへろ) – 小宮日記
Using Bitboards for Move Generation in Shogi
マイムーブ

-手生成(Move Generation)
–逐次手生成
逐次生成に変更 – 小宮日記

探索(Search)

ボナンザでの探索アルゴリズム比較 – スズメレンダラー・クマ将棋の開発日記将棋:探索アルゴリズムの比較 – スズメレンダラー・クマ将棋の開発日記

-Alpha-Beta
人は駒得のみに生くるにあらず – ひよこ将棋、はじめました。

-Alpha-Beta Enhancements
–PVS
Principal Variation Search コンピュータ将棋 – ながとダイアリー
-PVノードと非PVノード
Fruit 研究中 – マイムーブ

-局面表 transposition table
ハッシュの効果測定 : A級リーグ指し手1号
今日の情報収集 – 毎日がEveryDay!
置換表に経路に依存する局面のスコアを書き込まない – 2011-12-05 – Bonanzaソース完全解析ブログ

-Horizon Effect
-Iterative Search
-Move Ordering
–順序
【将棋】オーダリングメモ – スズメレンダラー開発日記
簡単な将棋プログラム「simk」
No.369 探索する手の順序 – マイムーブ
何を何手使いまわすか – 2012-02-17 – sakurapyonの日記
並列化の効果を判定中 – 小宮日記
Miyako Shogi System

–MVVLVA(Most Valuable Victim – Least Valuable Aggressor)
Seeing a Capture と MVV-LVA – 2012-03-01 – sakurapyonの日記
stockfishのmovepicker.cpp – ながとダイアリー
sakurapyon-29 / SEE or MVV-LVA – 2012-03-01 – sakurapyonの日記
–Killer Heuristic
killer move – gamidereの日記
誰も教えてくれないKiller Moveが2個な理由 – 2012-06-02 – aki.の月記

–Mate Killers
Mate Killersはじめました – 2011-03-31 – aki.の月記
mate killer – 小宮日記

-History Heuristics
The History Heuristic and Alpha-Beta Search Enhancements in Practice(IEEE Transactions on Pattern Analysis and Machine Intelligence archive Volume 11 Issue 11, November 1989)
History Heuristic, Transposition Table, and other Alpha-Beta Search Enhancements.

-静止探索(Quiescence Search)
Subject: Finding mate in the quiesce search – Computer Chess Club Archives
人は駒得のみに生くるにあらず その7 – ひよこ将棋、はじめました。
静止探索なんていらない? – Selene日記
chessprogramming – Quiescence Search
静止探索
shogi programming journal (2005-05-21)
将棋方程式:将棋の静止評価について – 小宮日記
静止探索の問題点 – 小宮日記
Stand_Patは気持ち悪い? – 小宮日記
静止探索って微妙? – 小宮日記
静止探索の問題 – 小宮日記
FPGAで将棋プログラムを作ってみるブログ:CSA例会でShuesoの竹内さんの話を聞いてきました – livedoor Blog(ブログ)
Bugじゃない、Featureだ!: A級リーグ指し手1号
アッラーの御名において、Stand-Patは気持ち悪い: A級リーグ指し手1号
静止探索を見てみた – マイムーブ
静止探索について – マイムーブ
静止探索と静的局面評価 (2)|State of the Digital Shogics 最先端計数将棋学
探索の改良 – Miyako Shogi System
YSS 7.0の技術解説
第20回世界コンピュータ将棋選手権 参加記 – 奈良将棋
将棋におけるProbCutの静止探索への応用 – 情報学広場:情報処理学会電子図書館
静止探索1段目で – 小宮日記

-置換表(Transposition Table)
2011-12-05 – 置換表の現代 – 思うだけで学ばない日記
2011-10-29 – お前、頭、奥ゆかしいだろ? – 思うだけで学ばない日記
2011-10-26 – Keep it clean. 思うだけで学ばない日記
2011-10-25 – 置換表は反復深化と組み合わせると一層不安定化する…国家も同じだ – 思うだけで学ばない日記
2011-10-22 – 置換表はいろいろなことを教えてくれるかもしれない…例えば人生とか – 思うだけで学ばない日記
置換表 (7)|State of the Digital Shogics 最先端計数将棋学
置換表 (2)|State of the Digital Shogics 最先端計数将棋学
2011-12-05 – Bonanzaソース完全解析ブログ
www.top-5000.nl/ps/Replacements schemes for transposition tables.pdf
www.top-5000.nl/ps/Information_in_transpositiontables.pdf

-SEE
将棋:SEE – スズメレンダラー開発日記

-History Leaf Pruning
History Leaf Pruning – 小宮日記

-History Reduction
PonanzaQと再び対戦中 – 小宮日記

-Futility Pruning / Futility Cut
fruit chessにおける多重反復深化とFutilityPruning – 小宮日記
旧PonanzaのFutilityマージン – 小宮日記
CiNii 論文 -  3.コンピュータ将棋における全幅探索とfutility pruningの応用(< ミニ小特集>コンピュータ将棋の新しい動き)
2010-03-01 いっせさん手動調整版futility – aki.の月記
マイムーブ No.667  静止探索について(続)
いっせ式futility pruning – 毎日がEveryDay!
2010-03-07 打倒いっせさん式futility – aki.の月記
マイムーブ Bonanza はなぜ深く読めているか
LMRやFutilityの条件で – 小宮日記
マイムーブ Fruit は以下のように処理をノードの種類により行ったり行わなかったり
2007-03-01 – 「棋理(遠見)」開発日記
futility pruningについて悩む – コンピュータ将棋Selene開発日記

-探索手法比較
ボナンザでの探索アルゴリズム比較 – スズメレンダラー開発日記
将棋:探索アルゴリズムの比較 – スズメレンダラー開発日記

-水平線効果対策
水平線効果対策ことはじめ – shogi programming journal (2004-12-23)

-Singular extension
–StockfishのSingularExtensionのマージン?の謎 – 2012-07-22 – aki.の月記

モンテカルロ

モンテカルロ木探索将棋プログラムmcts の解説など – フダンの記録
趣味の将棋プログラム – フダンの記録

合議

合議における内部局面の最善手共有によるReduction抑制 – GA将!!!!!! 作ってます Part2
密結合合議って出来ないもんだろうか – GA将!!!!!! 作ってます Part2
合議について – コンピュータ将棋Selene開発日記
合議考察 – スズメレンダラー・クマ将棋の開発日記
【将棋】合議のテスト中 – スズメレンダラー・クマ将棋の開発日記
【将棋】合議の実装 – スズメレンダラー・クマ将棋の開発日記

評価(Evaluation)

-局面評価
evalute+ – 小宮日記
-駒割り
駒割り君 – 2012-02-02 – sakurapyonの日記
形勢判断の仕方
将棋スコアボードと駒割グラフ – 将棋思録~あり得べき世界の、そのあり得べき理由について、問う。
Bonanzaのソースと論文の駒割の値 – aki.の月記
大駒の移動可能数を学習してみた – 小宮日記
「サルかも将棋」 その8 評価関数 駒割り ① | と金倶楽部
「サルかも将棋」 その9 評価関数 駒割り ② | と金倶楽部
YSS 7.0の技術解説

-KPP (Bonanza 3駒関係)
KPPの差分評価メモ – スズメレンダラー・クマ将棋の開発日記
【将棋】配列版でKPPを使う方法 – スズメレンダラー・クマ将棋の開発日記
Bonanzaの評価関数はどのようなものか?【KPP編】 – 2009-10-01 – Bonanzaソース完全解析ブログ
KKP/KPPの差分評価 – 2012-11-30 – sakurapyonの日記

-KKP (Bonanza 3駒関係)
Bonanzaの評価関数はどのようなものか?【KKP編】 – 2009-09-28 – Bonanzaソース完全解析ブログ
Bonanza6からKKPテーブルを抜き出す方法(決定版) – ひよこ将棋、はじめました。

学習

C++のTemplateを用いた評価関数の評価・学習ルーチンの実装 – GA将!!!!!! 作ってます Part2
ボナンザメソッドあれこれ – スズメレンダラー・クマ将棋の開発日記

思考時間制御

思考時間制御のこと – ひよこ将棋、はじめました。
Bonanzaの探索時間の制御方法のメモ – shogi programming journal (2009-02-13)

速度

-指し手生成速度
かずの心の贅肉 指し手生成祭2
かずの心の贅肉 指し手生成祭
2009-11-28 – Bonanzaソース完全解析ブログ
—「50M回/2661[ms]になった。18.8M回/sec」
指し手生成コード公開します。 – buoyance
—https://twitter.com/HiraokaTakuya/status/273008256312561665 「生成祭の局面では約200手を毎秒400万回生成」
指手生成コード for gcc – スズメレンダラー・クマ将棋の開発日記
—「2.4GHzのノートPCで指手祭で320万/秒でした」
手生成ベンチマーク – Miyako Shogi System
—「core i3 3.4GHz ubuntu 64bit 無 2100840」
ビットボードによる手の生成 その7 – Daiius Programming
一人指し手生成祭り – 将棋プログラム「技巧」開発日記
—「例の局面 500万回/2.23秒 = 2,242,152回/秒」
指し手生成祭り開催 – Bonanzaソース完全解析ブログ

-イテレーション
きょうのponanza – 毎日がEveryDay!
初期局面を探索してみた (2) – 2012-03-31 – aki.の月記
初期局面を探索してみた – aki.の月記

-Make/Unmake move
MyMove式ベンチマーク – 毎日がEveryDay!
マイムーブ
2008-12-01 – aki.の月記

-オーダリング
指し手オーダリングのための高速ソート手法の提案(下書き) – 2011-12-15 – Bonanzaソース完全解析ブログ
Bonanzaで使われているinsertion sortとは何か? – 2009-11-26 – Bonanzaソース完全解析ブログ

-プロファイル
プロファイル解析 – スズメレンダラー・クマ将棋の開発日記
bonanza6.0でプロファイル取ってみた – スズメレンダラー・クマ将棋の開発日記

詰め将棋

df-pnアルゴリズムを利用した詰将棋プログラムを作るときのポイント – 将棋プログラム「技巧」開発日記

コンパイラ

Miyako Shogi System コンパイラ比較(その3)
gccのオプション|将棋プログラム「Sunfish」
かずの心の贅肉 gcc は MMX を使わないほうが速くなる??
PGOしてみた – 毎日がEveryDay!

問題集
コンピュータ将棋用問題集YSS編
コンピュータ将棋用問題集(棚瀬さん)

–2005/1–(「コンピュータ将棋の進歩2」の問題集の15番に模範解答よりも良い解を発見した、という話)

棋譜

-最強の棋譜データベース (将棋倶楽部) 棋譜の選別 – 2012-12-04 – buoyance
2chkifu.zip – zipkifubrowser – ki2 ziped archive – zip kifu browser for android – Google Project Hosting

まとまった解説

Inside KFEnd
YSS 7.0の技術解説
将棋プログラムの作り方
コンピュータ将棋のWiki
コンピュータ将棋wiki – PukiWiki
chessprogrammingwikiを読む – ながとダイアリー
chessprogrammingwikiを読む2 – ながとダイアリー
弱いコンピュータ将棋「こまお」について。 – 2012-04-18 – IHARA Note
GPW論文紹介 – GA将!!!!!! 作ってます Part2

ソースコード

-Bonanza
Bonanza – The Computer Shogi Program
-れさぴょん
れさぴょん
-うさぴょん
「うさぴょん ~将棋を革命する力を~」
-GPS shogi
GPSshogi – PukiWiki
GPS将棋のソースレビュー – PukiWiki
GPS将棋ソースコードひとり勉強会 – PukiWiki
GPS将棋ライブラリの使い方メモ
-simk
簡単な将棋プログラム「simk」
-Ponanza
山本一成のHP
-Blunder
Blunderのページ
Blunder選手権バージョン – 2012-05-06 – aki.の月記
-SunFish
千葉工業大学将棋倶楽部-Sunfish
-daemon shogi
daemonshogi (デーモン将棋) プロジェクト日本語トップページ – SourceForge.JP
-稲庭将棋
稲庭将棋の詳細情報 : Vector ソフトを探す!
-Open Shogi Lib
OpenShogiLib – PukiWiki
-YSS
YSS 1.0 のソースリスト
-JavaShogiLib
GA将!!!!! in Action / アーカイブ
-Haskell将棋
第21回世界コンピュータ将棋選手権のアピール文書用のプログラム – ながとダイアリー
-KiwiFruit
KiwiFruit/KiwiFruit at master · nagat01/KiwiFruit · GitHub

-ソースコード読み
ソースコードリーディング – ながとダイアリー
Bonanza雑感その4 – コンピュータ将棋Selene開発日記
Lesserkai雑感 – コンピュータ将棋Selene開発日記
stockfish雑感 – コンピュータ将棋Selene開発日記

floodgate

shogi programming journal (2012-05-11)

論文

将棋におけるProbCutの静止探索への応用
局面の情報を利用した,静止探索中の動的手生成
CiNii 論文 –  3 最近のコンピュータ将棋の技術背景とGPS将棋(< 小特集>コンピュータ将棋の新しい波)
CiNii 論文 –  4 合議アルゴリズム「文殊」 : 単純多数決で勝率を上げる新技術(< 小特集>コンピュータ将棋の新しい波)
CiNii 論文 –  5.棚瀬将棋の技術背景(< ミニ小特集>コンピュータ将棋は止まらない)
CiNii 論文 –  4.最近のコンピュータ将棋の技術背景と激指(< ミニ小特集>コンピュータ将棋は止まらない)
CiNii 論文 –  2U-4 モンテカルロ法によるコンピュータ将棋の実現(ゲーム・知識ベース,学生セッション,人工知能と認知科学)
CiNii 論文 –  3.コンピュータ将棋における全幅探索とfutility pruningの応用(< ミニ小特集>コンピュータ将棋の新しい動き)
CiNii 論文 –  1.「全幅探索」と学習による新感覚のコンピュータ将棋の成功とその高速アルゴリズムの及ぼす影響(< ミニ小特集>コンピュータ将棋の新しい動き)
CiNii 論文 –  人間の思考を模倣した利己的先読み : 将棋の駒の取り合い問題に関する考察
CiNii 論文 –  コンピュータ将棋におけるキラー手
CiNii 論文 –  2. コンピュータ将棋はどのようにしてアマ5段まで強くなったか(< ミニ小特集>コンピュータが将棋を制する日)
CiNii 論文 –  熟達者の直観的思考を組み込んだ将棋プログラム : HIT将棋(Human Intuitive Thought)プロジェクト(応用分野・領域)
CiNii 論文 –  指し手の統計情報に基づく探索の効率化
CiNii 論文 –  偏差値による木探索の延長
CiNii 論文 –  コンピュータ将棋における指し手の順序付けによる探索効率化(< 特集>ゲームプログラミング)
CiNii 論文 –  コンピュータ将棋の次の一手問題による評価(その2)
CiNii 論文 –  コンピュータ将棋の次の一手問題による評価(その3)
CiNii 論文 –  将棋におけるゲーム木探索アルゴリズムの比較
CiNii 論文 –  将棋における機動力の重要性について
CiNii 論文 –  コンピュータ将棋における探索空間の限定法
CiNii 論文 –  将棋における局面変化に応じた評価関数
CiNii 論文 –  将棋プロ棋士におけるミニマックスとOM-Search
CiNii 論文 –  コンピュータ将棋における危険判別探索
CiNii 論文 –  ゲーム・プレイングにおける勝負手
CiNii 論文 –  ハッシュテーブルを用いたコンピュータ将棋の探索の効率化
CiNii 論文 –  ハッシュテーブルを用いたコンピュータ将棋の探索の効率化(2)
CiNii 論文 –  将棋の先読みをしない1手詰めの計算法
CiNii 論文 –  将棋における三手詰めの静的評価関数
局面の情報を利用した,静止探索中の動的手生成
コンピュータ将棋における2 段階合議システムの提案

学会・研究会

書籍

-コンピュータ将棋のアルゴリズム―最強アルゴリズムの探求とプログラミング (I・O BOOKS) -Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS) -コンピュータ将棋―あなたも挑戦してみませんか (Information & Computing) -コンピュータ将棋の進歩 -コンピュータ将棋の進歩〈2〉 -アマ4段を超える―コンピュータ将棋の進歩〈4〉 -アマトップクラスに迫る―コンピュータ将棋の進歩〈5〉 -臨時別冊数理科学 SGCライブラリ 59 「コンピュータ将棋の頭脳」人間に追いつく日はいつ? 2007年 11月号 -ゲーム計算メカニズム (コンピュータ数学シリーズ 7) -あから2010勝利への道 – 情報処理 2011年02月号