Magma へ貢献できること 原田 昌晃 山形大学理学部 「Magma で開く数学の世界」高知大学 (2012年7月22日) 1 / 13 Magma ユーザーとして (自己紹介を兼ねて) Magma との出会い: 第39回 代数学シンポジウム (愛媛大、1994年) 中村 憲、最近の計算機代数の理論と応用 Magma を使い始めた時期: 博士課程 (岡山大) の1年か2年のとき (1994年か 1995年) Magma を使うメリット: 代数系の幅広い分野をカバーする統合ソフト (昔は扱う分野は少なかった) 最先端のアルゴリズムが実装されている場合が多い (昔はかなり遅かった) Magma に関するイベント: 原田–木田, 「Magma」, 数学セミナー(特集:数学を発 展させるコンピュータソフト), 2010年9月号 研究集会「Magma で広がる数学の世界」 (2010年10月, 九州大, 木田–原田–横山). 2 / 13 本題:ユーザーが Magma へ貢献できることは? (1) Magma の良さを周辺の方に伝える (→ユーザーの多いシステムに) (2) バグを Magma の開発グループへ報告 (→信頼あるシステムに) 「公式サイト」→「FAQ」→「How do I report a bug?」 (3) ユーザー作成の関数を Magma の開発グループへ提供 (→魅力あるシステムに) (4) データベースを Magma の開発グループへ提供 (→魅力あるシステムに) (3) と (4) について John Cannon (開発グループの代表者) と相談した内容を報告したい. 3 / 13 ユーザー作成の関数を Magma への提供 John Cannon にユーザー作成の関数の提供について尋ねた: ¶ ³ 【John Cannon からの回答】 We strongly encourage users to propose code they have written become part of the official release of Magma. We have many such contributions already and this source is important to the expansion of the system. Our users have all sorts of expertise that we ourselves lack. µ ´ Magma 開発グループは, ユーザー作成の関数の提供を歓迎 している (特に, 開発グループに専門家がいない分野) 例:Lattice(C, "A"): code C から lattice を構成する関数 「codes over Fp 」→「codes over Z/kZ」 (p: 素数, k: 整数 (k ≥ 2)) 結論:汎用性のある関数の場合は問い合わせを! 4 / 13 データベースの Magma への提供例の紹介 Harada–Munemasa, “Database of self-dual codes”: www.math.is.tohoku.ac.jp/~munemasa/selfdualcodes.htm 2007年12月より self-dual code の分類結果を データベースとして提供 扱っている内容: 以下のタイプの self-dual code について分類が終わって いる全ての長さの分類結果のデータを提供 (最新の分類結果を反映させてデータベースを更新中) Self-dual codes over Fp (p = 2, 3, 5, 7) Hermitian self-dual codes over F4 Self-dual codes over Z/kZ (k = 4, 6, 8, 9, 10) 5 / 13 データのフォーマット:Magma Magma のユーザーであればダウンロードすればすぐに データを使うことが出来る →【これで十分?】 問題点: code の個数が多い場合, 読み込むのに非常に時間が掛 かり, メモリを消費 例えば, (長さ 40 の binary self-dual code の) あるケースは 1511827 個あり, ファイルのサイズは約 2.4GB ファイルの読み込み: Total time: 173700.989 seconds, (約48時間) Total memory usage: 21169.28MB ( ) Intel Core i7 3960X 3.30GHz (4.7 GHz にクロックアップ) メモリ: 32GB, SSD: 120GB. 6 / 13 2007年12月: 分類結果をデータベースとして提供開始 2011年4月: Magma のデータベースとして取り込めないかと John Cannon に尋ねたところ, 欲しいデータの一つだったの 是非行いたいとの回答 この時点で打診した理由: 「長さ 40 の binary doubly even self-dual code」の分類 が完成した (→「後半」でこの辺りを簡単に説明) 一つ前のスライドでの問題点について: John Cannon から Magma がデータベースとして取り 込めばこの問題点は解決される (作業のメリットあり) 現時点: まだデータベースにはなっていない (作業の順番待ち?) 結論:データベースを構築されている方, 問い合わせを! 7 / 13 数学の話を:Binary doubly even self-dual code の分類について F2 = {0, 1}: 位数 2 の有限体 C: binary [n, k] code ⇐⇒ Fn2 の k 次元部分空間 def n を C の長さとよぶ 以下 C を長さ n の binary code とする ¶ 【code (符号) とは】 ³ 起源は情報科学 (C. Shannon (1948)) 通信路における符号化 (encoding) の数理モデルとして定義さ れた組合せ構造 (と思える) 他の分野との関連:格子, 有限群, 不変式環など (例えば Leech 格子, マシュー単純群の (簡単な) 構成). µ ´ 8 / 13 x = (x1 , . . . , xn ) の weight wt(x) ⇐⇒ #{i | xi 6= 0} def C: self-dual ⇐⇒ C = C ⊥ (= {x ∈ Fn2 | x · y = 0 (∀y ∈ C)}) def C: self-dual ⇒ wt(x) ≡ 0 (mod 2) (∀x ∈ C) C: self-dual C: doubly even C: singly even ⇐⇒ wt(x) ≡ 0 (mod 4) (∀x ∈ C) def ⇐⇒ ∃x ∈ C s.t. wt(x) ≡ 2 (mod 4) def (Gleason–Pierce Theorem (1969)) C: self-dual code ⇐⇒ n ≡ 0 (mod 2) C: doubly even self-dual code ⇐⇒ n ≡ 0 (mod 8) (Gleason Theorem (1970)). doubly even self-dual code の例: 長さ 24 の Golay code 9 / 13 最近の分類の進展について C, C 0 : 同値 (C ∼ = C 0 ) ⇐⇒ ∃σ ∈ Sn s.t. C σ = C 0 def (Sn : n 次対称群, C σ = {xσ | x ∈ C}) Cn : 全ての長さ n の doubly even self-dual code の集合 Dn : Cn / ∼ = の各同値類の代表元の集合 (互いに非同値な長さ n の doubly even self-dual code の集合) doubly even self-dual code の分類結果 長さ n 8 16 24 32 40 #Dn 1 2 9 85 94343 Reference Pless (1972) Pless (1972) Pless–Sloane (1975) Conway–Pless–Sloane (1992) Betsumiya–H–Munemasa (201x) 10 / 13 分類のアルゴリズム (Mass formula) C の automorphism group Aut(C) = {σ ∈ Sn | C σ = C} Mass formula (MacWilliams–Sloane–Thompson (1972)): n −2 2 ⇒ ∏ (2i + 1) = #Cn i=0 || ∑ n! # Aut(C) C∈D n n! ( # Aut(C) = #{D ∈ Cn | C ∼ = D}) 分類のアルゴリズム: n! 非同値な doubly even self-dual code の構成を # Aut(C) の 和が #Cn に達するまで繰り返す. 11 / 13 Example (長さ 16 の分類) (「公式サイト」→「Documentation」→「Handbook」→) 「Coding Theory」→「Linear codes over finite fields」 長さ 16 の非同値な doubly even self-dual code を 2 つ 構成 > e8:=ExtendCode(QRCode(GF(2),7)); > J:=Matrix(GF(2),8,[1:i in [1..8^2]]); > I:=IdentityMatrix(GF(2),8); > C:=[DirectSum(e8,e8),LinearCode(HorizontalJoin(I,J+I))]; > [IsSelfDual(x) and IsDoublyEven(x): x in C]; [ true, true ] > IsEquivalent(C[1],C[2]); false これ以外に存在しないことを mass formula で確認 > &*[2^i+1: i in [0..(16/2)-2]] > eq &+[Factorial(16)/#AutomorphismGroup(x): x in C]; true 12 / 13 おわりに 今後も Magma が魅力あるシステムとして成長し続け るために, 今回, ユーザーが出来ることについて考えて みました. 新しい関数を作ったりデータベースを構築されている 方がおられると思います. Magma の開発グループに問 い合わせをしてみて下さい. ご清聴ありがとうございました 13 / 13
© Copyright 2024 Paperzz