JavaScript で CGT (Using JavaScript for CGT)
@日本数式処理学会第28回大会
https://noblegarden-math.jp/math/
講演の応募から3週間しかなく, その間に中間試験の作問・採点作業が研究及びそのまとめに
要する時間を圧迫した上, 印刷物の資料を50部以上準備せよとの文言を見過ごしたため.
印刷物の準備ができませんでした. 申し訳ございませんが,
上記 url にプレゼン資料及び実装のリンクを貼っておりますので宜しくお願い致します.
動機
Schreier-Sims アルゴリズムを実装したい
M24 などの元(244823040個ある)を具体的に記述したい
permutation puzzle の solver を作りたい
coset enumeration を実装したい
お題目
ca.js の紹介
Schreier-Sims の実装紹介
Minkwitz の方法の実装紹介
Three.js にはまる
よく知られた置換パズル
4x4x4 の rubik's cube と 24 puzzle の solver
のブラウザ上の実装を紹介
coset enumeration の実装紹介
JavaScript の多倍長整数ライブラリ big-integer.js のみを利用した
自作数式処理ライブラリ
web ブラウザの計算能力のみで計算したい
2016年頃から作り始める
元々自身の知的探究と数式処理の教科書の勉強のためにJSを利用したことが動機
SymPy もライブラリを利用せず Python のみで書かれており, 目標が共通
具体的に何をしてきたのか
よく知られているように, coset enumeration では, 群の位数だけの行数が必要となる
$\langle a,b\ |\ a^3,\ b^5,\ (ab)^2\rangle$
Rust と webassembly の習得
Minkwitz の論文では, 語の長さが主題であるにも関わらず, 群の表示や項書き換えについて触れていない
置換群 $G = \langle g_1,\cdots,g_m\rangle \leq \mathfrak{S}_{\Omega}$ から $G\simeq \langle x_1,\cdots,x_m | r_1,\cdots ,r_k\rangle$ となる表示を得る方法について掘り下げる
Knuth-Bendix の項書き換えアルゴリズムの実装