『コンピュータウィルスの感染』解答


◆神奈川県 T-KORP さんからの解答。

解答というより、単なる思いつきにすぎませんが、参考にしてみてください。
N→∞ のときの極限だけ求めてみます。

m、nを整数とする。
座標(m,n)にいる人がウィルスに感染している確率をP(m,n)と書くことにする。
このとき、P(m,n)は以下の条件を満たす。

m<0、n<0 のとき P(m,n)=0 ... (1)
P(0,0)=1 ... (2)、
P(m,0)=pm ... (3) (練習問題の結果より)
P(m,n)=p{P(m−1,n)+P(m,n−1)}−p2・P(m−1,n)・P(m,n−1) ... (4)

上の式より、P(m,n)=P(n,m) ... (5)

※余談 これらの条件から、P(m,n)を求めようと思ったのですが、
P(1,1)=p2(2−p2)、P(1,2)=p3(p5−2p3−p2+3)...となり、 収拾がつかなくなってしまいました。

ここで、m=n=Nとし、N→∞ とすると、
lim
N→∞
P(N,N)=lim
N→∞
P(N−1,N)=lim
N→∞
P(N,N−1) ... (6)

※ (6)式の最初の等号が成り立つ根拠が見つかりません。
検討をお願いします。

(6)の極限値が存在するものとして、その値をXとおく。
このとき、Xは確率なので、0≦X≦1 ... (7)

(4)の極限をとって、
lim
N→∞
P(N,N)=2p・lim
N→∞
P(N−1,N)−p2・{lim
N→∞
P(N,N)}2

X=2pX−p2X  
X(X− 2p−1
p2
)=0
よって、X=0 ... (8) または X= 2p−1
p2
... (9)
(9)は、p< 1
2
のとき、条件(7) を満たさない。

よって答えは、p< 1
2
のとき 0、 1
2
≦p≦1 のとき 2p−1
p2
... (10)


※ ↑の議論も飛躍していますが、以上である程度の方向性は示せたのではないかと思います。
ちなみに、Excelでシミュレーションしてみたところ、
p= 1
2
付近を除くいくつかの値で、P(250,250)で(10)と一致しました。
また、p= 1
2
のときは、P(248,248)>P(249,249)>P(250,250)だったので、
おそらく0に収束すると思います。


◆出題者のコメント。

T-KORPさん、解答ありがとうございます。
(4)の漸化式ですが、私も最初はこの方針で解こうと思いました。

しかし、P(m−1,n)とP(m,n−1)が独立事象なのかどうかが自明ではないと思い、別の解き方を模索している次第です。

なぜなら点(m−1,n)と点(m,n−1)に感染する仕方は感染経路に依存し、それらの結果はお互いに干渉するからです。
T-KORPさんの見解はいかがでしょうか?

(5) は対称性から成り立つと思います。
(6)はご指摘の通り、私も成り立つかどうか自信がありません。


◆愛知県 Y.M.Ojisan さんからの解答。

感染している率を D(n,m) とすると、つぎの漸化式で計算することができます。

 D(n,m)=D(n,m-1)*p+D(n-1,m)*p-D(n,m-1)*D(n-1,m)*p2

しかし、閉じた形式で表記することは難しく、あきらめました。

【プログラム問題】

 下図はシミュレ−ションを行った結果です。
左下隅がD(1,1)=1で 赤:100% 青:0% です。
(プログラムを下段に添付します。)

 D(n,n)はpの値によりある一定の値に収束し
 P≦0.5では0に
 P>0.5では一度下がった後  2p-1
p2
に収束しています。(黒線)

 pの値により感染率が高くなるだけでなく、広がりの角度が変化しかつ最終的に直線になるところが不思議です。  

p=0.75 N=M=100 p=0.5 N=M=100 p=0.52 N=M=200 p=0.6 N=M=30


プログラムリスト(freeの 10進BASICで記述。 )  

pとN=Mをキー入力します。


◆出題者のコメント。

Y.M.Ojisanさん、解答ありがとうございます。
T-KORPさんへのコメントにも書きましたが、D(n,m-1)とD(n-1,m)が独立事象なのかどうかが分からず困っている次第です。
ご教授頂けると幸いです。

しかし、極限値はT-KORPさんが導き出した答えと一致するようですね。

私にはシミュレーション環境がないので、Y.M.Ojisanさんの出された結果は正直予想外のものでした。
自分で出題しておいて言うのも情けない話なのですが、ビックリしています。

時間のある時にY.M.Ojisanさんの作られた問題や解答を色々拝見しましたが、 どれもハイレベルで私など足元にも及ばないものばかりでした。

そのような方に問題を考えて頂き光栄です。
これからも仕事の息抜きにこのような問題を考えられたらと思います。
今後ともお願い致します。


◆神奈川県 T-KORP さんからのコメント。

独立事象かどうかについては全く考えませんでした。

単純に、点(m,n)について考えるとき、

[A] 点(m−1,n)から(確率pで)感染する
[B] 点(m,n−1)から(確率pで)感染する

の2パターンが独立事象かどうかが問題であって、 2点が干渉しているかどうかは関係ないのではないかと思います。


◆愛知県 Y.M.Ojisan さんからのコメント。

ご懸念のとおり、D(n-1,m)とD(n,m-1)は独立事象ではありませんね。
迂闊でした。

【モンテカルロ法】

 下図はモンテカルロ法でシミュレ−ションを行った結果です。
左下隅がD(1,1)=1で 赤:100% 青:0% です。
独立事象とした場合に比べて、感染率は低く 感染領域の角度も狭くなるようです。
なお、モンテカルロ法なのでどうしてもガタガタします。

黒線の上の数値は 2p-1
p2
で、下の数値がシミュレ−ション結果です。

精度は保証できませんが。

因みにp=0.7 N=6 の値を厳密に計算すると 0.607911ぐらいですが 0.608を得るのに200000回の試行が必要でした。
20000回では0.612でした。

p=0.75 N=M=100 20000回 p=0.9 N=M=100 2000回 p=0.52 N=M=100 2000回 p=0.6 N=M=30 200000回


◆東京都 建築家 さんからのコメント。

独立事象であるかどうかは1つのコンピュータが何度もウィルスに感染するかそれとも1度きりであるかによると思われます。
コンピュータが何度もウィルスに感染する場合は,T-KORP さんの方針で良いかと思います。

この時P(m,n)の漸化式を

P(m,n)=P(1,0)・P'(m−1,n)+P(0,1)・P''(m,n−1)−p2・P'(m−1,n)・P''(m,n−1)
(ただしP'(i,j)=P(i,j)は原点をずらした時の確率。)

として1ステップ進んだ場合から定義すると理解しやすいと思います。

問題文からはどちらともとれそうですがステップが一斉に行われる(ウィルスが同時刻に伝播される)と考えると後者でしょうか。
1つのコンピュータが1度しかウィルスに感染しない場合は独立ではなくなり複雑になると予想されます。
(P'(m−1,n)とP''(m,n−1)の経路の重なる部分で干渉し合う。)


 『コンピュータウィルスの感染』へ

 数学の部屋へもどる