■数のフィボナッチ数分割(その26)
反復アルゴリズムにおいて,各ステップごとに最大化を試みるものを欲張り算法(greedy algorithm)と呼びます.欲張り算法はあるときは最も賢明な方法ですが,ときとして破綻します.今回のコラムでは失敗のケースを紹介します.
===================================
【2】アルゴリズムは破綻する・・・「ラグランジュの定理」
任意の整数nは,n個平方和
n=1^2+1^2+・・・+1^2
に書けますから,これをなるべく少ない数の平方和でnを表そうと思うのは自然な発想です.そこでまず,簡単な数値実験から始めることにしましょう.1から10までの整数をいくつかの平方数の和の形式で表現するというものです.
整数の平方
0,1,4,9,16,25,・・・
は非常にまばらにしか存在しませんが,2つの平方数の和の形で表される整数はより頻繁に現れます.1,2,4,5,8,9,10,・・・
1=1^2+0^2
2=1^2+1^2
4=2^2+0^2
5=2^2+1^2
8=2^2+2^2
9=3^2+0^2
10=3^2+1^2
ここで,3,6,7といった整数は,2つの平方の和では書けないことがわかります.しかし,3つの平方和となると幾分間隙を埋めてくれます.
3=1^2+1^2+1^2
6=2^2+1^2+1^2
それでも,なおすべての正の整数を得ることはできません.最後まで残った7に対しては3つの平方数の和で書けず,4つの平方数が必要となります.
7=2^2+1^2+1^2+1^2
このような数値実験からいくつかのことが予想され,肯定的に証明されています.
[1]フェルマー・オイラーの定理(2平方和定理)
[2]ガウス・ルジャンドルの定理(3平方和定理)
[3]ラグランジュの定理(4平方和定理)
===================================
[4]アルゴリズムの破綻
[1][2][3]はそれぞれ2元,3元,4元の2次形式の問題なので,n次元空間における格子点の配置の問題として幾何学的に考えることができます.すなわち,ラグランジュの定理は4次元空間内の原点を中心とする半径√nの球面には必ず格子点があることを主張しているわけです.半径√nの2次元の円,3次元の球には格子点が存在するとは限らないのです.
上の数値実験では,実際に4個必要なのは7だけで,他はすべて3個以下の平方数の和で書けていました.どの場合に2つで済むのか,3つで済むのか?という問題は,ラグランジュの定理に先行するフェルマー・オイラーの定理,ガウス・ルジャンドルの定理で解決されています.
また,nを越えない最大の平方数は,ガウス記号を用いて[√n]^2と表せるのですが,nを越えない最大の平方数をとり,その残りに対して同様に最大の平方数をとる,・・・,そして残りが平方数になるとおしまいというアルゴリズムによって,4個の平方数の和
n=n1^2+n2^2+n3^2+n4^2
に分解できるように思われます.はたして,これは正しいのでしょうか? 数値実験を続けてみることにします.
11=3^2+1^2+1^2
12=3^2+1^2+1^2+1^2
13=3^2+2^2
14=3^2+2^2+1^2
15=3^2+2^2+1^2+1^2
16=4^2
17=4^2+1^2
18=4^2+1^2+1^2
19=4^2+1^2+1^2+1^2
20=4^2+2^2
21=4^2+2^2+1^2
22=4^2+2^2+1^2+1^2
23=4^2+2^2+1^2+1^2+1^2
素数23では5個の平方和となり,このアルゴリズムは23で破綻してしまいます.もちろん,23は8n+7型の素数ですから,3個の平方和では表すことはできませんが,
23=3^2+3^2+2^2+1^2
のように4個の平方和の形に表すことができます.
また,
12=3^2+1^2+1^2+1^2=2^2+2^2+2^2
18=4^2+1^2+1^2=3^2+3^2
19=4^2+1^2+1^2+1^2=3^2+3^2+1^2
23=4^2+2^2+1^2+1^2+1^2=3^2+3^2+2^2+1^2
のように,より少ない数の平方和として幾通りかに表すことのできる数もあります.
4=(±1)^2+(±1)^2+(±1)^2+(±1)^2 16通り
4=(±2)^2+0^2+0^2+0^2 +8通り
のように,4個の平方数による分割
n=x1^2+x2^2+x3^2+x4^2
の解の個数をR(n)で表せば,1829年,ヤコビは
R(n)= 8Σ(2d+1) n≡1(mod 2)
R(n)=24Σ(2d+1) n≡0(mod 2)
Σは(2d+1)|nをわたる
を示しました.
この出発点となった考え方は,
{Σq^(n^2)}^4=ΣR(n)q^n
=1+8nq^n/(1-q^n)
の2つの表現のq^nの係数を比較することであって,Σq^(n^2)はテータ関数です.R(n)を求めるのにヤコビはテータ関数を用いたのですが,それ以来,モジュラー形式などの解析的理論が数論へ応用されるようになり,ヤコビは2,4,6,8個の平方の和に分解する仕方の数,エルミートは3,5個の平方の和に分解する仕方の数を得ています.→コラム「もうひとつの五角数定理」,「分割数の漸近挙動」
===================================