下図のような5点 A, B, C, D, E と線分がある。動点 P は、はじめ点 A にいて、毎秒、辺によって結ばれている隣の点の一つを無作為に選んで移動する。 n 秒後に P が A にいる確率 a(n) を求めよ。 [A] ー [B] \ / [C] / \ [D] ー [E] この問題を解くことができるC言語プログラムソースコードを教えてください。 ヒントとして例えば、ある点からある点に移動できるかどうかを2次元の配列で表現すると、 #define N 5 int path[N][N] = { { 0, 1, 1, 0, 0 }, // A から、A, B, C, D, E へ移動できるかどうか { 1, 0, 1, 0, 0 }, // B から、A, B, C, D, E へ移動できるかどうか { 1, 1, 0, 1, 1 }, // C から、A, B, C, D, E へ移動できるかどうか { 0, 0, 1, 0, 1 }, // D から、A, B, C, D, E へ移動できるかどうか { 0, 0, 1, 1, 0 } // E から、A, B, C, D, E へ移動できるかどうか }; となる。行ごとに「1」の数を数えてその数で割れば確率になる。重みが違うなら、実数配列にして重みを直接入れたっていい。 あるいは、もっと簡単に、 double A(…)、B(...)、... という関数を作っておいて、Aの中で B(…) + C(…) を呼ぶとか、いろいろ考えられます。 と与えられています。