タグ

shogiに関するsugyanのブックマーク (49)

  • Electronを使ったPC向け将棋アプリ開発 - Qiita

    はじめに 2022 年 1 月から、趣味PC 向けの将棋アプリを開発しました。その中で取り組んだことや学んだことについて簡単にまとめます。 作ったもの Electron将棋 (electron-shogi) GitHub: sunfish-shogi/electron-shogi GitHub Pages: Electron将棋 背景 最近ではスマホやタブレットでも将棋の対局や研究ができるようになりましたが、格的に将棋の勉強や研究をするには必ずしも十分ではなく、特に将棋 AI を動す上で PC の処理能力やカスタマイズ性は有用です。 2010 年あたりからオープンソースの将棋 AI が増えましたが、その多くは GUI や通信対局機能を備えておらず GUI のアプリケーションと組み合わせて使う必要があります。AIGUI がやりとりするための USI という共通仕様があり、 USI

    Electronを使ったPC向け将棋アプリ開発 - Qiita
    sugyan
    sugyan 2024/05/11
    素晴らしいまとめ。いつか自分もTauriで作ってみたいと思いつつ何もできぬまま3年くらい経ってる…
  • df-pnの完璧な実装が公開されていた話 - コンピュータ将棋動画勢!

    前回オープンソースで公開されてるミクロコスモスの解けるdf-pnの実装がないとか書いちゃったけど、あった。ごめんなさい。 GPS将棋についてた。しかも完璧な実装。(東大の金子先生がほぼ一人で書いたらしい。たぶんdf-pnのバリエーションも実装されてて、全部入れると詰将棋だけで1万行くらいある……) 多分df-pn+というdf-pnを更に効率化したアルゴリズム(末端ノードで固定深さの探索を行って、証明数・反証数の推定値を得る)をベースに、詰将棋ソルバ定番の優越関係・証明駒・GHI検出の完璧なやつ(kishimoto-mueller)・ループ検出・Small TreeGCを全部実装している。まあソースコードは関数名をちらっと見たくらいで、読んでないんで間違ってたらごめんなさい。 ミクロコスモスが5000万ノードの探索で解けるらしい……(脊尾詰のアルゴリズムだと5億ノードくらい探索する?) 詳し

    df-pnの完璧な実装が公開されていた話 - コンピュータ将棋動画勢!
  • Shogi Images

    ここで提供している画像は用途を問わず自由に使用することができます。 二次加工も可能です。 報告義務はなく、著作権表示の必要もありません。 (任意で報告や表示をしていただけるのは歓迎です。) 一方で作者は一切の責任を負わず、一切の保証をしません。 詳しくは CC0 のリーガルコード全文をお読みください。 コンテンツ 一文字駒 一文字駒(ゴシック体) 一文字駒(ダーク) 一文字駒(ゴシック体・ダーク) 盤 - 木材(明)458x500 盤 - 木材(暖)458x500 盤 - 塩化ビニル 458x500 盤 - ダーク 458x500 盤 - 木材(明)878x960 盤 - 塩化ビニル 878x960 盤 - ダーク 878x960 一文字駒

    Shogi Images
  • 将棋再生盤ライブラリ Kifu for JS | Kifu for JS

  • shogi-player documents

  • 将棋プログラムK1.5の無駄合判定アルゴリズムについて | やねうら王 公式サイト

    前回記事で柿木将棋の柿木さんが考案された無駄合判定アルゴリズムとして以下のを紹介したのですが、このが絶版になっていて悲鳴のような声を受信したのでフォローしておきます。 コンピュータ将棋―あなたも挑戦してみませんか[サイエンス社 , 1990年 アルゴリズムは書籍の第4章で書かれており、この章は柿木さんが執筆を担当しておられます。 章ではK1.5という柿木さんの作成された将棋プログラムの解説として、無駄合の処理について書かれています。その部分を以下に引用します。 この無駄合判定アルゴリズム自体は、柿木の無駄合判定アルゴリズムとして複数の論文で引用されているのですが、この一次ソースである書が絶版になっているため、ニュアンスが変わって伝わっていたりして学術的な研究の妨げになっているように思いましたので、上に引用させていただきました。

  • 詰将棋の無駄合の定義について(長文) | やねうら王 公式サイト

    将棋ルーチンを書いていると詰将棋の無駄合のルールがとてもややこしいことに気づきます。当にややこしいので、無駄合を考慮する詰将棋ルーチンはプログラマーなら誰も書きたがらないことが多く、一部の開発者以外この問題と正面から向き合おうともしていません。 それでたまたまツイッターで見かけた3手詰めの次の問題です。 無駄合ありなら手順としては、27銀、36合、同香、35合、同香、25玉、36馬までの7手詰めです。(作意はおそらく27銀、25玉、43馬まで。) さて、この時の36合、35合を当に無駄合と言えるのかについてです。 詰将棋の初心者に向けた説明 王手に対して「合駒」ができるということは遠方駒(飛車、角、香のこと)による王様から2升以上離れた升からの王手です。 また、両王手の場合は「合駒」はできません。ゆえに無駄合は両王手の時には出てきません。 いま王手する遠方駒を飛車とします。飛車で王手

  • Recoil と将棋ったー

    この記事は2023/1/20に開催された Harajuku.ts Meetup 〜 Recoilの事例集めました〜 の発表内容を元に執筆されています。 Recoilと将棋ったー 将棋対局サイト「将棋ったー」における、Recoilによる将棋盤面の状態管理の事例を紹介します。 実際の発表スライド 将棋ったーとは 将棋ったーは、100種類以上の変則将棋のオンライン対局ができるサイトです。例えば量子将棋、大局将棋将棋対囲碁、といったようなものがあります。以前バズったのは量子将棋というもので、駒が量子駒といってどの駒の動きか定まっておらず、動かすたびに可能性が狭まっていくというようなルールです。 主な技術スタックは次のとおりです。 Remix React Recoil 将棋ったーは10年以上前に作り始めたものですが、昨年上記のスタックでの書き換えをしたので、Recoilの経験を積むことができました

    Recoil と将棋ったー
  • SIMDによる将棋Bitboard計算の高速化 - すぎゃーんメモ

    自作Rust将棋合法手生成ライブラリ、計算の高速化のためBitboardの128bit計算をSIMDで行うようx86_64のAVX2、AArch64のNEON、wasm32のsimd128で動くようにそれぞれ実装して 各環境で多少速く探索できるようになった。https://t.co/h7Dz3X6BhT— すぎゃーん💯 (@sugyan) July 2, 2022 ということでSIMDでの高速化のメモ。 SIMDとは 実装 x86_64 基演算 飛び利き計算 AArch64 同値判定、ゼロ値判定 飛び利き計算 Iterator WebAssembly Benchmark x86_64 AArch64 WebAssembly 感想 SIMDとは ja.wikipedia.org の通り、複数のデータを1命令で同時に演算する、というもの。 将棋Bitboardは81マスのデータを表現する

    SIMDによる将棋Bitboard計算の高速化 - すぎゃーんメモ
  • 難解作品が解ける詰め将棋エンジン KomoringHeights v0.5.0 を公開した

    合流検出の実装はかなり複雑だ。詰将棋探索では探索中の局面を置換表(メモリ)に保存する必要があるのだが、合流検出のためにはこれを増やす必要がある。具体的には、v0.4.1 では 1 局面あたりの置換表エントリサイズは 32 byte であったのに対し、v0.5.0 では親局面のポインタ(12 byte)と合流フラグ(8 byte)を追加で持たせているため、サイズが 56 byte(1.5倍)に膨れ上がっている2。 さらに、合流検出のアルゴリズム自体もそれほど単純ではない。合流の可能性がある局面を見つけるたびに、再帰的に局面をさかのぼって合流検出のフラグを立てに行く必要がある。1回の計算量は大したことがないが、長時間探索する場合は無視できない計算量になりうる。 これらの理由から、合流検出を実装したことでNPS(単位時間あたりの探索局面数)がかなり低下する……はずだった。しかし、置換表のデータ構

    難解作品が解ける詰め将棋エンジン KomoringHeights v0.5.0 を公開した
  • 第32回世界コンピュータ将棋選手権 結果報告 - TadaoYamaokaの開発日記

    5/3~5/5に開催された第32回世界コンピュータ将棋選手権に参加しました。 HEROZチームとして、「dlshogi with HEROZ」というプログラム名でエントリしました。 大会の概要 世界コンピュータ将棋選手権は、1990年より毎年開催されている歴史のあるコンピュータ将棋の大会です。 今回は32回目の開催で、51チームが参加しました。 第1予選、第2予選を通過した上位8チームで総当たりのリーグ戦で決勝戦が行われました。 大会の結果 決勝では1回も負けることはなく、優勝という結果になりました。 第32回世界コンピュータ将棋選手権 決勝 ソフトの強さは毎年強くなっており、上位ソフトの強さは拮抗しており決勝に残るだけでも難しい状況でした。 優勝の可能性はあると考えていましたが、決勝に残るチームでの勝率の差は10%程度だと考えていたので、1回勝負では運で決まる要素も大きいと思っていました

    第32回世界コンピュータ将棋選手権 結果報告 - TadaoYamaokaの開発日記
    sugyan
    sugyan 2022/05/06
  • S.Lightweight-EFについて - 死ぬこと以外かすり傷

    第32回世界コンピュータ将棋選手権が終わりましたが、そちらに出場していた「S.Lightweight-EF」について記載します。 どちらにしろ後からアピール文書としても出し直しますが、主にそちらには書かない部分について言及しようと思います。 ■概要 dlshogiをベースとしたライブラリ勢のソフトで、Lightweightシリーズの最新版にあたります。 コンセプトは「ローカルPC環境でもCPU系/GPU系に限らず、高級スリッパやつよつよインスタンス勢と戦うこと」であり、末尾のEFはモデルに採用しているEfficientNetが由来です。 ■第2回電竜戦時からの改良点とdlshogi家との差異 大きく①②③④⑤の特徴がありますが、家との差異は以下①②です。 ①モデルアーキテクチャ 家ではResNetを使っていますが、S.Lightweight-EFでは「EfficientNet」にて構

    S.Lightweight-EFについて - 死ぬこと以外かすり傷
    sugyan
    sugyan 2022/05/06
  • 詰将棋探索における簡易的な二重カウント対策

    #証明数/反証数の二重カウント問題を回避するためには、局面グラフの合流を検出ができなければならない。 合流を検出するためには、以下の追加情報のいずれかを置換表に保存する必要がある。 直前手親局面の置換表エントリへのポインタこれらの情報があれば、次回以降に同じ局面に到達したときに局面の合流を検出することができる。なお、直前手だけでは取った駒がわからないので、厳密な合流検出のためには親局面へのポインタも必ず必要になる。 局面の合流検出 長井歩, and 今井浩. “df-pn アルゴリズムの詰将棋を解くプログラムへの応用.”  情報処理学会論文誌  43.6 (2002): 1769-1777. Fig. 3 探索中に局面の合流を見つけたとき、探索経路および置換表に書かれた親局面をたどり、それらの手順が分岐した局面を特定する。このようにして、二重カウント問題が発生しそうな分岐局面を特定すること

    詰将棋探索における簡易的な二重カウント対策
  • コンピュータ向け超難解詰将棋作品集 - 詰将棋メモ

    [2022年6月9日最終更新] 脊尾詰でミクロコスモスが解け、長井詰でほとんどの長編が解けてしまってから、詰将棋プログラムの研究は新たな展開がほとんどない。そこで、コンピュータに挑戦!ということで、コンピュータ向けのベンチマークとして超難解詰将棋作品集を作ってみようと思いついた。10作ぐらい揃えたいので超難解作をご存知の方はコメントやトラックバック、またはおもちゃ箱掲示板で教えてください。また、これらの作品がコンピュータで解けた場合は、プログラム、環境(CPUやメモリ設定)、時間をレポートしていただければ、随時掲載したいと思います。 作品集はこちら(現在13作品) ===> コンピュータ向け超難解詰将棋作品集 関連情報(詰将棋メモ): コンピュータで詰将棋  コンピュータ詰将棋の課題  コンピュータによる詰将棋創作 関連情報(おもちゃ箱): 将棋ソフト・コンピュータ将棋  超長編作品のプロ

    コンピュータ向け超難解詰将棋作品集 - 詰将棋メモ
  • 高速な詰将棋ソルバー『KomoringHeights』v0.4.0を公開した

    この表より、探索速度が大幅に向上していることがわかる。v0.2.1と比較して、v0.4.0での解答速度は1.3倍~8.9倍になっている。 このように、v0.4.0では探索性能が大幅に改善されている。以下ではその中から主要な3項目について説明する。 df-pn+ #探索速度の根的な改善のために、df-pn+アルゴリズム1を導入した。df-pn+アルゴリズムは、初めて訪れた局面の(pn, dn)を一様に(1, 1)で初期化するのではなく、局面の詰みやすさに応じて値を増減させるアルゴリズムである。展開前の局面に対して値に差をつけることにより、より詰みに近い局面を優先して子局面の展開を行うことができる。素朴な発想のヒューリスティックではあるが、局面の詰みやすさをうまく評価できれば探索性能が大きく向上することが知られている。KomoringHeightsのdf-pn+評価関数の設計は、GPS将棋2

    高速な詰将棋ソルバー『KomoringHeights』v0.4.0を公開した
  • Qugiyの飛び利きのコード、完全解説 | やねうら王 公式サイト

    WCSC31(第31回 世界コンピュータ将棋選手権)でQugiyは、飛び利き(飛車や角、香のように遠方まで利く駒の利きのこと)に関して、新しいテクニックを披露しました。そのQugiyのアルゴリズムをやねうら王に取り込む予定だったのですが、作業は難航し、なかなか取り込めませんでした。 関連記事) 【速報】Qugiyのコードが速攻でやねうら王に取り込まれることになる https://yaneuraou.yaneu.com/2021/05/05/qugiys-code-will-be-quickly-merged-into-the-yaneuraou/ 取り込めなかった理由を書いていきます…が、それぞれの用語を簡単に解説しつつ、順番に話を進めていきます。 Bitboardとは やねうら王では、Bitboardを用いています。これは、駒のある升に対応するbitが1であるようなbitmap(画像)だ

  • Rustでつくる詰将棋Solver - すぎゃーんメモ

    ついカッとなって先週からRustで詰将棋ソルバを書き始めてしまい、ようやくdf-pnで何らかの解答を出せるようになったところ。ここからもうちょっと調整していくぞ、、 pic.twitter.com/XM9iPJqocv— すぎゃーん💯 (@sugyan) November 2, 2021 というわけで突然Rustで詰将棋ソルバを作りたくなり、作った。 github.com 現時点ではまだ完成度は低くて6割ほどかな…。 とはいえそこらの素直な詰将棋問題なら普通に解けると思う。 冒頭の画像は看寿賞作品の3手詰「新たなる殺意」を2秒弱で解いたもの。 先行事例 将棋プログラムの多くはC++で書かれていて 最近はRustも増えてきているのかな? しかし「詰将棋を解く」ことに特化しているものはあまり多くはなさそうだった。 なかでもRustで書かれているものはna2hiroさんによるものくらいしか無さ

    Rustでつくる詰将棋Solver - すぎゃーんメモ
  • 詰将棋に対するdf-pnアルゴリズムの解説 | コウモリのちょーおんぱ

    概要 #詰め将棋において、各局面の平均着手可能数は5.8手程度と言われている1。単純にこれを全探索することを考えると、\(n\) 手詰を解くためには \(5.8^n\) 局面を調べることになる。例えば、現時点で最長の詰将棋であるミクロコスモス(1525手詰)を解くためにはざっくり \(10^{1164}\) 局面を調べることになってしまう。このように、愚直な全探索では長手数の詰将棋を現実的な時間内で解くことはできないことが分かる。 しかし、ある局面が詰むことを示すだけならここまで膨大な探索は必要ない。例えば以下の局面を考える。 この局面の合法手は63金打、53金打など全部で9通りあるが、この局面が詰みであることを示すためには次の手順だけ探索できていればよい。 この探索結果より、玉方がどのように逃げても3手で詰むことが示せている。このような、ある局面が詰み(または不詰)だと証明するための局面

    詰将棋に対するdf-pnアルゴリズムの解説 | コウモリのちょーおんぱ
  • 先日の電竜戦、長時間マッチで現れたやねうら王のバグについて | やねうら王 公式サイト

    二日前に電竜戦 dlshogiと水匠の長時間マッチが開催された。 最高峰将棋AIによる長時間対局、プロ棋士3名が解説 : https://yaneuraou.yaneu.com/2021/08/03/long-time-game-by-the-best-shogi-ai/ イベント的には大成功で、多くのニュースメディアでも取り上げていただいたようである。 水匠のバグについて さて、その1局目で水匠がバグと思わしき読み筋が現れた。成れないところに飛車を成るというものだ。水匠の読みの錯覚であり、それによって大きく形勢を損ねて敗北を喫した。 水匠 vs dlshogi、先手番をともに制す(コンピュータ将棋協会blog) : http://blog.computer-shogi.org/denryu-sen_channel_opening-matches_and_conference/ 水匠の探索

    sugyan
    sugyan 2021/10/21
  • 最強CPU将棋ソフト『水匠』VS最強GPU将棋ソフト『dlshogi』長時間マッチ観戦記 第二譜『dlshogi』山岡忠夫の信念

    取材・文/白鳥士郎 「バグが原因で勝ったと思われるのは、嫌だな」 第1局に勝利した瞬間、山岡忠夫の心に真っ先に浮かんだのは、そんな思いだった。 『やねうら王』に存在したバグ。 山岡はその存在に全く気付いてはいなかった。そもそも山岡は将棋ソフトを開発する際に、盤面や読み筋はおろか、評価値すら見ることがない。だからバグを知らないのも当然といえた。 では、山岡は何を見て開発しているのか? 「基的に、見るのは勝率と正解率です」 正解率とは、長時間の対局で『dlshogi』が指した手と同じ手を、ニューラルネットで予測して時間を使わず指すことができるかどうか、その割合を示す。 この精度が高ければ高いほど、dlshogiが強くなっているということを意味する。 だから山岡はdlshogiがどんな将棋を指すのかをほぼ知らない。将棋を指さず、将棋番組も見ないため、そもそも将棋の対局を見る機会もあまりない。

    最強CPU将棋ソフト『水匠』VS最強GPU将棋ソフト『dlshogi』長時間マッチ観戦記 第二譜『dlshogi』山岡忠夫の信念