体験授業

数え上げで求める格子凸多角形の面積と格子凸多面体の体積

1. 格子凸多角形の面積

$xy$平面の図形$\mathcal{P}$がであるとは, $\mathcal{P}$の中にあるどんな2点を結んでも,その線分は$\mathcal{P}$の中にあるときにいう.
特に凸な多角形のことを凸多角形と呼ぶ. 一方,$xy$平面の点$(x,y)$が格子点であるとは,$x,y$がともに整数であるときに言う. さらに,すべての頂点が格子点であるときような凸多角形を格子凸多角形という.

今,下図のような格子凸多角形の面積を求めたいとしよう.
普通なら,(1)の場合,横$\times$高さの面積の公式を使ったり,(2)の場合は大きい長方形で図形を囲み,いらない図形の面積を長方形の面積から引いていくことで計算するだろう. 今回はこの多角形に含まれる格子点の個数を数えることで面積を計算してみる.
ピックの公式
格子凸多角形$\mathcal{P}$に対し,
  • $i$を$\mathcal{P}$の内部にある格子点の個数(白丸の個数)とする.
  • $b$を$\mathcal{P}$の境界にある格子点の個数(黒丸の個数)とする.
このとき, \[\mathcal{P}\mbox{の面積}=i+\dfrac{b}{2}-1\] が成り立つ.
先ほどの例で計算してみる.
このように格子凸多角形の面積は格子点を数え上げることでいつでも計算することができる.またピックの公式を使うと次のようなことが証明できる.
命題
すべての頂点が格子点となるような正三角形(格子正三角形)は存在しない.
証明
格子正三角形が$xy$平面内に存在したとする.平行移動や対称性により,$(0,0)$と$(a,b)$(ただし$a, b$は非負整数で同時に$0$とはならない)を頂点に持つと仮定して良い.このとき,三平方の定理からこの正三角形の1辺の長さは$\sqrt{a^2+b^2}$である.するとこの正三角形の面積は \[ \frac{\sqrt{3}}{4} \cdot (\sqrt{a^2+b^2})^2=\frac{\sqrt{3}}{4}(a^2+b^2) \] となる.$a^2+b^2$は自然数なので,この面積は無理数となる.しかし,ピックの公式より,格子多角形の面積は必ず有理数となるので矛盾する.よって格子正三角形は$xy$平面内に存在しない.
$xy$平面上の点$(a,b)$は,$a$と$b$がともに有理数のとき,有理点と呼ばれる.すべての頂点が有理点となる凸多角形のことを有理凸多角形と呼ぶ.有理凸多角形は何倍かに相似拡大すると格子凸多角形となる.特に有理正三角形は格子正三角形となる. すると,先ほどの命題から次の命題が得られる.
命題(1991年大阪大学)
$xy$平面内において有理正三角形は存在しない.

2. 格子凸多面体の体積

次にピックの公式を$3$次元の場合に拡張できないか考えてみよう. $xyz$空間の図形$\mathcal{P}$がであるとは, $\mathcal{P}$の中にあるどんな2点を結んでも,その線分は$\mathcal{P}$の中にあるときにいう. 特に凸な多面体のことを凸多面体と呼ぶ. 一方,$xyz$空間の点$(x,y,z)$が格子点であるとは,$x,y,z$がすべて整数であるときに言う. さらに,すべての頂点が格子点であるときような凸多面体を格子凸多面体という.

それではピックの公式と同様に格子凸多面体の体積が格子点の数え上げで計算できるか考えてみる. 実は,ピックの公式をそのまま拡張することはできない.それを確認するために次の例を考えてみよう.
以下の四面体を考える.
この四面体の体積は$\dfrac{m}{6}$($m$が大きくなると体積が大きくなる)である. 一方,内部と境界にある格子点の個数はそれぞれ$0$個と$4$個($m$が大きくなっても変わらない)である. すると含まれる格子点の個数だけでは体積が一つに定まらない,つまり計算できないことがわかる.
ではどのようにすれば格子点の数え上げで格子凸多面体の体積を計算することができるだろうか. そのためには,凸多面体の「膨らまし」を考える.格子凸多面体$\mathcal{P}$と自然数$n$に対し,$L_{\mathcal{P}}(n)$を$\mathcal{P}$を$n$倍に膨らました$n\mathcal{P}$に含まれる格子点の個数とする. 例で確認してみよう.わかりやすいように凸多角形で考える.
下図のような長さ$1$の格子正方形$\mathcal{P}$を考える.
すると, \[ L_{\mathcal{P}}(1)=4, L_{\mathcal{P}}(2)=9, L_{\mathcal{P}}(3)=16, \ldots, L_{\mathcal{P}}(n)=(n+1)^2, \ldots \] となる.
この例のように格子凸多角形だと$L_{\mathcal{P}}(n)=x^2+2n+1$のように$L_{\mathcal{P}}(n)$は$2$次の多項式になっている.実は格子凸多面体の場合は$L_{\mathcal{P}}(n)$は$3$次の多項式になっていて,さらにこの多項式を計算することで体積を計算することができる.
エルハートの基本定理
$xyz$空間の格子凸多面体$\mathcal{P}$に対し,$L_{\mathcal{P}}(n)$は \[ L_{\mathcal{P}}(n)=an^3+bn^2+cn+1 \] という形をしている.特に$L_{\mathcal{P}}(n)$の$3$次の係数,つまり$a$は$\mathcal{P}$の体積と一致する.
この多項式$L_{\mathcal{P}}(n)$を$\mathcal{P}$のエルハート多項式と呼ぶ. エルハート多項式は$n\mathcal{P}$の全体に含まれる格子点の個数を数え上げる多項式であるが,この多項式から$n\mathcal{P}$の内部と境界の格子点の個数を分けて計算することもできる.
エルハート・マクドナルド相互法則
$xyz$空間の格子凸多面体$\mathcal{P}$のエルハート多項式が \[ L_{\mathcal{P}}(n)=an^3+bn^2+cn+1 \] と書けるとき, \[(n\mathcal{P}\mbox{の内部に含まれる格子点の個数})=an^3-bn^2+cn-1\] となる.よって \[(n\mathcal{P}\mbox{の境界に含まれる格子点の個数})=2bn^2-2\] である.
したがって体積を計算するには$a$を求めればいいので, $\mathcal{P}$と$2\mathcal{P}$の境界と内部の格子点の個数が分かれば連立方程式を解いてエルハート多項式が求まり,体積も求まる.
さっきの例で確かめてみる.
この四面体のエルハート多項式は \[ L_{\mathcal{P}}(n)=\dfrac{m}{6}n^3+n^2+\cfrac{12-m}{6}n+1 \] となる. 計算するのは大変だがこの多項式から$\mathcal{P}$の体積は$\frac{m}{6}$であることがわかる.

3. 一般次元の凸多面体

$4$次元以上の凸多面体を考えていきたい. そのために,まず$4$次元以上の空間がどういったものか考える.$xy$平面や$xyz$空間は$\mathbb{R}^2$や$\mathbb{R}^3$と書くことがある.この$\mathbb{R}$という記号はすべての実数の集合である. では$\mathbb{R}^2$や$\mathbb{R}^3$は何を意味しているかというと,$\mathbb{R}^2$は2つの実数の組$(x,y)$を集めた集合,$\mathbb{R}^3$は3つの実数の組$(x,y,z)$を集めた集合であり,それぞれ$2$次元実空間や$3$次元実空間と呼んだりする.つまり$\mathbb{R}^2$は2つ組のデータの集まり,$\mathbb{R}^3$は3つ組のデータの集まりであり,$xy$平面や$xyz$空間はそれを視覚的に見たものである.

では「見る」ことを忘れれば,4つ組のデータの集まり,5つ組のデータの集まり,つまり$\mathbb{R}^4$や$\mathbb{R}^5$を考えることができる.もっと一般に$d$個の実数の組$(x_1,x_2,\ldots,x_d)$を集めた集合$\mathbb{R}^d$を考えることができる.この$\mathbb{R}^d$を$d$次元実空間と呼ぶ.データの集まりとして考えると,実用的に2つ組や3つ組のデータだけでは足りない.つまり$\mathbb{R}^4, \mathbb{R}^5, \mathbb{R}^6,\ldots$を考える必要がある.$\mathbb{R}^4, \mathbb{R}^5, \mathbb{R}^6,\ldots$は書けないし,見えないが,そこの中にある集合を``図形"だと思って数学者は考えている.

次に凸多角形の厳密な定義を考えてみる. $xy$平面でいくつか(無限個でも可)の点の集合$X$に対し, $X$を含む一番小さい凸集合のことを$X$の凸閉包と呼び,${\rm Conv}(X)$と書く. 下図のように凸閉包は$X$全体を凹まないように囲って内側を塗りつぶすイメージである.
このとき凸多角形は次のように定義できる.
定義
$\mathbb{R}^2$の中の集合$\mathcal{P}$は有限個の点の集合$X$を使って$P={\rm Conv}(X)$と書けるとき,凸多角形であるという. また$\mathcal{P}={\rm Conv}(X)$となる,もっとも少ない点の集合$X$を$\mathcal{P}$の頂点集合といい,その中のそれぞれの点を$\mathcal{P}$の頂点と言う.
例えば,五角形は下図の左2つのような有限個の点の集合の凸閉包として書けるので凸多角形である.また中央の図の5点はこの五角形を表すための最小の点の集合であるので,この5点が頂点であり,今まで思っていた「頂点」と一致していることがわかる.一方,円は凸集合であるが,この円を凸閉包で書こうとすると円周上の点を全て集める必要があり,これは無限個ある.凸多角形の定義の中の「有限個の点」という条件が凸多角形の定義の本質である.
同じように$xyz$空間($\mathbb{R}^3$)の凸多面体,より一般に$\mathbb{R}^d$の凸多面体が定義できる. $\mathbb{R}^d$のいくつか(無限個でも可)の点の集合$X$に対し, $X$を含む一番小さい凸集合のことを$X$の凸閉包と呼び,${\rm Conv}(X)$と書く.
定義
$\mathbb{R}^d$の中の集合$\mathcal{P}$は有限個の点の集合$X$を使って$P={\rm Conv}(X)$と書けるとき,凸多面体であるという. また$\mathcal{P}={\rm Conv}(X)$となる,もっとも少ない点の集合$X$を$\mathcal{P}$の頂点集合といい,その中のそれぞれの点を$\mathcal{P}$の頂点と言う.
例えば,$\mathbb{R}^3$内で各座標が$0$か$1$のすべての点の集合 \[ X=\{(0,0,0),(1,0,0),(0,1,0),(0,0,1),(1,1,0),(1,0,1),(0,1,1),(1,1,1)\} \] に対し,${\rm Conv}(X)$は長さ$1$の立方体である.同様に,$\mathbb{R}^d$内で各座標が$0$か$1$のすべての点の集合$X$に対し,${\rm Conv}(X)$は長さ$1$の超立方体と呼ばれる.

基本的に$4$次元以上の凸多面体を見ることはできないが, $4$次元超立方体のイメージする方法を紹介する. そのために,$2$次元の立方体(これは正方形)から$3$次元立方体を作る方法を考える. 今,正方形を一つ準備して,その正方形を2つにコピーし,この2つの正方形の頂点をそれぞれ辺で結ぶ.すると立方体の骨組みのようなものができるであろう.
同様に,立方体を一つ準備して,その立方体を二つにコピーし,この二つの立方体の頂点をそれぞれ辺で結ぶ.するとこれは$4$次元超立方体の骨組みと思うことができる.
少し,見方を変えると一つの立方体を縮小コピーして,この二つの立方体の頂点をそれぞれ辺で結ぶ.するとこれも$4$次元超立方体の骨組みと思うことができる.
このように,一般次元の凸多面体も「骨組み」くらいは見ることができる.ただし,見る方向によって形が変わることに注意しよう.$3$次元の模型を作ればもう少し$4$次元凸多面体を理解することもできる.

3'. もう一つの凸多面体の定義

一般次元の凸多面体を定義する方法はもう一つある.凸多角形は下の図のように$xy$平面のいくつかの直線(下図の三角形$\mathcal{P}$の場合$L_1,L_2,L_3$)で囲まれた領域で表現できる.直線は一般に$ax+by=c$という式で表される.
また凸多面体は$xyz$空間のいくつかの平面で囲まれた領域で表現できる.一般に平面は$ax+by+cz=d$という式で表される. この考えを$d$次元に拡張する.$\mathbb{R}^d$内の \[ a_1 x_1 +a_2 x_2 +\cdots+a_d x_d =b \] という式で表される図形を超平面という. さらに有限個の超平面で囲まれた領域のことを凸多面体という. こう定義すると,凸多面体というのは空間を何回かまっすぐに切ることでできる図形であることがわかる.この定義は上で説明した凸多面体の定義とは違うが,実は同じ図形を表している.

4. エルハート理論

$d$次元凸多面体の体積を厳密に定義することはここではやめて,超立方体を使って体積を定義する.$xy$平面では長さ$1$の正方形の面積は$1$,$xyz$空間では長さ$1$の立方体の体積は$1$であった.そこで,$d$次元の長さ$1$の超立方体の体積を$1$と定義し,一般の凸多面体の体積はこの超立方体が何個入るか,ということで定義する.

$4$次元以上の凸多面体は描けないし,目に見えないため,体積を計算することは想像しにくいだろう.しかし,一般次元の格子凸多面体の場合,$3$次元のときと同様に格子点の数え上げであるエルハート多項式を計算することで体積を求めることができる.

$\mathbb{R}^d$の点は,すべての座標が整数のとき,格子点と呼ばれる. すべての頂点が格子点となる$d$次元凸多面体を格子凸多面体と呼ぶ. また凸多面体$\mathcal{P}$の各点のすべての座標を$n$倍にしたものを$n\mathcal{P}$と書く. このとき,$L_{\mathcal{P}}(n)$を$n\mathcal{P}$に含まれる格子点の個数とする.
エルハートの基本定理
$\mathbb{R}^d$の$d$次元格子凸多面体$\mathcal{P}$に対し,$L_{\mathcal{P}}(n)$は \[L_{\mathcal{P}}(n)=a_d n^d+a_{d-1} n^{d-1}+\cdots+a_1 n+1\] という形をしている. 特に,$L_{\mathcal{P}}(n)$の$d$次の係数,つまり$a_d$は$\mathcal{P}$の体積と一致する.
この多項式$L_{\mathcal{P}}(n)$を$\mathcal{P}$のエルハート多項式と呼ぶ. さらに$3$次元の場合と同様で次の定理が成り立つ.
エルハート・マクドナルド相互法則
$xyz$空間の格子凸多面体$\mathcal{P}$のエルハート多項式が \[L_{\mathcal{P}}(n)=a_d n^d+a_{d-1} n^{d-1}+\cdots+a_1 n+1\] と書けるとき, \[(n\mathcal{P}\mbox{の内部に含まれる格子点の個数})=a_d n^d-a_{d-1} n^{d-1}+\cdots+(-1)^{d-1} a_1 n+(-1)^d\] となる.
この二つの定理を組み合わせると,$\mathcal{P}, 2\mathcal{P}, 3\mathcal{P},\ldots, [\frac{d+1}{2}] \mathcal{P} $の境界と内部の格子点の個数が分かれば連立方程式を解いてエルハート多項式が求まり,体積も求まる. このエルハート多項式を研究する分野をエルハート理論といい,格子凸多面体の研究の中心の一つになっている.