デジタル・デザイン・ラボラトリーな日々

アラフィフプログラマーが数学と物理を基礎からやり直す。https://qiita.com/yaju

順列と組合せを理解してみる-重複順列

はじめに

高校生の時に順列と組合せを学びました。公式と計算方法は覚えているのですが、きちんと理解していないので実践で組合せを考えても答えがすぐに導き出すことが出来ないんですね。

日曜日の「林先生が驚く初耳学」という番組の中で林修先生が「数学を理解することができれば見え方が変わるからもったいない。」と仰っていました。 例えば講演会の時などに参加者の方と一緒に写真を撮ることになり4人の方と写真を撮ることとなった場合、数学ができる人だと返す言葉が違う、全通り撮っても4人なのでたった15通りと計算することができる。数学を学んでいればそのことが一瞬で処理することができる、なので写真を撮ることは「そんなに大変なことじゃないですよ」と上手に解決することができる。他のケースでも応用することができる「どうせ多くても15枚だし」という考え方になるのでどれだけ写真を撮ってもOKですよと数学的思考がある人は日々の生活での解決法が違う」

私も林修先生のように組合せを瞬時にできるようになりたい。
先ずは重複順列をやります。

写真の組合せ

林先生と写真を撮りたい4人との組合せは全部で16通り。 写りたい人がそれぞれ「いる」か「いない」の2択が4人なので 2×2×2×2=16 全員いなかったら林先生の1ショットになるので(4人全員が「いない」という組合せになるため)その1は引くので(16-1)で15通りとなる。

組合せの基礎

学校で習ったのは、 _n P _r_n C _rn! です。写真の件は n^r - 1 ですよね。

丁度、記号の英語名を探していたら「LaTeXコマンド集」で見つけました。

  • 重複順列 (repeated permutation)
  • 順列 (permutation)
  • 組合せ (combination)
  • 重複組合せ (repeated combination)

重複順列

「同じものを繰り返し取ってよいという約束のもとで」できる順列を重複順列といいます。

参照 重複順列重複順列 nr

プログラマーなら二進数の問題が分かりやすいと思います。
問1:二進数は、2種類の記号0,1を並べて表現されます。2種類の記号0,1を合計3個使って作れる記号は何通りありますか?
答1:2 \times 2 \times 2 = 2^3 = 8 通りとなります。

問2:異なる3個の文字a,b,cから重複を許して4個取って並べる順列の総数は何通りありますか?
答2:3 \times 3 \times 3 \times 3 = 3^4 = 81 通りとなります。

デシジョンテーブル

参照:第5回 仕様整理に「デシジョンテーブル」を使ってみよう

重複順列が分かると下記3つの条件があった場合、条件はそれぞれ独立していて Y/N の2通りだと2 \times 2 \times 2 = 2^3 = 8通りとすぐに導き出してデシジョンテーブルExcelにさらっと書けるようになります。

  • クーポン持参
  • 平日割引
  • 平日シニア割引(65歳以上)

f:id:Yaju3D:20160630235211p:plain