\(\newcommand{\kumiawase}[2]{_{#1}\text{C}_{#2}}\)
整数係数の方程式の Galois 群の求め方の記事で、\(V_{k}\) の間で値の重複がないように解の1次結合の整数係数を具体的に選ぶ手順について説明する。
整数係数で、重解がない \(n\) 次方程式が具体的に1つ与えられたとして、その解を \(\alpha_{1}, \alpha_{2}, \dots, \alpha_{n}\) とする。解の1次結合
\[ V = A_{1} \alpha_{1} + A_{2} \alpha_{2} + \dots + A_{n} \alpha_{n} \]
に対して、解の \(N=n!\) 通りの置換に対する \(V_{1}, V_{2}, \dots, V_{N}\) の値がすべて異なるように整数 \(A_{1}, A_{2}, \dots, A_{n}\) を選びたい。
\(A_{1}\)〜\(A_{n}\) を具体的な整数値とせずに不定元としたままでも、\(F(x)\) を整数係数の範囲内で既約分解することは可能(元記事の[2]の手順を、多変数多項式に拡張する。\(n\) 変数多項式は、1つの変数に着目すればその係数は \(n-1\) 変数多項式なので、帰納的により不定元数の小さい多項式の議論に帰着することが可能)なので、次のようにするのが理論的には簡明かもしれない: \(F(x)\) をそうやって既約分解してから、既約成分の間で重複が発生しないような整数値を \(A_{1}\)〜\(A_{n}\) に代入する(そのような整数値を(必要なら試行錯誤も交えて)見つける)。
ただ、それを実際に実行しようとすると「整数係数多変数多項式の整数係数既約分解」にえらく手間がかかってしまうので、ここでは元々の私の構想に近い手順を説明してみようと思う。
説明は、以下の2段階に分けて行う。
- そのような整数 \(A_{1}, \dots, A_{n}\) が存在することの証明。
- そのような整数 \(A_{1}, \dots, A_{n}\) を具体的に求めるにはどうすればいいか、という手順。
1. は \(A_{1}\), \(A_{2}\) 以外の値は本当にただの「存在証明」でしかないので、\(n>2\) の場合与えられた方程式に対して \(A_{3}\) 以降の具体的な値をどうやって求めればいいのか、という話は 2. のように別個に考察する必要がある。
なぜ 2. の話だけで済まさず 1. にまで話が及ぶのかと言うと、2. の説明が 1. の存在証明のストーリーに強く依存した形になっているためである。
それから、1. の証明は本 blog で「志賀本」と呼んでいる
志賀浩二 数学が育っていく物語 第5週「方程式 解ける鎖、解けない鎖」(岩波書店、1994)
にならって行うが、志賀本の記述は \(A_{1}, \dots, A_{n}\) に対する必要条件を列挙しただけに見えやすく、それが十分条件にもなっていることは意識的に読み込まないと見落としてちまいがちになっているように思うので、その部分を補った説明を行いたい。
- 存在証明
示すべきことは、「整数 \(A_{1}, \dots, A_{n}\) の値を適切に取っておけば、異なる順列
\begin{equation}
\label{eq:55-1}
(a,b,c, \dotsc) \ne (a’,b’,c’, \dotsc)
\end{equation}
に対して必ず
\begin{equation}
\label{eq:55-2}
A_{1}\alpha_{a} + A_{2}\alpha_{b} + \dotsb \ne A_{1} \alpha_{a’} + A_{2} \alpha_{b’} + \dotsb
\end{equation}
となるようにできる」ということである。\eqref{eq:55-1}をみたす順列はたくさんあるので、\eqref{eq:55-2}は実際にはかなり大量の条件式の集まりだが、まずはそのうち(整理すると)\(A_{1}, A_{2}\) のみが含まれて
\begin{equation}
\label{eq:55-3}
A_{1} (\alpha_{a} -\alpha_{a’}) + A_{2} (\alpha_{b} – \alpha_{b’}) \ne 0
\end{equation}
となるものについて考えよう。つまり、\eqref{eq:55-1}の順列の中で、「3つ目以降は一致し、最初の2つのみが違っている順列」に限定してスタートする。式で書けばこういうことだ。
\begin{equation}
\label{eq:55-4}
(a,b) \ne (a’,b’) \text{ かつ } (c,d, \dotsc) = (c’, d’, \dotsc)
\end{equation}
\((a,b,c,\dotsc)\) も \((a’,b’,c’,\dotsc)\) も \(1,\dots,n\) を並び替えた順列だから、\eqref{eq:55-4}がなりたつのは \((a,b) = (b’,a’)\) のときだけ。よって
\[ \eqref{eq:55-3} \Leftrightarrow (A_{1} – A_{2})(\alpha_{a}-\alpha_{b}) \ne 0 \]
だが、元々の方程式が重解を持たないと仮定していたので \(\alpha_{a} \ne \alpha_{b}\)。よって\eqref{eq:55-3}は \(A_{1} \ne A_{2}\) と整理される。これをみたす整数値として、例えば \(A_{1}=0\), \(A_{2}=1\) や \(A_{1}=1\), \(A_{2}=2\) などを取れば\eqref{eq:55-3}がなりたつ。以下、\(A_{1}\), \(A_{2}\) はそのような値に固定されているとする(勝手な値で固定しても破綻しないことは、以下の議論から自ずとわかってくる)。続いて、\eqref{eq:55-2}の条件式のうちで \(A_{1}\)〜\(A_{3}\) のみを含むものについて考えよう。つまり、\eqref{eq:55-1}の順列のうち
\begin{equation}
\label{eq:55-6}
(a,b,c) \ne (a’,b’,c’) \text{ かつ } (d,e,\dotsc) = (d’,e’, \dotsc)
\end{equation}
をみたすものに限定して考える。すると\eqref{eq:55-2}は
\begin{equation}
\label{eq:55-5}
A_{1}(\alpha_{a}-\alpha_{a’}) + A_{2}(\alpha_{b}-\alpha_{b’}) + A_{3}(\alpha_{c}-\alpha_{c’}) \ne 0
\end{equation}
となる。ここで、\(c=c’\) でもあるようなものについては上で既に考察済みなので、ここで新たに考える順列は、\eqref{eq:55-6}に加えて \(c \ne c’\) もみたすようなものに絞ってよい。よって \(\alpha_{c} \ne \alpha_{c’}\) だから
\begin{equation}
\label{eq:55-7}
\eqref{eq:55-5} \Leftrightarrow A_{3} \ne – \frac{A_{1}(\alpha_{a}-\alpha_{a’}) + A_{2}(\alpha_{b}-\alpha_{b’})}{\alpha_{c} – \alpha_{c’}}
\end{equation}
となる。\eqref{eq:55-7}の右辺に現れ得る値は有限通りしかない(\(\because \eqref{eq:55-6}\) かつ \(c \ne c’\) をみたす順列は有限個)ので、そのどれとも一致しない整数を \(A_{3}\) に選べば\eqref{eq:55-5}はなりたつ(ここで、「選ぶ」と言っても実際にそれが実行できるのは解 \(\alpha_{1}, \dots, \alpha_{n}\) の値を知っていて\eqref{eq:55-7}右辺の具体的な値を計算できる立場の人だけであって、\(\alpha_{1}, \dots, \alpha_{n}\) が未知の立場の人にとっては「適する整数が存在する」ということしか現時点ではわからない、という点に注意しておく)。以下同様に続けていけば、「\eqref{eq:55-2}のうち \(A_{1}\)〜\(A_{4}\) のみを含むものは整数 \(A_{4}\) を適切に選べばすべてなりたつ」「\(A_{1}\)〜\(A_{5}\) のみを含むものは整数 \(A_{5}\) を適切に選べばすべてなりたつ」…と進んでいくので、最終的に \(A_{n}\) を選んだ時点で\eqref{eq:55-2}のすべての条件式がみたされることになる(なお、\((a,b,\dotsc)\) と \((a’,b’,\dotsc)\) は \(1,\dots,n\) の並べ替えなので、「\eqref{eq:55-2}のうち \(A_{1}\) のみを含むもの」は存在しない。よって「\(A_{1}\), \(A_{2}\) のみを含むもの」から出発する上の議論で漏れはない。念のため)。\(\square\)
- 具体値の選出
まずは、\(A_{1}\), \(A_{2}\) を \(A_{1} \ne A_{2}\) をみたす適当な値に固定する。上でも述べた通り、\((A_{1}, A_{2})=(0,1), (1,2)\) などでいいだろう。\(n=2\) 次方程式に対してはこれだけで十分である。以下 \(n>2\) とする。元の記事で述べた通り、\(A_{1}\)〜\(A_{n}\) の値を自分で決めたときに、それが不適かどうかは確かめる手段がある(\(F(x)\) が \(F'(x)\) と \(1\) 次以上の共通因子を持つかどうかを互除法で調べる………☆)ので、ここから先は根気よく試行錯誤を繰り返す話となる。1. の過程からわかるように、各ステップで不適な値というのは僅かしかないから、\(A_{1}\)〜\(A_{n}\) の値としては互いに異なる整数値を当てずっぽうに選んでみれば大抵は適しているはずで、運悪く不適な値を引き当ててしまっても別の値を何通りか試してみれば、実用上はほとんどの場合は適する値に到達できるだろう。しかし、そうは言っても不適な \(A_{1}\)〜\(A_{n}\) の値は有限通りしかないわけではない(後述)ので、当てずっぽうに色々な値を試すだけではいつまでたっても適する値に到達しないこともありえる。よって、確実に適する値を選出するアルゴリズムを編み出そうという立場を取るなら、それでは不十分である。(例えば \(n>3\) で \(A_{3}\) が\eqref{eq:55-7}右辺のどれかの値と一致してしまっていた場合、\(A_{4}\) 以降をどんな値に取ろうともすべて不適となってしまうわけだから、\(A_{1}\)〜\(A_{n}\) 全体では不適な値は無限通り存在する)【追記】\(n\) を固定しておく。異なる \(n\) 個の整数 \(A_{1}, \dots, A_{n}\) の選び方は可算無限個しかないので、それらは一列に整列させられる。よって特にアルゴリズムなどなくてもその整列順に従って試していけば、「いつかは」必ず適する係数 \(A_{1}, \dots, A_{n}\) が見つけられる。これは確かに「有限の」手数で目的を達成する手順にはなっているが、「可算無限集合の整列可能性に訴えて順に試す」という試行錯誤は何ぼ何でも力任せすぎてかかる手間が桁違いすぎるので、「有限の手数で実現可能な手段」には数えないことにする。他の記事で言及するアルゴリズムも同様とする。移転前の blog へのコメントで、本注記に繋がる注意を喚起してくださった河下希さんに感謝する。
以下、確実に適する値を見つける手順を考察する。対等性から、\(A_{3}\) に対しても \(A_{1} \ne A_{2}\) と同じ形の条件 \(A_{3} \ne A_{1}\), \(A_{3} \ne A_{2}\) が課されるから、\(A_{1}\) とも \(A_{2}\) とも異なる整数を任意にひとつ選んで \(A_{3}\) とする。
【2018, 10/24追記】
ここから先は読む価値がありません。このやり方は極めて冗長で、ものすごい遠回りであることがわかりました。数式処理ソフトで実際の計算法を実装して下さった「退職後は素人数学者」さんが、もっと遙かに簡明なやり方を教えてくださったので、それにもとづくアルゴリズムを解説した別記事をご覧ください。この値が不適かどうかを、\(A_{4}\)〜\(A_{n}\) の値の考察に先行して判定できればいいのだが、上述の「☆」の手法は \(A_{1}\)〜\(A_{n}\) の値が一通り揃っていないと使えないので、そういう訳には行かない。そこで、\(A_{4}\) 以降についても互いに異なる整数を一通り仮に与えておいて☆を適用することになるが、厄介なことにそれで不適だと判定された場合、\(A_{3}\)〜\(A_{n}\) のどの値が原因なのかまではわからない。\(A_{3}\) がいきなり不適だった可能性もあるし、\(A_{3}\) はよいけど \(A_{4}\) がダメだった可能性もあるわけだ。そこで、かなり回りくどい手順にはなるが、次のように話を進めてみる。まず、\(A_{3}\) として不適な値が何通りあるかを求める。それには、\eqref{eq:55-7}右辺に現れる値が何通りあるかを数えればよい(実際には、それらのうち整数になるものだけが意味を持つから、これで出せるのは「最大これだけ」という上限だけだが、以下の話ではそれで用が足りる)。\eqref{eq:55-6}のとき \(a,b,c\) と \(a’,b’,c’\) は組み合わせとしては一致し、その組み合わせが \(\kumiawase{n}{3}\) 通りある。そのそれぞれに対し、\(c \ne c’\) であるような \(c,c’\) の選び方が \(\kumiawase{3}{2}\) 通りずつある(\(a,b,c\) と \(a’,b’,c’\) をそっくり入れ替えても\eqref{eq:55-7}右辺の値は変わらないから、\(c\), \(c’\) を入れ替えたものは別々に数える必要はなく、組み合わせで数えてよい)。さらにそのそれぞれに対して、\(a,b\) の並び替えと \(a’,b’\) の並び替えが \(2\) 通りずつあるので、全部で
\[ \kumiawase{n}{3} \times {}\kumiawase{3}{2} \times 2^{2} = 2n(n-1)(n-2) \]
通りになる。続いて、\(A_{3}\) が適する値だとしたときに、\(A_{4}\) として不適な値が何通りあるのかを求めると、最大で
\[ \kumiawase{n}{4} \times {}\kumiawase{4}{2} \times (3!)^{2} =
9n(n-1)(n-2)(n-3) \]
通りである。以下同様に繰り返すと、「\(A_{n-2}\) までが適する値だとしたときに、\(A_{n-1}\) として不適な値が何通りあるか」は最大で
\begin{equation}
\label{eq:55-9}
\kumiawase{n}{n-1} \times {}\kumiawase{n-1}{2} \times \bigl\{ (n-2)! \bigr\}^{2} = \frac{n!(n-2)!(n-2)}{2}
\end{equation}
通りで、「\(A_{n-1}\) までが適する値だとしたときに、\(A_{n}\) として不適な値が何通りあるか」は最大で
\begin{equation}
\label{eq:55-8}
\kumiawase{n}{n} \times {}\kumiawase{n}{2} \times \bigl\{ (n-1)! \bigr\}^{2} = \frac{n!(n-1)!(n-1)}{2}
\end{equation}
通り、という所まで到達して一段落つく。そこで、\(A_{3}\)〜\(A_{n}\) を仮に決めた後、もしそれが☆によって不適だと判明した場合、まずは \(A_{n-1}\) までをいったん固定して \(A_{n}\) の値だけを色々変えて試してみる。それでもし
\[ \eqref{eq:55-8} + 1 = \frac{n!(n-1)!(n-1)}{2} + 1 \]
通りの値を試してすべて不適だった場合は、\(A_{n-1}\) までの値に不適なものがあったとわかるので、\(A_{n-1}\) を別の整数に取り替えて仮に固定し、再び \(A_{n}\) の値を色々変えて試す。これも \(\frac{n!(n-1)!(n-1)}{2} + 1\) 通り試してすべてダメだったら、\(A_{n-1}\) をさらに別の整数に取り替えて同じことを繰り返す。この過程で、\(A_{n-1}\) の異なる値を
\[ \eqref{eq:55-9}+1 = \frac{n!(n-2)!(n-2)}{2} + 1\]
通り試してもすべてダメだったとしたら、\(A_{n-2}\) までの値に不適なものがあったとわかるので、今度は \(A_{n-2}\) を別の整数に取り替えて再度 \(A_{n}\) の値を変化させる所からやり直す。この手順をずっと繰り返して行けば、とにもかくにも有限の手順内で適する値を確実に見つけ出すことが可能である。
…書き下してみると、我ながらイヤになるほど面倒な手順になってしまったので、このようにするくらいなら始めに書いた通り「\(A_{1}, \dots, A_{n}\) を具体的な整数値とせずに不定元としたままで \(F(x)\) を整数係数の範囲内で既約分解する」という手順の方がずっとマシだったかもしれない(笑)。
コメントを残す