- ベストアンサー
特定の配列がいくつ現れるか(期待値の計算)
DNAの話なのですが、4つの異なる文字が3×10^9個の1次元配列にランダムに納まっているとします。どの文字も同様に確からしく出現するとして、ある特定の10文字の配列と同じ10文字の配列が、この3×10^9個の配列の中に何ヶ所出現するかを求めたいのです。 1ヶ所も現れない確率、1ヶ所だけ現れる確率、2ヶ所現れる確率…、と求めて行き、最後に期待値を出そうと考えています。確率の漸化式を立てて一般項P(n)を求めてからn=0~3×10^9までΣnP(n)を計算するという方針ですが、式が立てられず悩んでいます。 数字が大きいので端のことなどはあまり気にしなくても良いのですが、ものすごく複雑になりそうに思います。それとも簡単な方法があるのでしょうか。
- ondy
- お礼率94% (66/70)
- 数学・算数
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
すいません。肝心の漸化式が全然、間違ってますね。 K(n) = Σ_{j=10→19} P*{K(n-j)+1} + (1-P)*K(n-j) です。
その他の回答 (3)
- rabbit_cat
- ベストアンサー率40% (829/2062)
出現回数ではなくて、文字列の長さで漸化式をたてたほうがいいと思う。 >特定の10文字の配列は >5'GGCCACAGCG3' >です。 この場合は、重なって出現することはないんで簡単です。 長さnの文字列にこの10文字が平均K(n)回出現するとすると、長さnの文字列の先頭部分に、この10文字が現れるかどうかに注目すれば、 P = (1/4)^10 として、 K(n) = P*K(n-10) + P*K(n-11) + … + P*K(n-19) と書けます。 あとは、K(1)~K(19)を地道に求めればよい。
お礼
そうですね。5'GGCCACAGCG3'では重なることはありませんね。一般の場合ばかり考えていて気づきませんでした。 文字列の長さで漸化式を立てるという考え方もあったのですね。 ありがとうございます。
- murakkusu
- ベストアンサー率22% (5/22)
あまり自信はありませんが・・・ 10個の1次配列に、ATGCの組が何個あるかについて考えてみました。 【第1ステップ】 まず、ATCGが1つだけある場合を考えると、 ATCG○○○○○○ ・・・(1) ○ATCG○○○○○ ・・・(2) ○○ATCG○○○○ ・・・(3) ○○○ATCG○○○ ・・・(4) ○○○○ATCG○○ ・・・(5) ○○○○○ATCG○ ・・・(6) ○○○○○○ATCG ・・・(7) という風に、7通り(10-4+1通り) 【第2ステップ】 他の○のところに、ランダムに他の4つが入るとしたら、それぞれの○に4通りある。○が6個あるから、4^6になる。 んで、 7×4^6 【第3ステップ】 ここから、○6個の中に、ATGCが出てきてしまう場合を引く必要がある。 ATGCの左と右にそれぞれいくつできるかを考える。さっき、7通り考えたように数える。負の数が出たら存在しないとする。 (1)の場合、 左:0-4+1=無 右:6-4+1=3 (2)の場合、 左:1-4+1=無 右:5-4+1=2 (3)の場合、 左:2-4+1=無 右:4-4+1=1 (4)の場合、 左:3-4+1=0 右:3-4+1=0 (5)の場合、 左:4-4+1=1 右:2-4+1=無 (6)の場合、 左:5-4+1=2 右:1-4+1=無 (7)の場合、 左:6-4+1=3 右:0-4+1=無 合計 12個 よって、10個の配列にATGCが一つある場合の数は 7×4^6-12 となる。 これを、拡張すればできそう・・・ n個の配列にm個の組が1つある場合を考える。 【第1ステップ】 n-m+1 【第2ステップ】 n-m個にATGCを入れる 4^(n-m) 【第3ステップ】 1 右:0-m+1 左:(n-m)-m+1 2 右:1-m+1 左:(n-m-1)-m+1 3 右:2-m+1 左:(n-m-2)-m+1 ・・・ x 右:x-1-m+1 左:(n-m-(x-1))-m+1 ・・・ n-m-1 右:(n-m-2)-m+1 左:3-m+1 n-m 右:(n-m-1)-m+1 左:2-m+1 n-m+1 右:(n-m)-m+1 左:1-m+1 何番目まで有効か? 左について考えると、 (n-m-(x-1))-m+1=0 になる所まで x=n-2m+2 番目まで それらの合計は、初項0、公差1の等差数列のx項までの和になるので、 Σ(k=1~x)k=1/2x(x+1) 右も考えると、 x(x+1) 通りになる 以上より、1組だけある場合の場合の数は (n-m+1)×[4^(n-m)}-x(x+1) 通り となりそうだ。 考え方、あってるかわからない。計算ミスもしてるかもしれない。 2組以上ある場合は、同様に考えれる? やってないからわかりません。 多分、考えれると思います。
お礼
詳しく回答していただいてありがとうございます。特定の配列のある場所が一ヶ所のときの場合が求まっても、一般にnヶ所のときの確率が求まらないと期待値が求められないのです。 でもこの考え方は参考にさせていただきます。ありがとうございます。
- murakkusu
- ベストアンサー率22% (5/22)
答えではないです。 例えば、4つの異なる文字(A,T,G,C)が”5”の1次元配列にランダムに納まってる問題にして。 2文字の配列が、何個できるかを考えたとき。 AAAAA という、5つの1次元配列なら、何個できてると考えるのですか? 考えようによっては、2つ 4つ となってしまう。 もしくは AAAGT とかだったら? これが、わかっても解ける自信はありませんが、一応。
お礼
おはようございます。回答ありがとうございます。 条件が漏れてしまい申し訳ありませんでした。 特定の配列が、DNAのある場所で2つ以上重なった形で存在したときは重なったものはカウントしません。 たとえば AAAAA という5文字の配列に AA という二文字の特定の配列は2つ存在すると考えます。 特定の10文字の配列は 5'GGCCACAGCG3' です。
関連するQ&A
- 3次元配列を1次元配列に
例えば2次元配列だと, array[row*i+j] = a[n]; といったように1次元に直すことができますよね? 同様に3次元配列を1次元配列にしたい場合には arrayの中はどのような式をつかえばいいのでしょうか。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 分母に文字を含む漸化式について
An+1=2An+1/n (2Anと1/nです) 上記の漸化式から一般項を求めるにはどうすればいいのでしょうか? 分母に文字を含まない場合は、等比数列の形になるように係数に文字を置き、それを展開して元の漸化式と係数を比較して係数を求めているのですが、分母に文字が入ってくると、とたんに解けなくなります。 上記の漸化式に限らず、分母に文字を含む漸化式から一般項を求める際の決まった手順などありましたら、そちらもご教授下さい。 よろしくお願い致します。
- 締切済み
- 数学・算数
- DNAプローブの長さとは?
ヒトゲノム中(30億bp)でランダム配列と仮定した場合、ある特定の配列(長さn塩基)が2度出現する確率が100分の1以下になるには n≧□塩基 このようなほぼ確率の問題なのですが、nが何塩基以上でこの確率の条件を満たすのか求める問題です。 式などを含めた求め方が、わかる方がいましたら教えてください。 (ちなみに答えは16or17塩基程度になるそうです)
- ベストアンサー
- 生物学
- 二項分布の期待値の計算過程
二項分布の期待値を計算しています。 https://mathtrain.jp/bin の中の E[X] = np Σ[k=1, n] n-1 C k-1 p^(k-1) q^(n-k) = np Σ[k=0, n-1] n-1 C k p^k q^(n-1-k) の計算過程を教えて下さい。 この計算の間に k=1 ⇒ k=0 n ⇒ n-1 が変わっています。 それらを一つずつ変更できますでしょうか? 意味は半分わかっているつもりです。 k=1からnだったのが k=0からn-1になったので、 配列が一つズレた印象です。 二行目はn-1に括弧を付けると np Σ[k=0, n-1] n-1 C k p^k q^{(n-1)-k} だと思っています。 ではよろしくお願いします。
- ベストアンサー
- 数学・算数
- 隣接n項間漸化式の解き方
隣接3項間の漸化式の解き方は高等学校数学で学習しますが,4項間,5項間,更にはn項間となった場合についてはどうなるのですか。 漸化式の解き方についてどこかで既にまとめられていますでしょうか。
- ベストアンサー
- 数学・算数
- 以下のような、漸化式が2次式の場合ってどう計算したらいいのでしょうか?
以下のような、漸化式が2次式の場合ってどう計算したらいいのでしょうか? 以下の漸化式で表される数列a(n)の一般項を言いなさい。 a(1)=9/5,a(n+1)={a(n)}^2-5/2*a(n)+3 特性方程式でやってみたり、移項したり因数分解したり平方完成もしてみたのですが、 うまくいきません。
- 締切済み
- 数学・算数
- 別次元配列への文字コピー
別次元配列への文字コピー(not文字列)をする際特別な制約ってありますか? 2次元配列から1次元配列への文字コピー 1次元配列から2次元配列への文字コピー などなど for(i=0,n=0;n<TEISU1;n++){ for(m=0;m<TEISU2;m++,i++){ strcpy(&ABC[m][n],&DEF[i]); printf(" i%d n%d m%d %c %x\n",i,n,m,ABC[m][n],DEF[m][n]); // ★★★★★↑この時点では正しく出ているが } } /**/printf("%s\n",ABC); // ★★★★★↑この時点では出力内容がおかしくなっている 原因がさっぱりわかりません。 原因はどういった事が考えられますか?
- ベストアンサー
- C・C++・C#
- 確率・期待値
1つの細胞が、ステップ毎に、確率pで2つに分裂し、確率1-pで死滅するモデルを考えます。 n世代での細胞数がmである確率をP(Xn=m)と表すと 第0世代の生物数を1として 第1世代ではP(X1=2)=p、P(X1=0)=1-p 第2世代ではP(X2=4)=p^3、P(X2=2)=2(p^2)(1-p)、P(X2=0)=1-2(p^2)+(p^3) などと表せることになりますが、一般のP(Xn=m)はどのように表されるのでしょうか? (漸化式のようなものを使って考えるのではないかと思うのですが、やってみたところとても煩雑になってしまい手が詰まってしまいました。漸化式以外のいい方法があるのでしょうか…) 教えてください、よろしくお願いいたします。
- ベストアンサー
- 数学・算数
お礼
回答ありがとうございます。 これは20項間漸化式になるということでしょうか。自分は3項間までしか解いたことがありません。