5.展開公式は効率の良い計算方法か?

2章で登場した展開公式は、一見頭のよさそうな方法である。 しかし、(2章の例題でもやっているが)実際に計算してみると、計算を進めるたびに 項が増えていき、結構面倒なことになってくる。 これは1章の方法に比べて効率の良い計算方法になっているのだろうか?

答えを言ってしまうと、そうではない、ということである。 結局のところ、1つの辺で展開するごとにそれに対応する項が2つに増えるので、 全部の辺で展開していくと、結局2m (mは辺数)だけ項が出てくることに なり、1章の方法とだいたい同じくらいの手間になってしまうのである。

実際には、2章の計算例でも分かるように、途中でネットワークが非連結になったり、 簡単に計算できる形になり、すべて展開する必要はなくなることがあるのであるが、 そのような場面が常に効率のよい形で登場するかどうかは分からないのである。

それでは、別の方法でネットワーク信頼度を効率良く計算する方法はないのだろうか?

実はその答えは否定的である。 これを説明するためには、計算の効率とはどのような概念か、 計算が困難であるとはどのようなことか、などを説明する必要があり、 そのためには、「計算量(computational complexity)の理論」を勉強しなくてはならない。 ここでは説明はしないが、計算量の理論とは、 簡単に書いてしまうと、その問題を解くためにどのくらいの基本的な演算を必要とするか、 というようなことを議論するものである。 例えば、コンピュータ上でその計算をするプログラムを書いた時に、理論上どのくらいの時間で計算できるプログラムを書けるのか、というようなことである。 (注:時間だけでなく、必要なメモリのサイズを議論するのも計算量の理論に含まれる。) 計算量の理論における用語で書くと、 ネットワーク信頼度の計算は、「#P-完全」(#P-complete、「#P」は「シャープピー」または「ナンバーピー」と読む)と呼ばれる問題のクラスに属することが知られており、 このクラスに属する問題には、効率のよい計算法はおそらく存在しないものと考えられている。 つまり、ある程度規模の大きいネットワークに関しては、ネットワーク信頼度を計算するのは困難な問題なのである。


<4章へ | 目次 | 6章へ>