この質問には天文学的な小さなものからほぼ100%に至るまでさまざまな回答が寄せられているため、改善されたソリューションの参考とインスピレーションとして役立つシミュレーションを提供したいと思います。
これらを「炎のプロット」と呼びます。それぞれが個別の世代で繁殖する集団内の遺伝物質の分散を文書化します。プロットは、人を描いた細い垂直セグメントの配列です。各行は世代を表し、最初の行が最上部にあります。各世代の子孫は、そのすぐ下の行にあります。
最初は、サイズ母集団の1人だけがマークされ、赤でプロットされます。(見にくいですが、常に一番上の行の右側にプロットされます。)直接の子孫も同様に赤で描画されます。それらは完全にランダムな位置に現れます。他の子孫は白でプロットされます。母集団のサイズは世代ごとに異なる可能性があるため、右側の灰色の境界線を使用して空きスペースを埋めます。n
これは、20の独立したシミュレーション結果の配列です。
これらのシミュレーションの9つで最終的に赤色の遺伝物質が消滅し、残りの11(55%)に生存者が残った。(あるシナリオでは、左下では、全人口が最終的に死亡したように見えます。)しかし、生存者がいたところでは、ほとんどすべての人口に赤い遺伝物質が含まれていました。これは、赤色遺伝子を含む最後の世代からランダムに選択された個人の可能性が約50%であることの証拠を提供します。
シミュレーションは、各世代の初めに生存率と平均出生率をランダムに決定することにより機能します。生存率はBeta(6,2)分布から得られます。平均75%です。この数値は、成人になる前の死亡率と子供がいない人の両方を反映しています。出生率はGamma(2.8、1)分布から取得されるため、平均は2.8です。結果は、一般的に高い死亡率を補うには不十分な生殖能力の残酷な話です。これは非常に悲観的で最悪のモデルを表していますが、(コメントで示唆したように)人口の成長能力は必須ではありません。各世代で重要なのは、人口内の赤の割合です。
繁殖をモデル化するために、現在の人口は、希望するサイズの単純なランダムサンプルを取得することにより、生存者に間引きされます。これらの生存者はランダムにペアリングされます(ペアリング後に残された奇数のサバイバーは再現できません)。各ペアは、平均が世代の出生率であるポアソン分布から引き出された多数の子を生成します。いずれかの親に赤いマーカーが含まれている場合、すべての子はそれを継承します。これは、いずれかの親を介した直接降下のアイデアをモデル化します。
この例は512の母集団から始まり、11世代(開始を含む12行)のシミュレーションを実行します。わずかから2 14 = 16 までの384人のこのシミュレーションのバリエーションは、生存率と出生率の異なる量を使用して、すべて同様の特性を示します:log 2(n )世代の終わり(9この場合)、すべての赤が消滅する可能性は約1/3ありますが、そうでない場合、人口の大部分は赤です。さらに2、3世代以内に、ほぼすべての人口が赤くなり、赤のままになります(または、人口が完全に死んでしまいます)。n=8214=16,384log2(n)
ちなみに、1世代で75%以下の生存率は空想的ではありません。1347年後半、腺ペストに感染したネズミは最初にアジアからヨーロッパへと進みました。次の3年間で、ヨーロッパの人口の10%から50%が死亡しました。ペストはその後数百年にわたってほぼ一世代に一度再発しました(通常、同じ極端な死亡率ではありませんでした)。
コード
シミュレーションはMathematica 8で作成されました:
randomPairs[s_List] := Partition[s[[Ordering[RandomReal[{0, 1}, Length[s]]]]], 2];
next[s_List, survive_, nKids_] := Flatten[ConstantArray[Max[#],
RandomVariate[PoissonDistribution[nKids]]] & /@
randomPairs[RandomSample[s, Ceiling[survive Length[s]]]]]
Partition[Table[
With[{n = 6}, ArrayPlot[NestList[next[#, RandomVariate[BetaDistribution[6, 2]],
RandomVariate[GammaDistribution[3.2, 1]]] &,
Join[ConstantArray[0, 2^n - 1], ConstantArray[1, 1]], n + 2],
AspectRatio -> 2^(n/3)/(2 n),
ColorRules -> {1 -> RGBColor[.6, .1, .1]},
Background -> RGBColor[.9, .9, .9]]
], {i, 1, 20}
], 4] // TableForm