重力場理論を使用した将棋の計算アルゴリズム（P vs NP 理論を応用した将棋の計算アルゴリズム）

Ver 4.0

2019.9.15
Amamiya Kazuya【利用規約】
この理論を利用する際には考案者である雨宮一也の承諾を取って下さい
承諾条件は以下の通りです（営利、非営利、法人、個人問わず）①利用開発を行う場合、雨宮一也をスタッフに迎え入れる事②利益が発生する場合は適切な額を雨宮一也に支払う事（発生しない場合は０円で構わない）③公的秩序に反する目的には利用しない事

私はこの理論が実際にどのような動きを示すのか確認したいです
ご興味のある方は開発に挑戦し、私を仲間に加えてください
自分では 90％以上の完成度と思っていますがもし不都合が生じた場合は知恵の限りを尽くし協力したいと思います
私が生きている間にその日が来る事を願います

雨宮一也（Amamiya Kazuya）
メール
ichinarisoft@gmail.com
自身サイト「いちなりＳＯＦＴ」
http://ichinarisoft.com/

理論の最新版は「いちなりＳＯＦＴ」で確認して下さい◆事前知識盤上の基本設定は相対性理論（重力場理論）を使用する

この方程式を使った場合の特徴は・近いほど”より”強くなる・相互に影響を与え合う
・ 0 が発生しない（どうしても 0 が発生する場合は 81 マスの外側に１マス追加して１１＊１１マスにすればよい）最善の選択アルゴリズムの概要■24 条件変化率
1、A 重力自軍王の値
2、B 重力自軍王の値
3、C 重力自軍王の値
4、A 重力敵軍王の値
5、B 重力敵軍王の値6、C 重力敵軍王の値
7、A 重力自軍獲得マス目数8、B 重力自軍獲得マス目数
9、C 重力自軍獲得マス目数
10、A 重力敵軍獲得マス目数
11、B 重力敵軍獲得マス目数
12、C 重力敵軍獲得マス目数
13、敵軍の A 重力追い込み値
14、敵軍の B 重力追い込み値
15、敵軍の C 重力追い込み値
16、自軍の A 重力追い込み値
17、自軍の B 重力追い込み値
18、自軍の C 重力追い込み値
19、自軍駒合計勢力値
20、敵軍駒合計勢力値
21、自軍入玉値
22、敵軍入玉値
23、自軍点数駒合計値
24、敵軍点数駒合計値

自軍が一手打つ前に 24 設定の値を抽出する。
その後自軍の全通りと、それに対する敵軍の全通りを計算し、再び 24 設定の値を抽出する。
つまり自軍の打ち手＊敵軍の打ち手分の計算が必要になる。
前者の値に対して後者の値を全て上昇値「％」で抽出し、24 の上昇値の合計値が最も高い値が最善の一手となる（敵軍はマイナス扱い）
敵軍は常に最善の手を打つと仮定するので安全確実な高い値を優先して選択する。
以降これの繰り返し。

以下 24 設定の説明。

【その①】81 マス盤上設定■盤上直接設定
全ての駒には重力が発生する
その重力は３パターンある◇A 重力の発生位置◇

中央の銀が発生させる A 重力はこのようになる。
移動できる場所に A 重力が発生する。

◇B 重力の発生位置◇

銀以外の自軍のコマが一手動いた場合の移動可能場所に B 重力が発生する。
上記の場合、飛車の下の歩は移動できない為、歩の場所に B 重力は発生しない。
その横の歩と金は移動できるため B 重力が発生する。
元々移動できる場所にも B 重力を発生させる。
銀自身は移動の対象として扱わない。敵軍のコマも移動の対象として扱わない。

◇C 重力の発生位置◇

銀が潜在的に持つ移動可能場所に C 重力が発生する。
◇飛車の場合◇左：A 重力C 重力

右：B 重力◇王が絡む場合◇

A 重力王が取られてしまうので銀は右上と左下に移動できない。

B 重力
王を移動させることによって右上と左下に移動が可能となる。

C 重力は通常通り発生する。

左：A 重力右：B 重力。自軍王の右上の歩は移動できない為、馬までの B 重力は発生しない。

持ち駒の歩を使えば B 重力が発生する。
この場合飛車は動けないので A 重力は発生しない。C 重力は欠けることなく発生する。

◇敵コマの場合◇
A 重力と C 重力は自軍、敵軍問わず同じように発生する。

B 重力の場合の 1 つ動かすコマとはこちら側のコマでありこの状況の角の味方のコマではない。
よってこのように B 重力が発生する。

◇各重力の統合◇

自軍のコマと敵軍のコマをそれぞれ A 重力同士、B 重力同士、C 重力同士で盤上に発生させる。
各重力の値は全て「１」。敵軍は「－１」。重なる所は加算する。
これによって統合された３つの盤上から自軍の王の位置と敵軍の王の位置で重力の値を抽出する。
1、A 重力自軍王の値。
2、B 重力自軍王の値。
3、C 重力自軍王の値。
4、A 重力敵軍王の値。
5、B 重力敵軍王の値。
6、C 重力敵軍王の値。
◆獲得マス目数設定◆
続いて上記３つの盤上でマス目ごとに「＋」、「－」、「０」を特定し、その獲得数を抽出する。

7、A 重力自軍獲得マス目数8、B 重力自軍獲得マス目数
9、C 重力自軍獲得マス目数
10、A 重力敵軍獲得マス目数
11、B 重力敵軍獲得マス目数
12、C 重力敵軍獲得マス目数
獲得マス目数の上昇率は 1 マス 1/81％として計算する。

【その②】駒の危険度（1＊22 マス盤）
■追い込み設定
1＊22 の盤を３枚用意する盤上の全ての駒にこれを設定する。

◇重力の発生位置◇

左：敵軍飛車の A 重力移動可能数「７」+「１」（移動しない）
右：敵軍飛車の B 重力移動可能数「４」+「１」（移動しない）

左：敵軍飛車の C 重力移動可能数「８」+「１」（移動しない）
右：それぞれの移動可能数と移動しない場合を合わせて指定位置に重力を発生させる。
この盤面の飛車の追い込み状態設定。
・飛車が持つ A,B,C の重力の発生位置に対して同じ重力で潰せる位置を削除し、残った数が移動可能数となる。
・移動しない場合も考慮する為、+「１」を加える。
・それを 1*22 マス盤に緑重力として発生させる。観測位置は★の位置。

飛車に対して直接重力が発生するといきなり 0 の位置に設定される。

◇入力する重力の値◇
緑重力の値はそれぞれのコマによって異なる。
歩の 81 マス合計値：72
香の 81 マス合計値：324
馬の 81 マス合計値：112
銀の 81 マス合計値：328
金の 81 マス合計値：416
角の 81 マス合計値：816
飛車の 81 マス合計値：1296
王の 81 マス合計値：544
成り金の 81 マス合計値：416
成り角の 81 マス合計値：1104
成り飛車の 81 マス合計値：1552（◆各コマ座標別重力値表参照）

A、B、C の★の位置で観測し、3 つの値を抽出する。
それがその駒の追い込み値 A,B,C である。
更に盤上にある敵軍のコマ全ての「追い込み値 A,B,C」を抽出する。
そして A は A 同士、B は B 同士、C は C 同士で加算する。
同様に自軍のコマに対しても行う。

13、敵軍の A 重力追い込み値
14、敵軍の B 重力追い込み値
15、敵軍の C 重力追い込み値
16、自軍の A 重力追い込み値
17、自軍の B 重力追い込み値
18、自軍の C 重力追い込み値

【その③】駒合計勢力と成りへの前進（1＊9 マス盤）
■初期駒設定
1＊9 の盤を 78 枚用意する。
将棋の駒は全部で 40 個。敵の王を抜くと 39 個。
つまり最高で自軍のコマは 39 個になるので、それ全てに対応できる設定が必要になる。
自軍用 39、敵軍用 39 を設定する。
盤上の全ての駒と持ち駒に設定する◇重力の発生位置、及び観測位置◇★の位置に各コマの値を入力する。観測位置も★。
◇入力する重力の値◇
歩の 81 マス合計値：72
香の 81 マス合計値：324
馬の 81 マス合計値：112
銀の 81 マス合計値：328
金の 81 マス合計値：416
角の 81 マス合計値：816
飛車の 81 マス合計値：1296
王の 81 マス合計値：544（◆各コマ座標別重力値表参照）
敵にとられたコマや敵が管理しているコマは 0 を入力する。
成りの成立は影響しない。

■成り設定
1＊11 の盤を 68 枚用意する。
将棋の駒は全部で 40 個。王と金を抜くと 34 個。
つまり最高で自軍の成り属性コマは 34 個になるので、それ全てに対応できる設定が必要になる。
自軍用 34、敵軍用 34 を設定する。
成り属性のある全ての駒に設定する

盤上にある駒の場合◇重力の発生位置、及び観測位置◇
緑はこの図「九」の歩の縦座標上に対する重力発生場所
四から九はそのままの位置に配置
持ち駒を敵陣に貼った直後や敵陣に侵入していてまだ成りをしていない駒は赤丸の位置
成りが成立している場合は常に★の位置に入力する。
観測位置は★。
◇入力する重力の値◇「歩」：344「香」：92「馬」：304「銀」：88「角」：288「飛車」：256
成り後の 81 マス合計値－成り前 81 マス合計値（巻末付録参照）

成り属性のある持ち駒の場合▲の位置に重力を発生させる。
敵にとられたコマや敵が管理しているコマの場合×の位置に重力を発生させる。

金と王の場合成り属性が無い為、設定は行わない。

そして自軍の駒全てで■初期駒設定と■成り設定を行い値を抽出する。
その値を加算したものが「駒合計勢力値」となる。
19、自軍駒合計勢力値
20、敵軍駒合計勢力値

【その④】入玉対策（1＊9 マス盤）
■王の入玉設定◇重力の発生位置◇
1＊9 の盤を２枚用意する
緑はこの図「九」の王の縦座標上に対する重力発生場所
一から三は全て★の場所に配置
四から九はそのままの位置に配置◇入力する重力の値◇「１」を入力する◇重力の観測位置◇★の位置
21、自軍入玉値
22、敵軍入玉値

■点数駒前進設定
将棋の駒は全部で 40 個。王の 2 枚を抜くと 38 個。
つまり最高で自軍の王以外のコマは 38 個になるので、それ全てに対応できる設定が必要になる。
自軍用 38、敵軍用 38 を設定する。

◇重力の発生位置◇
敵陣に入っている条件が不要な場合は（図左）全て★の位置に重力が発生する。
持ちコマも同様に★の位置に当てはめる。
敵にとられたコマや敵が管理しているコマは×の位置に当てはめる。
敵陣に入っている条件が必要な場合は（図右）王の入玉と同じように重力を緑に配置する
持ちコマは▲の位置に当てはめる。
敵にとられたコマや敵が管理しているコマは×の位置に当てはめる。
◇入力する重力の値◇
飛車と角は５点なので重力値を「５」にする
それ以外は「１」を入力する（王駒は 0 点なので不要）◇重力の観測位置◇★の位置
そして自軍の駒全てで■点数駒前進設定を行い値を抽出する。
その値を加算したものが「点数駒合計値」となる。
23、自軍点数駒合計値
24、敵軍点数駒合計値

【その⑤】補足◆入玉宣言判断
自分の手番（一手打つ前）の状況で入玉条件状態を計算する①入玉条件が成立し勝利の場合入玉を宣言し勝利する②入玉条件が成立し引き分けの場合、且つ入玉以外の条件の合計が有利の場合（敵と比べて）「24 条件変化率」を基準に最適の一手を計算し打つ③入玉条件が成立し引き分けの場合、且つ入玉以外の条件の合計が不利の場合（敵と比べて）事前の判断基準に照らし限度を超えたマイナスであれば入玉を宣言し、引き分け終了にする④入玉条件が成立し引き分けの場合、且つ入玉以外の条件全て同値の場合（敵と比べて）理論上は発生しないと思われるが、もしそうであれば②と同じ対応でよいと思われる⑤入玉条件が成立し敗北の場合
自ら負けを認める必要はないので②と同じ対応をする

このアルゴリズムは常に入玉対策を考慮しているが序盤は入玉対策よりもそれ以外の方が変化率が高いので無謀な入玉前進はしないと予想される◆計算速度
計算時間の省略が必要であれば高い評価のみ先読みする又はπの入力値を小さくする
最終的にはπの値が大きいほど精度があがり誤差が減る（ミスが減る）
そしてある程度の桁数に達すると誤差が 1 マスの距離以下になり解が安定すると思われる
しかし、真実の解であるかどうかは不明。確かめる術がない
この理論はπを使用しているため最強、最軽量のアルゴリズムである
同性能のＰＣで対戦する場合、このアルゴリズムに勝てる「将棋ソフト」は存在しない（出来ない）
なお、定石、読み、棋譜などの人為的情報は一切入力する必要はない

◆「成り」と「成らず」について打てる選択肢の一つとして成りの場合としない場合の両方を計算すればよい◆千日手について双方が最善の一手を打ち続けると永遠ににらみ合いが続き「４回同じ盤面」が発生する
これを回避する方法はない
無理にすればそれはミスとなり負けにつながる
将棋のルール上の特性なので対策を入れる必要はないと思われる

【その⑥】付録◆各コマ座標別重力値表

この様な事例に基ずき 81 マス全てを記したのが下の表になる

各コマにおいてこの様な表が必要となる（巻末付録参照）

歩の 81 マス合計値：72
香の 81 マス合計値：324

馬の 81 マス合計値：112
銀の 81 マス合計値：328

金の 81 マス合計値：416
角の 81 マス合計値：816

飛車の 81 マス合計値：1296
王の 81 マス合計値：544

成り金の 81 マス合計値：416
成り角の 81 マス合計値：1104

成り飛車の 81 マス合計値：1552

■成り成立時の上昇値「歩」成り時上昇値：344「香」成り時上昇値：92「馬」成り時上昇値：304「銀」成り時上昇値：88「角」成り時上昇値：288「飛車」成り時上昇値：256