目次
- はじめに
- 考え方
- 例題
- 演習問題
- おわりに
はじめに
初めまして!奏といいます。Mathlogへの憧れでこの度記事を書くことにしました。
私の話はさておき、この記事では場合の数の問題を漸化式を用いて処理するテクニックについて紹介します。ある界隈では「動的計画法」と呼ばれているようですが、筆者があまり詳しくないのでここでの使用は避けます。競技数学でも受験数学でも広く使える考え方です。漸化式および数列の基本的な知識を前提としています。
考え方
さて、この考え方を端的に言うと、「一般化することで再帰的な構造をもつ場合の数の問題について、漸化式を立てて調べ上げる」ということになります。なるほど、意味不明ですね。具体例を見ていく方がわかりやすいので、以下のような問を考えてみましょう。
階段を歩につき段または段登るとき、段の階段を登る方法は何通りですか?
色々な解法が考えられそうです。筆者は「段登った回数で場合分け」、「気合いで数え上げ」、そして「漸化式で処理」あたりがパッと思いつきました。いずれも有効ですが、ここでは漸化式を用いた解法を紹介します。
以下、解説です。
※自分で考えたい方はネタバレ注意です。
まず、一般に段の階段を登る方法を通りとします。の値を求めればよいことになります。ここで、あと歩で登り切れるという状況は、「ちょうど段または段を登った」ときなので、 が成立します。
補足
段を登ったとき、残りの登り方は通りあるのでは?と考える方もいるかもしれませんが、そのうち歩かけて登る際に段目を踏みますよね。なのでこれで漏れなく、重複なく数えることができています。最後の歩で登る段数によって場合分けをしていると言うと分かりやすいでしょうか。
同様にして、一般に漸化式 を得ます。今回の問題設定は項間漸化式に対応するわけですね。
さて、漸化式が機能するためには初期条件が必要でした。これは調べ上げですぐにが分かります。後はと調べていくことで、求める場合の数は通りです。
以上が全体の解法の流れになります。改めてまとめると、
- 実験などから場合分けで再帰的な構造を発見し、漸化式を立てる
- 数え上げである値を調べて、漸化式を繰り返し用いてもとの値を求める
ということになります。再帰的、とは同じ形式の問題に帰着できるということです。今回の問題であればもとの問題から同様に段や段を登るというより簡単な問題に置き換えられました。
また、多くの場合漸化式を解くことはあまりメリットがありません。例えば、先ほどの漸化式(フィボナッチ数列といいます)の解は
という形で表されます。これを求めてを展開...やめておきましょう。素直につずつ求めるのがよさそうです。
例題
続いて、もうつ頻出のパターンを紹介します。例題を見ながら考えていきましょう。
OMC128-C
のマス目があり、各マスにのいずれかを書き込みます。このとき、辺で隣り合うマスに書き込まれた整数が常に互いに素となるような書き込み方は何通りありますか?
整数との融合問題ですね。筆者のお友達の問題です。作問がうまい。
先ほどと本質的な考え方は同じなので少し考えてみてください。下に進むと解説が始まります。
まずは条件を整理すると、偶数どうしが隣り合ってはならないので、隣り合うマスの少なくとも一方はです。逆に、これは題意を満たすための十分条件でもあります。
この事実を踏まえて、マス目を便宜上行列とします。マス目は横長なのでまずは各列について考察しましょう。各列の数字を上からのように表記するとのつのパターンが考えられます。
また、各列のそれぞれのパターンと隣り合うことができるパターンは常に通りと分かります。このパターンをいい感じに並べていけばよさそうです。構造がかなり見えてきましたね。
それではいよいよ漸化式を立てていきます。一般に行列のマス目について、左から書き込んでいくこととします。
ここが本問の山場なのですが、以外のパターンはどのパターンについても「とは隣合ってよく、その他に自身以外のちょうどつのパターンと隣合うことができる」という性質があります。すなわち、これらつのパターンには対称性があるので、書き込み方のうち最も右の行がであるものを通り、そうでないものを通りとします。求める値はですね。
すると、先ほどまでの議論から、つ左の行のパターンとの組合せに注意して書き込んでいくことを考えると
が成立します。この問題は連立漸化式を立てることで解くことができたのです。
後は例のごとく初項を引っ張ってくることで、終わり...でも良いのですが、せっかくなのでもう一工夫できないでしょうか?
漸化式の形と求める値をじーっと見ると、答えはであると分かります。よって、漸化式をいい感じに変形して、 という形にするとその後の計算が半分になりますね。から順に調べると求める値は 通りです。
というわけで、連立漸化式の紹介でした。最後の変形は元々サイトにあったものをお借りしているのですが、本当に練られていますよね。(
出典はこちら
)
項間漸化式と合わせてこれらが圧倒的に頻出だと思います。最後に、その他のトリッキーな漸化式の問題をつ紹介して例題解説を終えます。
JMO'07yo-07
どれもの非負整数乗であるいくつかの整数の和としてを表す方法は何通りあるか。ただし、和をとる順番のみが異なるものは同じ表し方とみなす。
JMOからの出題です。初見のときはかなり苦戦しました...
「漸化式を用いる」をヒントにぜひ一度挑戦してみて下さい。
それでは下に進むと解説です。なかなか重たいですが頑張りましょうね。
解説に早速入りますが...ひとまず実験してみましょう。
一般に、の非負整数乗であるいくつかの整数の和としてを表す方法を通りとします。求める値はですね。
実験
のとき、(通り)
のとき、(通り)
のとき、(通り)
のとき、(通り)
のとき、(通り)
のとき、(通り)
さて、ここから何が言えるでしょう。
前後の項に着目すると、「添字がの倍数のときには値が増加して、そうでないときは変わらない」という予想が立つといい感じです。値がどのように増えるかはちょっと情報不足なので、まずは後半から考えていきましょう。
このように表現できますね。便宜上としています。さて、実験のがの倍数でない部分から一つ気づきたいのは「は必ず使う」ということです。言われてみれば、がないと和はの倍数になってしまうので当たり前に思えますが、これは手を動かしてみないと意外と見えません。実験は世界を救います。
任意のについて、を表す際、を使わないと仮定すると和はの倍数となり矛盾する。よって、を初めにつ用意すると、残りのの表し方との表し方は対に対応する。すなわちである。
同様にしてが従い、予想は示された。
さて、漸化式がたったから例のごとく初期条件を...といきたいところですが、これだけでは解けません。実際、の添字を小さくすることができません。筆者はここで困りました...
今で困っている理由は、必ず使うと断定できる数が存在しないからです。このあたりは丁寧に言語化していきましょう。初心に帰って漸化式を立てる方針を確認すると「場合分けで再帰的な構造を見つける」とのことです。階段の例がまさにそれでした。
先ほどの議論を応用することを念頭に置くと、「を使うかどうか」で場合分けという方針が見えてきます。以下、の別の表現を探ります。
- を使う場合
これは上の議論と同じです。残りのを分解する方法を考えればよいので、表し方は通りです。後のことを考えて漸化式でできるだけ添字を小さくしておきましょう。 - を使わない場合
このときはちょっと訳が違ってきそうです。困ったら再び実験しましょう。
実験
のとき、(通り)
のとき、(通り)
のとき、(通り)
のとき、(通り)
のとき、(通り)
のとき、(通り)
お〜、なんだか見覚えのある並びですね。
具体的には、と全く同じ挙動をしています。これは、を使わない場合には全ての数がの倍数で表されているために、両辺をで割ることでを表す方法に帰着するからです。よって、これは通りです。
以上より、です。一度事実を整理しておきましょう。
それではいよいよを計算しましょう。
実験より、なので、...
あれ、これをまでやるのは少し大変そうですね。つごとに同じ値を取ることに着目すると計算は高々回なのでいけなくはないのですが、多くのことを学んで頂きたいのでここでは漸化式のもう一つの使い方を紹介します。
それは「求める値の添字を落とす」ということです。これまでは漸化式を得たら「添字の小さいものから全て順に調べていく」という手法を取っていました。ここでは逆に「を漸化式を用いて変形していく」ということをします。やや出題頻度は低いですが、むしろ素直な方法だと筆者は感じます。
さて、実際に計算すると、
...
ん〜、項の数がどんどん増えてしまいます。さあ、この問題の最大の壁にぶつかりました。どうしたものでしょうか。
結論からいうと、漸化式の形から、添字がの倍数のものを処理する際には必ず項がつに分かれてしまうので、項が極端に少ないまま計算するのは難しいと思います。ということで、せめて扱いやすい形に持ち込みたいものです。
そんな動機で再び漸化式とにらめっこすると、という形が見えてきます。これは、「の階差数列がである」ということを示します。(厳密にはです)
よって、このことを念頭に置くと、
と変形できます。後半の変形はを用いています。シグマの各項にも同様の議論をすることで、
を得ます。ここの変形は本質部分ではないので割愛しますが、実際に項を書き並べてみると理解できるかと思います。
後は下り坂ですね。計算して求める値は
となります。
いや〜お疲れ様でした。筆者は計算を合わせるのに時間かかりました。難易度がぐんと上がったのですが、「実験などから構造を理解したのち、場合分けをして漸化式に落とし込む」という同様のプロセスが使えることを体感して頂けたらすごく嬉しいです。全然見た目の異なる問題を同一視できる点が数学の楽しさだと思います。
これにて解説は終了です。演習問題を以下に用意しました。OMCからの問題の解説はリンクに飛ぶことで確認して下さい。
演習問題
JMO'11yo-9
赤、青、黄色の玉を合わせて個一列に並べる方法で、どの球についても同じ色の隣接する球があるようなものは何通りか。ただし、並べる球の色が色以下の場合も考えるものとする。
番にしては易しい印象を受けます。あまり怯えすぎないで下さいね。
解説
一般に、個の球を並べる方法を通りとする。個の球を左から並べることを考えると、個目と個目の色が同じであるとき、場合の数は通り。個目と個目の色が異なるとき、最後の個の色の組は通りなので、場合の数は通り。
よって、であり、と合わせて求める値は通りである。OMC091D
行列のマス目のそれぞれに矢印 ↑、↓、←、→ のいずれか1つを書き込む方法であって、以下の条件をみたすものは何通りありますか?
・どのマスについても、と辺を共有するマスであって、そこに書き込まれた矢印がを指すものがちょうど1個存在する。
個人的にOMCで番の良問だと思っています。
出典および解説はこちら
自作
以下を満たすための正整数に関する必要十分条件を求めて下さい。
・サイコロを回投げるとき、出目の総和がの倍数となる確率はより大きい。
証明問題を添えてみました。設定がシンプルでお気に入りです。
解説
一般に、回サイコロを降ったとき、出目の総和をとし、これがで割って余るような方法を通りとする。()
ここで、このような方法はのとき回目にが出ればよいため通りである。そうでないとき回目の出目は一意に定まることから通りある。すなわち、が成立する。ただし、とした。
が5の倍数でないとき、漸化式を繰り返し用いれば、
を得る。について、のいずれかであることに留意せよ。場合の数の総数が通りであることより、不適である。
がの倍数のとき、同様の議論から以下を得る。
よって、このとき題意を満たすことが分かるので求める条件は「がの倍数であること」である。
おわりに
ここまで読んで下さりありがとうございました。初めてこの手法を学ぶ方を想定して記事を作成したつもりです。記事を書くのが初めてなので、「ここの説明がわからない」などあれば教えて下さい。もちろん感想も大歓迎です。
今回取り上げた手法は私が競技数学を好きになったきっかけともいえるものです。いつか記事を書くときには題材はこれにしようと決めていました。少しでも面白いなと思って頂ければ幸いです。ではまた。