【理解】組合せの数学的解説

組合せの定義と意味について

$\displaystyle {}_n \mathrm{C}_r =\binom{n}{r} := \frac{n!}{(n-r)! \cdot r!}$

定義(順列)

自然数 $n$ と $r$ $(1 \leqq r \leqq n)$ に対して, 順列 ${}_n\mathrm{C}_r$ を

$\begin{aligned}
{}_n\mathrm{C}_r &= \frac{n!}{r!(n-r)!} \\
&= \frac{n \cdot (n-1) \cdot \cdots \cdot (n-r+1)}{1 \cdot 2 \cdot \cdots \cdot r}
\end{aligned}$

と定める.

たとえば,

${}_5\mathrm{C}_1$ $=\frac{5}{1}$ $=5$,

${}_5\mathrm{C}_2$ $=\frac{5 \cdot 4}{1 \cdot 2}$ $=10$,

${}_5\mathrm{C}_3$ $=\frac{5 \cdot 4 \cdot 3}{1 \cdot 2 \cdot 3}$ $=10$

です。

Column. 組合せ ${}_n\mathrm{C}_r$ の意味
※ ${}_n\mathrm{C}_0 = 1$
※ ${}_0\mathrm{C}_0 = 1$

階乗、順列と組合せで $0!$, ${}_n\mathrm{P}_0$, ${}_n\mathrm{C}_0$ ナゼ 1 であるのかを確かめましょう。

順列の計算記号と組合せの計算記号の考え方を、「順列と組合せ」の意味を通して理解すること、文字の定義域として許される値を正確にきちっと整理する、が目標です。

階乗と順列、組合せの意味が分かる!

階乗と順列、組合せの定義式と意味

場合の数の単元は、並べたり選んだりする単元です。何を並べたり選んだりするかによって単位が変わります。今回は「人」を並べたり選んだりすることに統一します。

階乗(factorial)

階乗とは、$n \geqq 1$ としたときの、

$$n! = n \times (n-1) \times \cdots \times 2 \times 1$$

のことです。

中学校で学ぶ樹形図の考え方を思い出せば、$n!$ は、

$n$人の人物が並ぶときの並び方の総数

という意味になります。

$$n! = n \times (n-1) \times \cdots \times 2 \times 1$$

順列(permutation)

順列とは、次のように並べることを言います。

何人かの中から、数人選び、並べること

これが順列の意味です。

この並べ方を計算式にしましょう。

$n$ 人の中から、$r$ 人を選び並べる場合の数を求めるときは、

$$\frac{n!}{(n-r)!}$$

という計算になります。この計算式は ${}_n {\mathrm P}_r$ という記号で表します。

また、これは次のようにもなります。

$$n \times (n-1) \times \cdots \times (n-r+1)$$

$${}_n {\mathrm P}_r = \frac{n!}{(n-r)!}=n \times (n-1) \times \cdots \times (n-r+1)$$

組合せ(Combination)

組合せとは、次のように選ぶことを言います。

何人かの中から、数人選ぶこと

これが組合せの意味です。

この選び方を計算式にしましょう。

$n$ 人の中から、$r$ 人選ぶことの場合の数を求めるときは、

$$\frac{n!}{(n-r)! \times r!} = \frac{{}_n{\mathrm P}_r}{r!}$$

という計算になります。この計算式は ${}_n {\mathrm C}_r$ という記号で表します。

また、これは次のようにもなります。

$$\frac{n \times (n-1) \times \cdots \times (n-r+1)}{1 \times 2 \times \cdots r}$$

$$\begin{aligned}
{}_n {\mathrm C}_r & \displaystyle = \frac{{}_n{\mathrm P}_r}{r!} \\
& \displaystyle =\frac{n!}{(n-r)! \times r!} \\
& \displaystyle =\frac{n \times (n-1) \times \cdots \times (n-r+1)}{1 \times 2 \times \cdots \times r} \\
\end{aligned}$$

この順番にしっかりと注意しておいてください。

階乗と順列、組合せの定義式の条件の注意

何か気にしていないことに気付かないでしょうか?

そうです。$n$ と $r$ の条件を決めていません。階乗の式は、$1 \leqq n$ の自然数と定めましたが、他の式はどうでしょうか?

全ての式を俯瞰して、条件を吟味しましょう。

  • 全ての公式に、$n!$ がある→全ての公式で $1 \leqq n$ である
  • 順列の公式は、$r=n$であると、分母に $0!$ が現れる→ $r < n$ が必要である(この時点では、なんと ${}_n {\mathrm P}_n$ の計算は定義式から導けない!)
  • 組合せの公式は、$r=n$ や $r=0$ であると、分母に $0!$ が現れる→ $0 < r <n$ が必要である(この時点では、なんと ${}_n {\mathrm C}_n$ の計算は定義式から導けない!)

実は、この段階では、$0!$ や ${}_n {\mathrm P}_n$, ${}_n {\mathrm P}_0$ , ${}_n {\mathrm C}_n$, ${}_n {\mathrm C}_0$ の値は定義の公式から導くことができません。

これでは困りますね。。←なぜ、困るでしょうか?

例えば、${}_n {\mathrm C}_n$ という $n$ 人全員を選ぶ計算が同じ式で出来ません。

${}_n {\mathrm P}_n$ と $n!$ の意味

公式の意味を考えて、$0! = 1$ 等を作っていきましょう。

まず、${}_n {\mathrm P}_n$ と $0!$ からです。

順列の公式は、$1 \leqq n$ かつ $1\leqq r < n$ のとき、

$${}_n {\mathrm P}_r = \frac{n!}{(n-r)!}$$

でした。

$r=n$ のとき $\displaystyle {}_n {\mathrm P}_n = \frac{n!}{0!}$ となってしまいます。

${}_n {\mathrm P}_n$の数式を計算するのではなく、「意味」を使います。

$n$ 人の中から $n$ 人を選び、並べる総数

$n!$ の意味も同じく次の意味でした。

$n$人の人物が並ぶときの並び方の総数

この意味に沿うように数式の値を決めます!

${}_n {\mathrm P}_n$ と $n!$ は同じものだから、$$n! = \frac{n!}{0!}$$ です。

この式から、$0! = 1$ と定めないと、整合性が保てないことになります。

$0 \leqq n$ のときの $n!$ と、$1 \leqq n$ と $1 \leqq r \leqq n$ のときの ${}_n {\mathrm P}_r$ を定めることができました。

意味も理屈も何も矛盾しないようにするためには、数式の中に登場する $0!$ を $1$ と解釈することが必要になります。

$0! = 1$ という式は「ゼロとビックリマークとイチ」という数字の関係ばかり見ていると全く理解できない式です。ただ、「順列の意味」を見てあげると完璧な数式と見えるようになります。

${}_n {\mathrm P}_0$ の意味

$0!=1$という式を手に入れました。$r=0$ として、${}_n {\mathrm P}_0$ を考えましょう。

$${}_n {\mathrm P}_0 = \frac{n!}{(n-0)!} = \frac{n!}{n!} = 1$$

となり、なんの疑問もなく計算できます。だから、${}_n {\mathrm P}_0=1$ です。

次に、${}_n {\mathrm P}_0=1$ の意味を考えます。

そもそも ${}_n {\mathrm P}_0=1$ に意味なんてあるのでしょうか?

$n$ 人の中から、誰も選ばずに、並べる場合の数の総数は「1」通り

つまり、何も選ばないという場合の1通りが ${}_n {\mathrm P}_0$ の計算結果と合致しています。

${}_n {\mathrm P}_0$ は「計算的」にも「順列の意味的」にも「1」が妥当と分かりました。

$1 \leqq n$ と $0 \leqq r \leqq n$ のときの ${}_n {\mathrm P}_r$ を定めることができました。

${}_n {\mathrm C}_n$ と ${}_n {\mathrm C}_0$ との意味

$0! = 1$ を使って、${}_n {\mathrm C}_n$ の値も ${}_n {\mathrm C}_0$ の値も計算しましょう。

ただし、$1 \leqq n$ かつ $0 < r < n$ でした。

$${}_n {\mathrm C}_n = \frac{n!}{n!(n-n)!} = \frac{n!}{n! \times 0!} = 1$$

$${}_n {\mathrm C}_0 = \frac{n!}{0!(n-0)!} = \frac{n!}{0! \times n!} = 1$$

すなわち、${}_n {\mathrm C}_n = {}_n {\mathrm C}_0 =1$ が得られます。

これより、組合せの ${}_n {\mathrm C}_r$ も、$1 \leqq n$ で $0 \leqq r \leqq n$ のときに定めることができました。

さて、この計算結果は、組合せの意味と合致しているでしょうか?

$n$ 人の中から $n$ 人を選ぶことは、全員を選ぶという意味で「1」通りだけ

したがって、${}_n {\mathrm C}_n$ の計算結果と、組合せは合致しています。

$n$ 人の中から $0$ 人を選ぶことは、誰も選ばないという意味で「1」通りだけ

こちらも、${}_n {\mathrm C}_0$ の計算結果と、組合せは合致しています。

階乗と順列、組合せの意味と計算のまとめ

階乗の $0! = 1$ という式は、計算で自動的に求まるのではありません。

階乗や順列、組合せの公式は、元来の意味を合わせて考慮することで、${}_n {\mathrm P}_r$ も ${}_n {\mathrm C}_r$ も便利な公式になるのです。

不思議な式ですが、意味と数式の整合性を保つことから、$0! = 1$ が決まります。

$0!=1$ が自然な式としか思えなくなります。

今回は、$n=0$ のときの、${}_0 {\mathrm P}_0$ と ${}_0 {\mathrm C}_0$ の計算はしていませんが、是非自分で考えてみてください。

ここまで、お読みいただき、ありがとうございます。

組合せに関する公式について

$\displaystyle {}_n \mathrm{C}_r = {}_n \mathrm{C}_{n-r}$

No content available

$\displaystyle {}_{n+1} \mathrm{C}_{r+1} = {}_n \mathrm{C}_{r} + {}_n \mathrm{C}_{r+1}$

No content available

$\displaystyle {}_{n+1} \mathrm{C}_{r+1} = \frac{n+1}{r+1} {}_n \mathrm{C}_{r}$

No content available

応用的な並べ方について

[重複組合せ]$n$ 種類のものから $r$ 個を選ぶ際, 同じものを重複しても良いときの組合せの総数

$\displaystyle {}_n \mathrm{H}_r = {}_{(n-1)+r} \mathrm{C}_r$ (通り)

No content available

具体的な並べ方について

[部屋分け]$n$ 人を, $x$ 個の部屋に $s_1$ 人, $s_2$ 人, $\cdots$, $s_x$ と分ける分け方

${}_n\mathrm{C}_{s_1} \cdot {}_{n-s_1}\mathrm{C}_{s_2} \cdots {}_{n-s_1-s_2-\cdots s_{x-1}}\mathrm{C}_{s_x}$ (通り)

[例]

[グループ分け]$n$ 人を $s_1$ 人, $s_2$ 人, $\cdots$, $s_x$ 人ずつの $x$ 個のグループに分ける分け方

$(\text{部屋分けの分け方の総数})$ $\div \{(\text{同じ人数のグループ数})! (\text{同じ人数のグループ数})! \cdots\}$ (通り)

[例]9人をA, B, Cの部屋に分ける場合は

${}_9 \mathrm{C}_3 \cdot {}_6 \mathrm{C}_3 \cdot {}_3 \mathrm{C}_3$ (通り)

である。

部屋の区別をなくす必要があり, それは $3!$ だけある。

したがって, グループ分けの総数は

${}_9 \mathrm{C}_3 \cdot {}_6 \mathrm{C}_3 \cdot {}_3 \mathrm{C}_3$ $\div 3!$

である。

【コード】Pythonで組合せの計算

組合せmath.comb()の出力

組合せの値をPythonで計算してみよう。

組合せの値

数学の関数を利用するためにmathモジュールを利用する。

組合せはmath.comb()関数を利用する。${}_n \mathrm{C}_r$ を計算する場合は, comb(n, r)とする。

Pythonコード入力例. ${}_{10} \mathrm{C}_4$ の値を出力する。

import math
print(math.comb(10,4))

まとめノート

「組合せ」とは

いくつかのものからいくつかを選ぶ選び方のこと。

定義

$\displaystyle \binom{n}{r} = {}_n \mathrm{C}_r = \frac{n!}{(n-r)! \cdot r!}$

$\displaystyle = \frac{n \cdot (n-1) \cdots (n-r+1)}{1 \cdot 2 \cdot 3\cdots (r-1) \cdot r}$. ここで, $n$ と $r$ は $r \leqq n$ を満たす自然数である.

A. 組合せの計算の意味

$n$ 個のものから $r$ 個を選ぶ組合せの総数は ${}_n \mathrm{C}_r$ に一致する.

B. 重複組合せ

$n$ 種類のものから $r$ 個を選ぶ際, 同じものを重複してもよいときの組合せの総数は ${}_{n}\mathrm{H}_r={}_{(n-1)+r}\mathrm{C}_r$ に一致する.

C. 組合せの性質

①${}_n \mathrm{C}_r = {}_n \mathrm{C}_{n-r}$

②${}_{n+1} \mathrm{C}_{r+1} = {}_{n} \mathrm{C}_{r} + {}_{n} \mathrm{C}_{r+1}$

③${}_{n+1} \mathrm{C}_{r+1} = \frac{n+1}{r+1} \cdot {}_{n} \mathrm{C}_{r}$

D. 部屋分け・グループ分け(例)

  1. $9$人をA, B, Cの部屋に分ける場合:${}_9 \mathrm{C}_3 \times {}_6 \mathrm{C}_3 \times {}_9 \mathrm{C}_3$ 通り
  2. $9$人を $3$人ずつ $3$つのグループに分ける場合:$(1) \div 3!$ 通り

ポイント解説

注意

${}_n \mathrm{C}_0 = \frac{n!}{n! \cdot 0!} = 1$ より

${}_n \mathrm{C}_0=1$

である. 特に,

${}_0 \mathrm{C}_0=1$

である.

A

$4$個のものから $3$個を選ぶ場合;順列の総数 ${}_4 \mathrm{P}_3 = 24$ 通りのうち, $3!$ 通りずつが同じ組合せなので, ${}_4 \mathrm{P}_3/3!={}_4 \mathrm{C}_3$.

B

$2$種類のものから $3$個を選ぶ場合;選ぶ $3$個の種類を $2-1=1$つの仕切りで区別する ${}_{3+1}\mathrm{C}_2$ 通りに一致する.

D

(1) $9$人からAの $3$人を選び, 残りの $6$人からBの $3$人を選び, 最後の $3$人をCに入れる計算. (2) 部屋の区別をなくせばよいので, 部屋の選び方の総数 $3!$ で割る.

発展

ベータ関数 $\mathrm{B}(z,w)$ は2変数関数で $\mathrm{B}(n-r, r)=\frac{\Gamma(n-r)\Gamma(r)}{\Gamma(n)} = \frac{1}{{}_n\mathrm{C}_r}$ を満たすので, 組合せの拡張と言われる.

コメントを残す