P≠NPなのか-7つのミレニアム問題の1つの難問-
P、NP問題
ちょっと何を言っているのか分からないかもしれませんが、これもちゃんとした数学の問題です。しかも今でも未解決問題で、21世紀になった2000年にアメリカのクレイ数学研究所が、21世紀に解決すべき問題としてあげた7つの問題の1つです。これらには、賞金がかかっていて、解いた人には、100万ドル受賞できることになっています。
P,NP問題は、1971年にカナダのトロント大のスティーブン・クックが30歳の若さで提案した問題です。
PとNPとは何か
PとNPはともに問題の集まりで、\(P \subset NP\)ですが、\(P=NP\)かどうかは分かりません。この問題は、\(P=NPなのかP≠NP\)なのかどちらなのかを明確にしなさいと言う問題なのです。
PとNPは、略号で、計算をするときの手順を示しています。Pに含まれる問題は、問題の大きさが増えるにつれて、多項式的に増えることをあらわしています。Pは、多項式をあらわす、Polynomial の頭文字です。
また、NPは、Nonderministic Polynominal の略です。
たとえば、「任意の自然数Nが、素数でない場合に、素因数分解する。」という問題については、2進数であらわしたときには、\(A=log2N\)がこの問題となり、多項式的に増加するとは、「ある自然数kがあって、Nが大きくなると、いつかは\(A^k=(log2N)^k\)より小さくなる」と言う意味です。
NPはNではないと、言っているのではありません。NPはPの否定なのですが、否定するものは、Pではありません。NPに入る問題も、問題を解く手順で大きさが増えるにつれて多項式的に手数が増える手順があるということです。しかし、このままでは、Pと同様ですが、その違いは問題を解く手順の性質の違いなのです。
Pに入る問題の手順では、決定性、NPに入る問題では非決定性なのです。
決定性の手順は非決定性の手順の各ステップで、選択肢が1つになったタイプと考えられますから、PはNPに含まれます。
コンピューターは逐次的に命令を処理しています。これは、プログラムが決定的ということになります。ここの問題を解く手順はイギリスの数学者アラン・チューリングの考えた手順を考えます。これをアルゴリズムと言います。
因数分解の問題
ある数Nの素因数を求めるには、小さな素数2から割っていけばいいのですが、\(\sqrt{N}\) 以下の自然数で割っていけば十分です。
よって、素因数分解の計算量は、最悪でも\(\sqrt{N}\) の計算量で解けることになります。
計算量は、傾向として対数関数になると、対数的、指数関数になれば、指数的といいます。
因数分解と暗号の関係
合成数Nの大きさを考えますが、2進法で考えます。\(A=log2N\)が、この問題の
大きさになります。
一方、計算量は、\(\sqrt{N}\)です。
\(N=2^A\)ですから、\(\sqrt{N}=(\sqrt{2})^A\) となります。
従って、素因数分解問題では、素因数を求めるアルゴリズムは、指数関数的に増加する
ことになります。
従って、この方法をとる限り、判定する数が大きくなると、コンピューターで素因数を
求めることは、非現実的なものとなります。
Pに入る問題
問題の大きさが増えるにつれて最悪の場合の計算量は、多項式的に増えることに
なります。
ただし、決定的な手順がわかっている場合は、問題はPに入ることになります。
素数問題がPに属することの証明
2002年には、ポアンカレ予想が、ロシアのぺリルマンによって証明されていますが、
この年に、3人のインドのコンピューター数学者によって、ついに素数問題は、Pに
属することが証明されました。アグラワル、カヤル、サクセナという3人です。
カヤル、サクセナは、アグラワルの生徒で、大学院時代の卒業研究で素数問題の
計算量をといてしまったのです。
インド恐るべしです。あの超天才数学者ラマヌジャンもインドの数学者ですし、
0を発見したインドは、数学の分野であなどれない国なのだと思います。