MathJaxで数式をキレイに表現する・その5(順列と組合せ)

MathJaxで数式をキレイに表現する・その5(順列と組合せ)

MathJaxの使いかたを覚えながら数式アレルギーを克服。目指すは機械学習を活用したデータ解析です。 今回はMathJaxを使って順列と組合せを表現します。

MathJaxで順列と組合せを表現



順列と組合せ使った数式



permutation(順列)
\[{}_n \mathrm{ P }_r\]
{}_n \mathrm{ P }_r
n個のものからr個を選ぶ選び方。順番を区別します。



combination(組合せ)
\[{}_n \mathrm{ C }_r\]
{}_n \mathrm{ C }_r
n個のものからr個を選ぶ選び方。順番は区別しません。



Pythonで順列と組合せを求める

Pythonでは「itertools」を利用すると、順列と組合せが簡単に求められます。


In [1]:
import itertools

# 3個を並べる順列 :3P3

items = ['A', "B", "C"]
perm = list(itertools.permutations(items))
print(perm)
print(len(perm))
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
6
In [2]:
import itertools

# 3個から2個選んで並べる順列 :3P2

items = ['A', "B", "C"]
perm = list(itertools.permutations(items, 2))
print(perm)
print(len(perm))
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
6
In [3]:
import itertools

# 同じものを含む順列はsetで重複を削除します。

items = ['A', "B", "B"] # BとB
perm = list(set(itertools.permutations(items)))
perm.sort()
print(perm)
print(len(perm))
[('A', 'B', 'B'), ('B', 'A', 'B'), ('B', 'B', 'A')]
3


In [1]:
import itertools

# 5個から3個を選ぶ組合せ(順序を区別しない) :5C3

items = ['a', "b", "c", "d", "e"]
comb = list(itertools.combinations(items, 3))
print(comb)
print(len(comb))
[('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'b', 'e'), ('a', 'c', 'd'), ('a', 'c', 'e'), ('a', 'd', 'e'), ('b', 'c', 'd'), ('b', 'c', 'e'), ('b', 'd', 'e'), ('c', 'd', 'e')]
10
In [2]:
import itertools

# 同じものを含む5個から3個を選ぶ組合せ(順序を区別しない)

items = ['赤', '赤', "白", "白", '白']
comb = list(set(itertools.combinations(items, 3))) #setで重複を削除する
print(comb)
print(len(comb))
[('赤', '白', '白'), ('白', '白', '白'), ('赤', '赤', '白')]
3


今回からJupyter Notebookで作成したデータを利用しています。HTMLに自動変換したコードをそのまま記事に貼れるため大変便利です。




もものきロゴ

スポンサーリンク

0 件のコメント :

コメントを投稿