データ構造における二項分布
二項分布は、N個のベルヌーイトレイルからn個の成功を取得する離散確率分布Pp(n | N)です(x=0およびx=1でラベル付けされた2つの可能な結果があります。x=1は成功であり、x =0は失敗。成功は確率pで発生し、失敗は確率qでq =1 – pとして発生します。)したがって、二項分布は次のように記述できます。
$$ P_ {p} \ lgroup n \:\ arrowvert \ N \ rgroup =\ left(\ begin {array} {c} N \\ n \ end {array} \ right)p ^ {n} \ lgroup1-p \ rgroup ^ {N-n} $$
例
#include <iostream> #include <random> using namespace std; int main(){ const int nrolls = 10000; // number of rolls const int nstars = 100; // maximum number of stars to distribute default_random_engine generator; binomial_distribution<int> distribution(9,0.5); int p[10]={}; for (int i=0; i<nrolls; ++i) { int number = distribution(generator); p[number]++; } cout << "binomial_distribution (9,0.5):" << endl; for (int i=0; i<10; ++i) cout << i << ": " << string(p[i]*nstars/nrolls,'*') << endl; }
出力
0: 1: * 2: ****** 3: *************** 4: ************************* 5: ************************ 6: **************** 7: ******* 8: * 9:
-
データ構造の最小スパニングツリー
スパニングツリー は、最小数のエッジで接続されたすべての頂点を持つ無向グラフのサブセットです。 すべての頂点がグラフで接続されている場合、少なくとも1つのスパニングツリーが存在します。グラフには、複数のスパニングツリーが存在する場合があります。 最小スパニングツリー 最小スパニングツリー(MST) は、接続された重み付き無向グラフのエッジのサブセットであり、すべての頂点を可能な限り最小の合計エッジ重みで接続します。 MSTを導出するには、プリムのアルゴリズムまたはクラスカルのアルゴリズムを使用できます。したがって、この章ではプリムのアルゴリズムについて説明します。 すでに説明したように、
-
データ構造における二分木表現
ここでは、コンピュータのメモリでバイナリツリーを表現する方法を説明します。表現するには2つの異なる方法があります。これらは配列とリンクリストを使用しています。 このようなツリーが1つあるとします- 配列表現は、レベル順の方法を使用して要素をスキャンすることにより、ツリーデータを格納します。したがって、ノードをレベルごとに格納します。一部の要素が欠落している場合は、空白のままにします。上記のツリーの表現は以下のようになります- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 5