136.NP完全問題の続き (2003/06/29)

NP完全の話は、おそらくあまりピンとこないと思いますので、もう少し分かりやすく説明できるか挑戦してみたいと思います。


LSIの中でも論理LSIはメモリーと異なり、設計の段階で複数のトランジスターから構成される論理セル(ANDやOR等の基本ブロック)を、如何に平面的なシリコンウェハー上に配置し、如何に相互間を配線するかが重要です。


配線が長くなると信号遅延が増大するため、動作周波数(クロック速度)に制限を与えてしまいます。できるだけ配線長を短くするためには、まず論理セルの配置が適切に行われていなければなりません。


各論理セルには、それぞれ信号の入力と出力の為の端子があり、たとえば3入力のANDの場合は、3つの入力端子と1つの出力端子があります。


出力信号は、ほとんどの場合同時に複数の論理セルに接続され、多い物では100以上もの論理セルと接続されます。これらの論理セルを、すべての接続を最短にするように配置する事は、容易ではありません。


分かりやすくなるかどうか分かりませんが、別の例で考えてみましょう。


今、40人の生徒がいるクラスの席替えをしようとしています。できるだけ生徒全員が満足する席の配置を目指します。


仲が良い3人の友達と一緒になりたいという生徒がいたり、5人と仲がよい生徒がいたり、クラス全員の人気者がいたり、いろいろな条件がありそうです。


さらに、勉強したいから一番前で先生の話がよく聞こえる席が良いという生徒がいたり、先生から目が届かない席に行きたがる生徒がいたり、憧れの異性の側に行きたがる生徒がいたり、それぞれ異なった要求が出てきます。


問題は、ある一人の生徒を満足させるだけなら簡単なのですが、それが他の生徒を満足させるとは限らないと言うことです。LSIの場合は、生徒が数百万人いる教室の席替えをするようなものですから、あまり関わりたいとは思いませんね。


まだ問題の難しさがよくわからんとおっしゃる方がおられたら、こんな例は如何でしょうか?


家系図は、先祖から子孫への系譜を示す物ですから、だんだんと末広がりにわかりやすいように書いていますが、実際は先祖にたどっていく方向にも広がって行くわけです。


つまりすべての親から子、子から親の関係を図示し、数百万人分の系図を一枚の紙に書くのと同じ作業だと言えば、そう簡単ではないのが分かるのではないでしょうか。


話をLSIに戻します。ある一つの論理セルAの出力が、別の論理セルB、C、Dの入力に接続されており、論理セルBの出力は、別の論理セルE、F、Gの入力に接続されている。これを数百万個のセルに対して繰り返すのです。


初めから決まったルールや解法がないので、乱数を発生させながらヒューリスティックな方法で最適解を探して行きます。このような方法を、一般にギャンブルに例え、モンテカルロ法と呼んでいます。


さて、問題の複雑さを理解していただけたでしょうか?何かごちゃごちゃしていると感じて頂ければ十分です。


次回は、モンテカルロ法についてです。

134.NP完全 (2003/06/27)

小学校の算数で習う円周率四捨五入でさえも結構難しいものなのですが、実際の世界では当然のようにもっと複雑な問題があります。


研究室で本当のサイエンスのテーマとして扱われる物には、我々の生活とはあまり関係がないようなものも多いのですが、逆に複雑な問題でありながら私たちの生活になくてはならないものもあります。


先日お話ししましたパソコンのハードディスクを例に取ってみましょう。基板の実装面が見える状態ならば、数多くの部品が基板上にはんだ付けされているのが分かると思います。たいていは、表面実装の部品の小ささに気を取られますが、いくつかのLSI部品も同時に見える筈です。


製品によって異なりますが、最近のハードディスクの場合なら、一つのLSIチップ数百万から数千万ものトランジスターが搭載されています。


論理回路の最小単位は論理セルと呼ばれ、数個から数十個のトランジスターによって構成されます。それぞれの論理セルには複数の端子があり、別の論理セルと相互に接続されます。接続する為の配線は短いほど遅延が少なくなり、LSIの性能を向上させる事ができますから、できるだけ接続関係のある論理セルは近くに配置してやらなければなりません。


メモリーセルのような、同じ形で同じ機能のものを規則正しく並べるなら良いのですが、各々違う機能を持つ論理セルの場合は、そう簡単に並べる事はできません。


数学的には巡回セールスマン問題と言う、セールスマンが複数の都市を巡回するのに最短経路を見つける古典的な類似の問題がありますが、これまでに1万数千の都市までしか数式による解法は得られていません。


計算しなければならない対象が増えると共に、計算量が指数関数的に増える為、計算で求める事ができないとされています。このような問題を、NP完全問題と呼びます。


このような場合、数式による計算によって求める事はできず、ヒューリスティックな解法、つまりいろいろ場当たり的に試しては評価して、満足できる答えなら採択する、駄目ならもう一度やり直すといった方法を取ります。


ただ、いろいろ試すといっても、行き当たりばったりではいつまでも良い結果は出ませんから、早く収束するアルゴリズムを使う必要があります。


LSIの論理セルを配置する時に使われるアルゴリズムの一つに、シミュレーテッド・アニーリングがあります。擬似的焼きなましとでも言いましょうか。


固体の温度を融けるまで上げて分子に運動エネルギーを十分に与え、自由に移動させてから徐々に温度を下げる事によって、分子を安定した状態で再凝固させるのです。論理セル同士の接続の長さをポテンシャルとして定義してやれば、自然とポテンシャルの低い安定した位置に収まってくるという訳です。


ただ、最適解に落ち着くのが理想なのですが、極小解にはまってしまう事があり、しかも悪い事にどれが最適解か誰にも分からないので、何度も何度も繰り返してみて、少しでも最適解に近づけようと努力します。


このようにパソコンのハードディスクの部品一つ一つが、苦労を伴いながら設計されて行くのです。


そこで一言。


計算で答えが出てくるうちは、計算を楽しんでやろうじゃないか、小学生諸君! (でも計算は面倒くさいね!おじさんも嫌いだよ。)