数式処理における近似最大公約子 (Approximate GCD) 計算の
最近の動向
照井 章筑波大学 数理物質系
日本数式処理学会 (JSSAC) 東北地区合同分科会2013年1月26日
数式処理は,係数に関して厳密演算を前提にして発展してきた
• 多倍長数:(例)モンスター群の位数
• 代数的数:定義多項式を扱う
• 超越数:記号として扱う↵ =
p2() ↵2 � 2 = 0 and ↵ > 0
⇡, e
246 · 320 · 59 · 76 · 112 · 133 · 17 · 19 · 23 · 29 · 31 · 41 · 47 · 59 · 71=808017424794512875886459904961710757005754368000000000
一方,科学技術計算の大部分は浮動小数点数を用いた数値計算
仮数部と指数部を組み合わせ,限られた桁数で,絶対値が大きな数から小さな数までを表現する (Source: Wikipedia)
仮数部 指数部
一方,科学技術計算の大部分は浮動小数点数を用いた数値計算
Conrad Zuse が 1941 年に製作したリレー式計算機 Z3 (写真は複製)は浮動小数演算を備えていたという (Source: Wikipedia)
浮動小数演算の誤差により,従来の数式処理の手法はしばしば破綻する
OS X (Apple, Inc.) 純正の「計算機」アプリケーションの例(左:電卓,右:計算履歴)
指数部,仮数部の有限精度による丸め誤差や桁落ち誤差が発生する
浮動小数演算の誤差により,従来の数式処理の手法はしばしば破綻する
数式処理システム Maple 16 の例 (1)一見,浮動小数係数多項式の因数分解が行われているように見えるが...
Mapleにおける浮動小数係数多項式の因数分解は,実際には数値計算で零点の近似値を求めている
数式処理システム Maple 16 の例 (2)浮動小数係数で近似した際の誤差により,各因子の重複度が正しく求まらない
浮動小数係数の多項式等に対して数式処理のアプローチで意味のある答えを求めたい
(1) 問題の背後に存在する系(2) 実際に与えられた系
(3) 現状ではこのような答えしか求まらないが...
を求めたい!g2 + �F = (x� ↵1)3(x� ↵2)3
近似Gröbner基底
浮動小数係数の多項式等に対して数式処理のアプローチで意味のある答えを求めたい
数式・数値融合計算Symbolic-Numeric Computation
(近似代数計算 / Approximate Algebraic Computation)
近似 GCD(最大公約子)
近似因数分解
最近特異多項式
多項式補間パラメータつき最適化
今回は近似GCDを取り上げます
これまでの研究の流れ
筆者とその周辺の手法(最適化)の紹介
今後の動向
近似GCD(最大公約子)
数式・数値融合計算の中でも最も古くから研究されている
テーマの一つ
近似GCD(最大公約子)
GCD計算自体が数式処理の
最も基本的かつ重要な計算の一つ
応用例 (1)有理式演算の際の約分
1(x + 1)(x� 2)
+1
x(x + 1)(x� 2)
=1
x
2 � x� 2+
1x
3 � x
2 � 2x
=x
3 � 3x� 2x
5 � 2 x
4 � 3 x
3 + 4 x
2 + 4 x
=1
x
2 � 2x
分母と分子のGCDで簡約
ほとんど自明な計算だが,多項式GCDの算法の研究のきっかけの一つ
応用例 (2)無平方分解による重根の除去や部分分数分解
x
9 + 15x
8 + 89x
7 + 286x
6 + 651x
5
+ 1247x
4 + 1611x
3 + 1380x
2 + 1296x� 576
=(x2 + 3x� 1)(x2 + 3)2(x + 4)3
与えられた代数方程式を数値解法で解く際に,あらかじめ重根を除去して計算を安定化させる
その他いろいろ拡張Euclidの互除法は
多項式の因数分解をはじめとして数式処理のいたるところで
重用されている
近似GCDの定義
F (x) + �F = H(x) · F (x)G(x) + �G = H(x) · G(x)
deg(�F ) deg F, deg(�G) deg G
摂動項 近似GCD 余因子(互いに素)与えられた多項式
次数条件 k�Fk + k�Gk < "
H(x)をFとGの許容度 の近似GCDという"
近似GCD(最大公約子)計算は与えられた多項式に「摂動項」を加えて公約子をもつようにするのが基本
近似GCDの計算のしかたはおもに2種類ある
F (x) + �F = H(x) · F (x)G(x) + �G = H(x) · G(x)
deg(�F ) deg F, deg(�G) deg G
摂動項 近似GCD 余因子(互いに素)与えられた多項式
次数条件
(1) 摂動量の上界を与えて可能な限り高次のGCDを求める
F (x) + �F = H(x) · F (x)G(x) + �G = H(x) · G(x)
deg(�F ) deg F, deg(�G) deg G
k�Fk + k�Gk < " のもとで
d = deg(H)を最大化
摂動項 近似GCD 余因子(互いに素)与えられた多項式
(2) GCDの次数を与えて可能な限り摂動量を小さくする
F (x) + �F = H(x) · F (x)G(x) + �G = H(x) · G(x)
deg(�F ) deg F, deg(�G) deg G
d = deg(H)のもとで与えられた
を最小化" = k�Fk + k�Gk
摂動項 近似GCD 余因子(互いに素)与えられた多項式
近似GCD算法のこれまでのアプローチ
• 多項式剰余列 (PRS)
• Sylvester 行列(部分終結式行列)の特異値分解 (SVD)
• Sylvester / Bezout 行列(部分終結式行列)の LU 分解,QR 分解
• 最適化法... など
歴史的に最も早く現われたのは多項式剰余列に基づく算法
• Sasaki and Noda (1989), Hribernig and Stetter (1996) など
• 多項式剰余列のノルムの減少の度合いと近接根の近接度の関連性に基づいて近似GCDの存在を判定
• 計算量は で効率的
• 精度面で実際上は不安定な場合がある(個人的な経験値)
O(n2)
Sylvester 行列(部分終結式行列)の利用
F (x) = fmx
m + fm�1xm�1 + · · · + f0,
G(x) = gnx
n + gn�1xn�1 + · · · + g0,
0 < n m
FとGのSylvester 行列: N(F, G)(行列式はFとGの終結式を表す)
N(F,G) =
0
BBBBBB@
fm gn...
. . ....
. . .f0 fm g0 gn
. . ....
. . ....
f0 g0
1
CCCCCCA
| {z }n
| {z }m
dim(Null(N(F,G))) = deg(gcd(F,G))
N(F, G) の特異値分解 (SVD) により,FとGの(近似)GCDの次数や,FとGが近似GCDを持つような摂動の大きさを見積もることが可能になった
N(F,G) =
0
BBBBBB@
fm gn...
. . ....
. . .f0 fm g0 gn
. . ....
. . ....
f0 g0
1
CCCCCCA
| {z }n
| {z }m
(Corless, Gianni, Trager and Watt (1995))
dim(Null(N(F,G))) = deg(gcd(F,G))
FとGの j 次の部分終結式行列:
もよく用いられるNj(F,G)
Nj(F,G) =
0
BBBBBB@
fm gn...
. . ....
. . .f0 fm g0 gn
. . ....
. . ....
f0 g0
1
CCCCCCA
| {z }n�j
| {z }m�j
dim(Null(Nj(F,G))) > 0() deg(gcd(F,G)) > j
Sylvester / Bezout 行列等,終結式に関わる行列の分解を用いたアプローチは,現在に至るまで活発に行われている(下記はそれらの一部)
• 特異値分解 (SVD): ε-GCD (Emiris, Galligo and Lombardi (1997))
• QR 分解: Zarowski, Ma and Fairman (2000); QRGCD (Corless, Watt and Zhi (2004))
• LU 分解 (高速算法): Bini and Boito (2007); Sanuki (2009)
最適化法による近似GCD計算のアプローチ
• 近似GCDがみたすべき制約条件と,摂動項の摂動量に関する目的関数を設定して最適値を探索
• 他の方法に比較して,摂動量を小さくすることが可能な場合がある
• 他の方法に比較して,計算コストが増加する場合がある
• 最適値への収束の問題もある
最適化法による近似GCD計算のアプローチ
• 初期の提案 (Karmarker and Lakshman (1996); Chin, Corless, and Corliss (1998))
• UVGCD (Zeng (2003, 2011))
• STLN-based method (Kaltofen, Yang and Zhi (2006))
• GPGCD (Terui (2009))
近似GCD算法 GPGCDGradient Projection
• 制約つき最適化に基づく反復算法• 勾配射影法(修正Newton法)に基づく
近似GCD算法 GPGCDGradient Projection
• 勾配射影法:古典的で単純な方法だが高速
• Newton法などと比べて比較的安定
• 摂動を他の算法と同程度に抑えつつ、大幅な効率化を達成
問題:与えられた F(x), G(x), d に対しF と G の d 次の近似 GCD: H を求める
F (x) = F (x) + �F (x) = H(x) · F (x)
G(x) = G(x) + �G(x) = H(x) · G(x)
deg(F ) = m, deg(G) = n (m � n)deg(H) = d (d < n)gcd(F , G) = 1
問題解決のステップ
1近似GCDの問題を制約付最適化問題に帰着させる
2制約付最適化問題を解く
目的関数の導出与えられた多項式(既知)
F (x) = fmxm + · · · + f0x0
G(x) = gnxn + · · · + g0x0
求める多項式(未知)
F (x) = fmxm + · · · + f0x0
G(x) = gnxn + · · · + g0x0
f(fm, . . . , f0, gn, . . . , g0) = ⇥F � F⇥22 + ⇥G�G⇥2
2
=(fm � fm)2 + (fm�1 � fm�1)2 + · · · + (f0 � f0)2
+ (gn � gn)2 + (gn�1 � gn�1)2 + · · · + (g0 � g0)2
x = (fm, . . . , f0, gn, . . . , g0)
f(x)
目的関数の導出
(目的関数)
F (x) (m次), G(x) (n次) がd次のGCDをもつ
A(x) (n - d 次), B(x) (m - d 次) が存在して
AF + BG = 0
制約条件の導出
制約条件の導出
A(x) = an�dxn�d + · · · + a0x
0
B(x) = bm�dxm�d + · · · + b0x
0
を行列・ベクトル積で表すAF + BG = 0
.
�
⇧⇧⇧⇧⇧⇧⇤
fm gn...
. . ....
. . .f0 fm g0 gn
. . ....
. . ....
f0 g0
⇥
⌃⌃⌃⌃⌃⌃⌅
�
⇧⇧⇧⇧⇧⇧⇧⇧⇤
an�d...
a0
bm�d...b0
⇥
⌃⌃⌃⌃⌃⌃⌃⌃⌅
=
�
⇧⇤0...0
⇥
⌃⌅ .
x = (fm, . . . , f0, gn, . . . , g0,
an�d, . . . , a0, bm�d, . . . , b0)
g0 = a2n�d + · · · + a2
0 + b2m�d + · · · + b2
0 � 1 = 0,g1 = fman�d + gnbm�d = 0,
...gm+n�d+1 = f0a0 + g0b0 = 0,
g(x) = 0
制約条件の導出各行毎の連立方程式にまとめる
(制約条件)
与える最適化問題
のもとで を最小にするような を求めよ!
g(x) = 0 f(x)x
次数 d の近似 GCD をもつ 摂動項のノルム
FとGに与える摂動
問題解決のステップ
1近似GCDの問題を制約付最適化問題に帰着させる
2制約付最適化問題を解く
「勾配射影法」に基づく解法
x
xk
g(x) = 0
上で に最も近い点を求める
xg(x) = 0
与えられた多項式の係数に対応する点
ステップ (1) : 射影
を における接平面に射影し, とおく
x� xk
yk
xk
における接平面上で線形最小二乗問題を解くxk
x
xk
yk g(x) = 0
x
xk
yk
xk+1
g(x) = 0
を に引き戻し, とする
yk
xk+1
g(x) = 0
ステップ (2) : 引き戻し
が における法線に十分近づいたら計算終了
このときの を用いて近似GCDを求める
xk
x� xk xk
x
xk
g(x) = 0
修正 Newton 法(田邉)
• Newton法で用いるLagrange関数のHesse行列を修正
• 修正のしかたでさまざまな解法を導出• ここでは勾配射影法を一般化した解法を用いる
• オリジナルの勾配射影法より効率的
実験• 比較対象:
• STLN-based method (Kaltofen et al. (2006))
• UVGCD (Zeng (2003, 2011)
• 実装: 数式処理システム Maple 15(STLN-based method と UVGCD の実装はそれぞれの著者による)
• 詳しい結果は Theoretical Computer Science の SNC 2011特集号で!
実験例
• 問題:10次から100次まで、10次毎の2つの多項式の近似GCDを計算(各100例)
• 実係数多項式の場合• 複素係数多項式の場合
実係数多項式の場合
計算時間の比較
0
5.0
10.0
15.0
20.0
25.0
30.0
10 20 30 40 50 60 70 80 90 100
Com
putin
g tim
e (s
ec.)
Degree
STLN (Kaltofen et al.) UVGCD (Zeng)GPGCD (Terui)
GPGCD の計算時間
0
0.1
0.2
0.4
0.5
0.6
0.7
10 20 30 40 50 60 70 80 90 100
Com
putin
g tim
e (s
ec.)
Degree
STLN (Kaltofen et al.) UVGCD (Zeng)GPGCD (Terui)
摂動量の平均値 (2-norm)
0
0.05
0.10
0.15
0.20
10 20 30 40 50 60 70 80 90 100
Pertu
rbat
ion
Degree
STLN (Kaltofen et al.) UVGCD (Zeng)GPGCD (Terui)
テスト結果の概要 (1)入力多項式がすでに厳密
もしくは近似 GCD をもつ場合
UVGCD がもっとも高精度に近似GCD を計算する
テスト結果の概要 (2)
“ノイズ” がより大きな場合
STLN-based method と GPGCD が同程度でより小さな摂動量で近似 GCD を計算する
テスト結果の概要 (3)いくつかの例題では GPGCD が
極めて高速
今回紹介の実験例では最大約 30 倍(対 STLN-based method)
最大約 10 倍(対 UVGCD)
近似 GCD 計算の現在・今後の動向
新たな算法の開発• 行列の高速算法の活用• 種々の最適化法の利用• 2乗和多項式緩和 (Sums-Of-Squares
relaxation) (Li, Nie and Zhi (2008))
• 半正定値計画緩和 (SDP relaxation) など
新たな算法の開発
私も半正定値計画 (SDP) 緩和に基づく近似 GCD 計算を試行中
(SDP ライブラリ SDPA を使っています!)
精度保証• SDP によって得られた近似解を有理数に変換し,これの2乗和多項式への分解を厳密に求めることで,近似解が大域的最適値に十分近いことを保証する (Kaltofen, Li, Yang and Zhi (2008))
応用
• ハイブリッド積分 (Noda and Miyahiro (1990))
• ハイブリッド有理関数近似(Kai and Noda (1993, 2000))
ハイブリッド積分(Noda and Miyahiro (1990))
• 有理関数の積分の際に、部分分数分解に近似 GCD を用いる(それ以外のステップでの数式・数値融合計算の手法も提案されている)
ハイブリッド有理関数近似(Kai and Noda (1993, 2000))
有理関数補間の際に現われる不要な分母/分子の共通因子を除去する(Noda and Kai (1998) より引用)
Thank you for your attention!
筆者の仕事場からの筑波山とキャンパスの眺望(2013年1月25日撮影)