61
数式処理における 近似最大公約子 (Approximate GCD) 計算の 最近の動向 照井 章 筑波大学 数理物質系 日本数式処理学会 (JSSAC) 東北地区合同分科会 2013126

数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

Embed Size (px)

DESCRIPTION

Recent Progress in Computation of Approximate Greatest Common Divisor (GCD) in Computer Algebra (in Japanese). Presented at the Tohoku Joint Meeting of SIGs, Japan Society for Symbolic and Algebraic Computation (JSSAC), January 26, 2013 at Sendai, Miyagi, Japan. 日本数式処理学会 (JSSAC) 東北地区合同分科会, 宮城県仙台市, 2013年1月26日.

Citation preview

Page 1: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

数式処理における近似最大公約子 (Approximate GCD) 計算の

最近の動向

照井 章筑波大学 数理物質系

日本数式処理学会 (JSSAC) 東北地区合同分科会2013年1月26日

Page 2: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

数式処理は,係数に関して厳密演算を前提にして発展してきた

• 多倍長数:(例)モンスター群の位数

• 代数的数:定義多項式を扱う

• 超越数:記号として扱う↵ =

p2() ↵2 � 2 = 0 and ↵ > 0

⇡, e

246 · 320 · 59 · 76 · 112 · 133 · 17 · 19 · 23 · 29 · 31 · 41 · 47 · 59 · 71=808017424794512875886459904961710757005754368000000000

Page 3: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

一方,科学技術計算の大部分は浮動小数点数を用いた数値計算

仮数部と指数部を組み合わせ,限られた桁数で,絶対値が大きな数から小さな数までを表現する (Source: Wikipedia)

仮数部 指数部

Page 4: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

一方,科学技術計算の大部分は浮動小数点数を用いた数値計算

Conrad Zuse が 1941 年に製作したリレー式計算機 Z3 (写真は複製)は浮動小数演算を備えていたという (Source: Wikipedia)

Page 5: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

浮動小数演算の誤差により,従来の数式処理の手法はしばしば破綻する

OS X (Apple, Inc.) 純正の「計算機」アプリケーションの例(左:電卓,右:計算履歴)

指数部,仮数部の有限精度による丸め誤差や桁落ち誤差が発生する

Page 6: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

浮動小数演算の誤差により,従来の数式処理の手法はしばしば破綻する

数式処理システム Maple 16 の例 (1)一見,浮動小数係数多項式の因数分解が行われているように見えるが...

Page 7: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

Mapleにおける浮動小数係数多項式の因数分解は,実際には数値計算で零点の近似値を求めている

数式処理システム Maple 16 の例 (2)浮動小数係数で近似した際の誤差により,各因子の重複度が正しく求まらない

Page 8: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

浮動小数係数の多項式等に対して数式処理のアプローチで意味のある答えを求めたい

(1) 問題の背後に存在する系(2) 実際に与えられた系

(3) 現状ではこのような答えしか求まらないが...

              を求めたい!g2 + �F = (x� ↵1)3(x� ↵2)3

Page 9: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

近似Gröbner基底

浮動小数係数の多項式等に対して数式処理のアプローチで意味のある答えを求めたい

数式・数値融合計算Symbolic-Numeric Computation

(近似代数計算 / Approximate Algebraic Computation)

近似 GCD(最大公約子)

近似因数分解

最近特異多項式

多項式補間パラメータつき最適化

Page 10: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

今回は近似GCDを取り上げます

これまでの研究の流れ

筆者とその周辺の手法(最適化)の紹介

今後の動向

Page 11: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

近似GCD(最大公約子)

数式・数値融合計算の中でも最も古くから研究されている

テーマの一つ

Page 12: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

近似GCD(最大公約子)

GCD計算自体が数式処理の

最も基本的かつ重要な計算の一つ

Page 13: 数式処理における近似最大公約子 (Approximate 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の算法の研究のきっかけの一つ

Page 14: 数式処理における近似最大公約子 (Approximate 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

与えられた代数方程式を数値解法で解く際に,あらかじめ重根を除去して計算を安定化させる

Page 15: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

その他いろいろ拡張Euclidの互除法は

多項式の因数分解をはじめとして数式処理のいたるところで

重用されている

Page 16: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

近似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という"

Page 17: 数式処理における近似最大公約子 (Approximate 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 余因子(互いに素)与えられた多項式

次数条件

Page 18: 数式処理における近似最大公約子 (Approximate 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 余因子(互いに素)与えられた多項式

Page 19: 数式処理における近似最大公約子 (Approximate 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 余因子(互いに素)与えられた多項式

Page 20: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

近似GCD算法のこれまでのアプローチ

• 多項式剰余列 (PRS)

• Sylvester 行列(部分終結式行列)の特異値分解 (SVD)

• Sylvester / Bezout 行列(部分終結式行列)の LU 分解,QR 分解

• 最適化法... など

Page 21: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

歴史的に最も早く現われたのは多項式剰余列に基づく算法

• Sasaki and Noda (1989), Hribernig and Stetter (1996) など

• 多項式剰余列のノルムの減少の度合いと近接根の近接度の関連性に基づいて近似GCDの存在を判定

• 計算量は    で効率的

• 精度面で実際上は不安定な場合がある(個人的な経験値)

O(n2)

Page 22: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

Sylvester 行列(部分終結式行列)の利用

F (x) = fmx

m + fm�1xm�1 + · · · + f0,

G(x) = gnx

n + gn�1xn�1 + · · · + g0,

0 < n m

Page 23: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

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))

Page 24: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

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))

Page 25: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

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

Page 26: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

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)

Page 27: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

最適化法による近似GCD計算のアプローチ

• 近似GCDがみたすべき制約条件と,摂動項の摂動量に関する目的関数を設定して最適値を探索

• 他の方法に比較して,摂動量を小さくすることが可能な場合がある

• 他の方法に比較して,計算コストが増加する場合がある

• 最適値への収束の問題もある

Page 28: 数式処理における近似最大公約子 (Approximate 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))

Page 29: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

近似GCD算法 GPGCDGradient Projection

• 制約つき最適化に基づく反復算法• 勾配射影法(修正Newton法)に基づく

Page 30: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

近似GCD算法 GPGCDGradient Projection

• 勾配射影法:古典的で単純な方法だが高速

• Newton法などと比べて比較的安定

• 摂動を他の算法と同程度に抑えつつ、大幅な効率化を達成

Page 31: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

問題:与えられた 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

Page 32: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

問題解決のステップ

1近似GCDの問題を制約付最適化問題に帰着させる

2制約付最適化問題を解く

Page 33: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

目的関数の導出与えられた多項式(既知)

F (x) = fmxm + · · · + f0x0

G(x) = gnxn + · · · + g0x0

求める多項式(未知)

F (x) = fmxm + · · · + f0x0

G(x) = gnxn + · · · + g0x0

Page 34: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

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)

目的関数の導出

(目的関数)

Page 35: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

F (x) (m次), G(x) (n次) がd次のGCDをもつ

A(x) (n - d 次), B(x) (m - d 次) が存在して

AF + BG = 0

制約条件の導出

Page 36: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

制約条件の導出

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

⌃⌅ .

Page 37: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

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

制約条件の導出各行毎の連立方程式にまとめる

(制約条件)

Page 38: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

与える最適化問題

    のもとで   を最小にするような を求めよ!

g(x) = 0 f(x)x

次数 d の近似 GCD をもつ 摂動項のノルム

FとGに与える摂動

Page 39: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

問題解決のステップ

1近似GCDの問題を制約付最適化問題に帰着させる

2制約付最適化問題を解く

Page 40: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

「勾配射影法」に基づく解法

x

xk

g(x) = 0

    上で に最も近い点を求める

xg(x) = 0

与えられた多項式の係数に対応する点

Page 41: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

ステップ (1) : 射影

    を における接平面に射影し, とおく

x� xk

yk

xk

  における接平面上で線形最小二乗問題を解くxk

x

xk

yk g(x) = 0

Page 42: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

x

xk

yk

xk+1

g(x) = 0

  を     に引き戻し,   とする

yk

xk+1

g(x) = 0

ステップ (2) : 引き戻し

Page 43: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

    が  における法線に十分近づいたら計算終了

このときの を用いて近似GCDを求める

xk

x� xk xk

x

xk

g(x) = 0

Page 44: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

修正 Newton 法(田邉)

• Newton法で用いるLagrange関数のHesse行列を修正

• 修正のしかたでさまざまな解法を導出• ここでは勾配射影法を一般化した解法を用いる

• オリジナルの勾配射影法より効率的

Page 45: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

実験• 比較対象:

• STLN-based method (Kaltofen et al. (2006))

• UVGCD (Zeng (2003, 2011)

• 実装: 数式処理システム Maple 15(STLN-based method と UVGCD の実装はそれぞれの著者による)

• 詳しい結果は Theoretical Computer Science の SNC 2011特集号で!

Page 46: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

実験例

• 問題:10次から100次まで、10次毎の2つの多項式の近似GCDを計算(各100例)

• 実係数多項式の場合• 複素係数多項式の場合

Page 47: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

実係数多項式の場合

Page 48: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

計算時間の比較

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)

Page 49: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

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)

Page 50: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

摂動量の平均値 (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)

Page 51: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

テスト結果の概要 (1)入力多項式がすでに厳密

もしくは近似 GCD をもつ場合

UVGCD がもっとも高精度に近似GCD を計算する

Page 52: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

テスト結果の概要 (2)

“ノイズ” がより大きな場合

STLN-based method と GPGCD が同程度でより小さな摂動量で近似 GCD を計算する

Page 53: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

テスト結果の概要 (3)いくつかの例題では GPGCD が

極めて高速

今回紹介の実験例では最大約 30 倍(対 STLN-based method)

最大約 10 倍(対 UVGCD)

Page 54: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

近似 GCD 計算の現在・今後の動向

Page 55: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

新たな算法の開発• 行列の高速算法の活用• 種々の最適化法の利用• 2乗和多項式緩和 (Sums-Of-Squares

relaxation) (Li, Nie and Zhi (2008))

• 半正定値計画緩和 (SDP relaxation) など

Page 56: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

新たな算法の開発

私も半正定値計画 (SDP) 緩和に基づく近似 GCD 計算を試行中

(SDP ライブラリ SDPA を使っています!)

Page 57: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

精度保証• SDP によって得られた近似解を有理数に変換し,これの2乗和多項式への分解を厳密に求めることで,近似解が大域的最適値に十分近いことを保証する (Kaltofen, Li, Yang and Zhi (2008))

Page 58: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

応用

• ハイブリッド積分 (Noda and Miyahiro (1990))

• ハイブリッド有理関数近似(Kai and Noda (1993, 2000))

Page 59: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

ハイブリッド積分(Noda and Miyahiro (1990))

• 有理関数の積分の際に、部分分数分解に近似 GCD を用いる(それ以外のステップでの数式・数値融合計算の手法も提案されている)

Page 60: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

ハイブリッド有理関数近似(Kai and Noda (1993, 2000))

有理関数補間の際に現われる不要な分母/分子の共通因子を除去する(Noda and Kai (1998) より引用)

Page 61: 数式処理における近似最大公約子 (Approximate GCD) 計算の最近の動向

Thank you for your attention!

筆者の仕事場からの筑波山とキャンパスの眺望(2013年1月25日撮影)