11
競技数学解説
文献あり

OMCの技simasima specialを一般化してみた

1197
0

はじめに

この記事は simasima specialの記事の前編 をもとに作られています。まだ見ていない人は先に見ることをおすすめします(一応この記事だけ見ても理解できるようにはなっていますが)。
この記事では従来のsimasima specialを拡張し、それを用いてOMC024-Dを鮮やかに解きます!他の問題にも適用できる有用な手法なのでぜひご覧ください。
また厳密な議論には群論の知識を要しますが、この記事では高校数学の範囲内で説明していきます。高校範囲の言葉で語る以上、厳密性が損なわれている箇所があるのはご了承ください。厳密な議論は こちら から。

裏話的ななにか

この記事で紹介する手法は、もともと群論を用いてsimasima specialを記述し直すという Lim_Rim_さん のアイディアに負の個数を持つ集合を加えてsimasima specialを拡張させるという私自身のアイディアの融合によって生まれています。simasimaさんとLim_Rim_さんに感謝申し上げます。思いついた時は去年の夏くらいだったんですが、修論が忙しかったので世に出すのがこんな時期になりました。

京大の作問サークルではこういう議論もしていたり楽しいので、ぜひ入部してね!部誌や自作模試もboothで販売しているよ!

前置きはこれくらいにして早速みていきましょう!!

集合の演算

まずこの記事の前提知識となる集合の演算について軽く触れておきます(知っている人は飛ばしても大丈夫です)。
集合 X に対して、その要素の個数を |X| で表します。
また要素の個数が有限個の集合を有限集合といいます。そのままですね。
X の部分集合 A, B に対して
AB={xAxB}
と定めます。つまり A に属していて B に属していない要素全体の集合です。

次に X の部分集合 A1,A2,,An に対して
A1××An={(a1,,an)a1A1,,anAn}
と定めます。つまり A1,A2,,An の要素の組全体の集合です。
特に A=A1=A2==An のとき、An=A1××An と表現します。

simasima specialの復習

議論を簡単にするために、確率の問題は扱わず、場合の数の問題だけ扱います。
確率の問題も守備範囲ではあるのですが、話が難しくなるので…

というわけで、まずは場合の数を扱った通常のsimasima specialの問題を解いていきましょう!(simasima special を使いこなしている方は飛ばしてもok)

さいころを5回続けて投げるとき、出た目の和が5で割り切れる場合の数を求めよ。

まず、さいころの出た目を並べた (a1,a2,a3,a4,a5) を考えます。さいころの出た目として考えられる X={1,2,3,4,5,6} をつぎの二つの集合に分割します。
A={1,2,3,4,5}, B={6}
このとき (a1,a2,a3,a4,a5) をそれぞれが属する集合に変換します。例えば
(1,3,6,4,6)(A,A,B,A,B)(5,1,2,2,3)(A,A,A,A,A)(6,6,6,6,6)(B,B,B,B,B)
のような感じです。
ここで (A,A,B,B,B) に変換されるもののうち、和が5で割り切れるものが何個あるか調べてみましょう。
(A,A,B,B,B) に変換される (a1,a2,a3,a4,a5) を任意に一つ取り出そう。このとき a2,a3,a4,a5 によらず (1,a2,a3,a4,a5),(2,a2,a3,a4,a5),,(5,a2,a3,a4,a5) のうちただ一つだけが、その和が5の倍数になっています!
よって (A,A,B,B,B) に変換されるもののうち、和が5で割り切れるものは |A|2|B|3/5 個あることになります。

この議論は (A,B,A,A,B),(B,B,A,B,A) など (B,B,B,B,B) 以外に変換されるものであれば、成立しています。
(B,B,B,B,B) に変換されるものは (6,6,6,6,6) のみであり、これは和が5で割り切れています。それ以外に変換されるものは1/5ずつになっていることは既にみました。

以上から
1+6515=65+45
が求める答えになります。

このようにsimasima specialとは全体の集合 X を対称性を生み出す部分 A とそれ以外の部分 B にわけることにより、場合の数(確率)の問題を解く方法になっています。

負のsimasima special導入編

まず次の問題を考えます。

京都大学前期文系問題4(1994年 改題)

さいころをn回続けて投げるとき、出た目の和が7で割り切れる場合の数を求めよ。

先ほどと同じように対称性を作ろうとしても中々うまくいかない。
なら無理矢理作ろうということで
A={1,2,3,4,5,6,7}, B={7}
S={(a1,a2,,an)Ana1+a2++an0(mod7)}
とします。これにより
{1,2,3,4,5,6}=AB
と分解することができます。
また、求めたい場合の数は |(AB)nS| に一致します。
ここで次の定理を用います。

A を有限集合、BA の部分集合とし SAn の部分集合とする。
ここで (a1,,an)S に属するなら、その任意の並べ替え (aσ(1),,aσ(n))S に属するとき、次の等式が成立する。
|(AB)nS|=k=0n(1)k(nk)|(A××Ank×B××Bk)S|

ここでは詳細な証明は省きますが、n=1,2 の場合を見ると理解しやすいと思います(包除原理と似た考えです)。
|(AB)S|=|AS||BS|
|(AB)2S|=|A2S||(A×B)S||(B×A)S|+|B2S|=|A2S|2|(A×B)S|+|B2S|
これを用いることを考えましょう。 kn ならば |(A××Ank×B××Bk)S|には通常のsimasima specialが適用できますね。
次のようになります。
|(A××Ank×B××Bk)S|=|A××Ank×B××Bk|/7=|A|nk|B|k/7
よって二項定理から
|(AB)nS|=(1)n|BnS|+k=0n1(1)k(nk)|A|nk|B|k/7=(1)n+|AB|n(1)n|Bn|7=(1)n+6n(1)n7=6n+6(1)n7
と答えが求められます。

負の個数をもった集合

従来のsimasima specialと前節のsimasima specialを統一的に扱いたいというモチベーションのもとで、負の個数を持った集合を考えます。

先ほどの問題

京都大学前期文系問題4(1994年 改題)

さいころをn回続けて投げるとき、出た目の和が7で割り切れる場合の数を求めよ。

を再び考えましょう。ここでは厳密性を忘れてお気持ちだけ理解してください。

先ほど考えていた集合Bの代わりに7という要素を1個もった仮想的な集合 B を考えます(これを B={7} と表すことにする)。
また仮想的な演算 |B|=1, A+B={1,2,3,4,5,6} が成立しているとします(7A1個と B1個で相殺されるイメージ)。

この集合もどき A, B に従来のsimasima specialを適用することを考えます。
さいころの目を並べた (a1,a2,,an) をそれらが属する集合(もどき)に変換します。 (A,A,,A),(A,B,A,,A), のように。

(B,B,,B) になる場合は7の目が n 個出てくるので、目の和は7で割り切れる。このときの場合の数は|B|n=(1)n.
それ以外の場合は対称性から全体の 1/7 ずつになるので
(1)n+|A+B|n|B|n7=(1)n+6n(1)n7=6n+6(1)n7
となんと先ほどの答えと一致します。

この結果は偶然ではなく、負の個数を持った集合を考える妥当性を裏付けているのです!この結果が偶然ではないことをもう少し見ていきましょう。前節までは A+B の代わりに AB を考えていました。前節の最後の式に現れた
|(AB)nS|=(1)n+|AB|n(1)n|Bn|7
という式は先ほどの式
(1)n+|A+B|n|B|n7
と綺麗に対応していることがわかります!

しかし負の個数を持った集合なんてどうやって正当化するんだ?と思う人もいると思います。詳細は次回にまわすとして、そういった人のためにここでは簡単な説明だけ扱っておきます。
通常の意味での集合 A を任意に取ります。A の通常の意味での部分集合 BaA に対して
f(a)=1(aB),0(aB)
となる写像 ( なんすか?写像って という方は関数みたいなものと思ってください) と対応させることができます。
この10というのは部分集合 B に含まれているそれぞれの要素の個数と捉えることができます。すなわち71個ある集合とは aA に対して
f(a)=1(a=7),0(a7)
となる写像と捉えることができます。次回はこうしたことを掘り下げていきます。

余談ですが、確率を考える際はサイコロの場合であればそれぞれ1/6個ずつあると考えるとうまくいきます。

一般化simasima special

次のような問題形式に適用することを考えます(一般にはこれにあてはまらない問題にも適用できますが、それは次回にまわすことにします)。

m1,,mk を正の整数とする。各成分が整数である k 次元ベクトルからなる有限集合 X から要素を取り出して戻す操作を n 回繰り返す。このとき取り出した全てのベクトルの和 (a1(n),,ak(n)) について a1(n)0(modm1),,ak(n)0(modmk) を満たす場合の数を求めよ。

そのままだとわかりにくいと思うので、いくつか具体例をみてみましょう。例えば先ほどの問題であれば k=1, m1=7, X={1,2,3,4,5,6} となります。

また目標のOMC024-Dもこの問題形式に帰着できます。

OMC024-D (改題)

13以下の素数 2n 個からなる順序付いた組 (a1,a2,,an) であって、それらすべての積が平方数であるものの個数を求めよ。

13以下の素数は2,3,5,7,11,13になります。
ここで (x1,x2,,x6)2x13x25x37x411x513x6 に対応させます。
例えば n=2 のとき 2,5,5,11 の積は
(1,0,0,0,0,0)+(0,0,1,0,0,0)+(0,0,1,0,0,0)+(0,0,0,0,1,0)=(1,0,2,0,1,0)
に対応します。また積を取った数が平方数であることは x1,,x6 が全て偶数であることと同値ですね。
以上からk=6, X={(1,0,0,0,0,0),(0,1,0,0,0,0),,(0,0,0,0,0,1)} とし、m1=m2==m6=2
とすれば上記の問題形式に帰着できることがわかります。

このとき
X=A1+A2++Ak+B と分割できるとします。ただし A1,,Ak, B は負の個数をもった集合でも問題ありません。
ここで負の個数をもった集合の要素とは含まれている個数が0でない要素のことを表すものとします。例えば前節の71個持った集合 B={7} であれば B の要素は7のみ(これを 7B と表すことにする)。

ここで各 i=1,2,,k に対して
Ai={(x1,,xn)(x1,,xn)Ai}
とします。ただし i=1,2,,k に対して xi とは ximi で割った余りです。
例えば k=2, m1=3, m2=5 であれば
(2,7)=(2,2),(4,1)=(1,4),(5,7)=(10,8)
となります(第1成分は3で割った余り、第2成分は5で割った余り)。

また (x1,,xn),(y1,,yn)Ai に対して
(x1,,xn)±(y1,,yn):=(x1±y1,,xn±yn)
と定めます。
例えば k=2, m1=3, m2=5 であれば
(2,4)+(0,3)=(2,2),(1,2)+(2,3)=(0,0),(2,3)(1,4)=(1,4)
となります。

いよいよ大詰めです!分割 X=A1+A2++Ak+B がさらに次の条件を満たしてるとしましょう。

  • i=1,2,,k に対して、任意の (x1,,xn),(y1,,yn)Ai に対して (x1,,xn)±(y1,,yn)Ai となる。
  • i=1,2,,k に対して |Ai|=dihi となる整数 di,hi が取れて以下の条件を満たす。
  • i=1,2,,k に対して、任意の (x1,,xn)Ai に対して (x1,,xn)=(y1,,yn) となる (y1,,yn)Ai の個数は di 個。
  • 相異なる i,j=1,2,,k に対して AiAj={(0,,0)} となる。
  • i=1,2,,k に対して B の任意の要素の第 i 成分は mi で割り切れる。

追記:4つめの条件が抜けていたので修正しました。

このとき、求めたい場合の数は次のように表されます。
(ただし、の下の添え字はそれぞれ 1ik, 1i<jk, を満たす整数(の組)を全て代入して足し合わせるという意味で、の記号は 1ik を満たす整数を代入して掛け合わせるという意味です)
i(11hi){|B|n+i|Ai+B|nhi1+i<j|Ai+Aj+B|n(hi1)(hj1)+} 証明は次回にまわします。この定理はかなり有用なので、その凄さを実感してみましょう!

まずはこれを用いて先ほどのサイコロの問題

京都大学前期文系問題4(1994年 改題)

さいころをn回続けて投げるとき、出た目の和が7で割り切れる場合の数を求めよ。

を解いてみましょう。
X={1,2,3,4,5,6}, A={1,2,3,4,5,6,7}, B={7}
(つまり B71個持った集合)
とし k=1, m1=7 とします。
このとき d1=1, h1=7 とすると実際に上記の4つの性質を満たしています。よって先ほどの定理から
(117){(1)n+6n6}=6n+6(1)n7
と求められます!

それではいよいよOMC024-Dを解きましょう!

OMC024-D (改題)

13以下の素数 2n 個からなる順序付いた組 (a1,a2,,an) であって、それらすべての積が平方数であるものの個数を求めよ。

k=6, X={(1,0,0,0,0,0),(0,1,0,0,0,0),,(0,0,0,0,0,1)} とし、m1=m2==m6=2 としていたことを思い出しましょう。ここで
A1={(0,0,0,0,0,0),(1,0,0,0,0,0)},
A2={(0,0,0,0,0,0),(0,1,0,0,0,0)},,
A6={(0,0,0,0,0,0),(0,0,0,0,0,1)},
B=6{(0,0,0,0,0,0)}
(B(0,0,0,0,0,0)6個もった集合)
とすると X=A1++A6+B と分割できます。
また d1==d6=1, h1==h6=2 となり
これを上の式に適用すると
(112)6{(6)2n+(61)(4)2n+(62)(2)2n+(64)22n+(65)42n+62n}=62n+642n+1522n32
となる!

説明の都合上ベクトルで表記していますが、実用上は
X={2,3,5,7,11,13}, A1={1,2},A2={1,3},,A6={1,13}, B=6{1}
と表記してもなんら問題はないです。

最後に練習問題をつけたので自力で解いてみてください。

1から7の面がある7面さいころを n 回投げるとき、出た目の積が平方数となるような場合の数を求めよ。

クリックして解答をチェック


先ほどと同じように
(x1,x2,x3,x4)2x13x25x37x4 に対応させます。また
k=4, X={(0,0,0,0),(1,0,0,0),(0,1,0,0),(2,0,0,0),(0,0,1,0),(1,1,0,0),(0,0,0,1)}
とし m1=m2=m3=m4=2 とします。
このとき
A1={(0,0,0,0),(1,0,0,0),(0,1,0,0),(1,1,0,0)}
A2={(2,0,0,0),(0,0,1,0)}
A3={(0,0,0,0),(0,0,0,1)}
B={(0,0,0,0)}
とし、d1=d2=d3=1, h1=4, h2=h3=2
とすることで上の定理が使える形になりました。よって
(114)(112)2{(1)n+3n41+1n21+1n21+5n(41)(21)+5n(41)(21)+3n(21)(21)+7n(41)(21)2}=6+3(1)n+43n+25n+7n16
と求められます。

この問題でも実用上は
X={1,2,3,4,5,6,7}, A1={1,2,3,6}, A2={4,5}, A3={1,7}, B={1}
として大丈夫です。

最後に

一般化simasima specialは慣れると、多項式や形式的冪級数を用いる方法より早く解けることが多いです(問題によってはトントンくらいになることもありますが、一般化simasima specialを適用できる問題であれば遅くなることはほとんどない印象)。

次回は厳密な場合について記述したいですね。わかりやすさと面白さを優先して、本来の適用範囲を多少なりとも狭めてしまっているので…
一応準同型定理くらいまでの群論の知識が最低限あれば、読み進められるようになるとは思います。

それでは、また次回。

追記: 厳密な議論を行う続編 を更新しました。

参考文献

投稿日:15
更新日:110
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

へ
23
2480
京大作問サークル

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. はじめに
  2. 裏話的ななにか
  3. 集合の演算
  4. simasima specialの復習
  5. 負のsimasima special導入編
  6. 負の個数をもった集合
  7. 一般化simasima special
  8. 最後に
  9. 参考文献