LoginSignup
0
0

More than 3 years have passed since last update.

同じものを含む円順列 その4

Last updated at Posted at 2019-06-03

同じものを含む円順列 その4

最後に一般化して,どんな場合でもパッと確認できるように,コード化します。

一般化

友田 勝久さんがまとめているものを参考にしました。
http://www.osaka-kyoiku.ac.jp/~tomodak/report/junretsu2012.pdf

$S_1,\,S_2,\,\cdots,\,S_m$の$m$種類の球がそれぞれ$n_1,\,n_2,\,\cdots,\, n_m$個の球が作る円順列の総数を $f(n_1,\,\cdots,\,n_m)$と表すと,

$$f(n_1,\,\cdots,\,n_m)=\frac1N\sum_{k|l}\phi(k)\frac{\left(\frac{N}k\right)!}{\left(\frac{n_1}k\right)!\left(\frac{n_2}k\right)!\cdots\left(\frac{n_m}k\right)!}$$

  • $l=GCM(n_1,\,\cdots,\,n_m)$,$N=n_1+n_2+\cdots+n_m$です。
  • $\sum_{k|l}$は$l$の正の約数である$k$で和をとります。
  • $\phi(k)$はオイラー(Euler)の関数で, $k$以下で$k$と互いに素な自然数の個数を返します。

コード化

Jupiter notebookでWolfram Engineが使えるようになったので,Mathematicaで作ってみます。数学関数がたくさんあるので,パッとできそうです。

f[a_]:=1/(Total[a]) Sum[EulerPhi[k] Multinomial@@(a/k),{k,Divisors@(GCD@@a)}]

aはリストです。このように関数を定義すると,前回までに紹介した同じものを含む円順列は次のように求められます。

f[{4,4}]
f[{4,6}]
f[{2,3,4}]
f[{3,3,3}]

こんな感じに次々と求めることができます!

スクリーンショット 2019-06-03 23.17.37.png

これで,生徒からどんな同じものを含む円順列の質問がきても大丈夫です!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0