組合わせ論の基礎 (2):順列と組合せ

河本孝之(KAWAMOTO Takayuki)

Contact: takayuki.kawamoto@markupdancing.net

ORCID iD iconORCID, Google Scholar, PhilPapers.

First appeared: 2024-04-01 21:40:32,
Modified: [BLANK],
Last modified: [BLANK].

巻頭言

これまで当サイトの「落書き(Notes)」という短い投稿を掲載するコンテンツで、数学のテキストが分かりにくい理由を幾つか批評してきました。それらが改善される様子はないため、やはり自分で書いてみるのが良いと思い立って、このような解説記事を書くこととしたわけです。本来、このような解説は専門の教員や大学のプロパーが書くべきものであり、数学の教員でもなければ数学者でもないアマチュアの科学哲学者が書くべきものではありません。なお、本稿では一部の説明で初等的な範囲の集合論や数理論理学の概念を使います。解説するテーマは中学や高校で習う「場合の数」として多くの方がご存じかと思いますが、議論の内容まで「高校生にも分かる」などと確約するつもりはありません。

1. はじめに

組合せ論の基礎 (1): 数えるということ」では、中学や高校で導入される「場合の数」という単元の基本的なアイデアについて、特に場合の数を全て数えるということが正確に言ってどういうことであるかを検討しました。本稿では、それに続けて順列と組合せというお馴染みのアイデアを扱います。教科書や参考書に書かれている色々な事例では、残念ながら表面的なテクニックや技巧的な発想が「解法」として紹介されるばかりで、解法を大量に覚えるということしか解き方の対策がないかのような印象を多くの学生に与えてしまっています。実際、組合せ論という大学の研究分野でも、このテーマについて万能と言えるような解き方とか公式など存在しないと強調されているわけですが、しかしだからといって場当たり的に頓智のようなことをやっていても数学として無意味ですし、多くの人にとっては役に立たないという印象しか残らないでしょう。

そこで、本稿では決定的な解き方などないという前提は認めたうえで、順列や組合せというアイデアを場当たり的で頓智のようなもの(いわゆる「数学的センス」などと呼ばれる非科学的な決め台詞で片付けられてしまうようなもの)ではない考え方で解いてゆく基礎の議論をします*

*数学オリンピックに出場するような、想像力とか発想力とか応用力といった、しょせんは結果論としか言いようがない才能なるものがあれば何でも解けると思う方は、本稿を読む必要はありません。そうした gifted とか talented と呼ばれる(実際には十代前半で大学に入っても大半の人々が大した業績も出していない)天才少年少女を敬うカルトにでも入って活動してください。僕は保守主義者でもあるため、まともで平凡な大人のための解説を当サイトでは展開します(数学という学問や数学の対象が、たとえまともでも平凡でもないとしてもです)。

冒頭に戻る

2. 順列か組合せか

僕が高校時代に「場合の数」とか「順列と組合せ」といったタイトルで、初めて組合せ論の初等的な単元を学んだときに感じたことがあります。それは、何が「順列」として解ける問題であり、何が「組合わせ」として解ける問題なのかを、どうして教えようとしないのかということでした*。数学教師の授業も、あるいは参考書を書いている人々の説明も、それらの区別が当たり前で、最初からどちらかを区別できるかのような体裁で解説します。しかし、その区別をどうすればいいかが正確に分からないと、順列として扱うべきことがらを組合せとして扱ってしまったり、順列に想定するべき条件を組合せに想定するべき条件と取り違えてしまったりするわけです。こういう基本的な考え方、それこそ数学で教えるべきである筈の本来の目的を、軽視しているか取り違えた解説ばかりが横行しているせいで、逆に「椅子の取り合いなんて隣の奴を殴り飛ばせばいいだけだ、これが現実社会の解だ」と嘯く者が出てきたりするのではないでしょうか。こうした、勘違いにもとづく数学への不信感とか無理解とか軽視・軽蔑は、数学教師や数学のプロパーにとっても不幸な結果しかもたらしません。それこそ、「実社会(あるいは「女」などと言う人もいます)に三角関数や微積分は必要ない」などという世迷い事を口にする政治家や経営者や親が増えてしまう結果にもなります。

*実は、高校時代に場合の数を学んで強く感じた疑問というか不満は、他にもあります。その一つは、お馴染みの ^^C \lbrace n, k \rbrace^^ とか ^^n \choose k^^ とか ^^{}_n \mathrm{ C }_k^^ と表記するスタイルです。実際のところ、こんな記号だけでは現実にどう計算すればいいのか分かりません。こういう記号を使うことに意味があるのは、この記号どうしの演算によって複雑な手順がシンプルにできたりするという何らかの効用があるからであって、単純に順列や組合せを記号で書いてみましたと理系アピールして嬉しがるための下らない虚飾ではないはずです。でも、大半の事例においては記号どうしの演算などしていません。順列や組合せの事例であると確定した後に、それを記号で見出しのように書き出すためだけに導入されている事例が大半であり、このように記号として記述したからこそ初めて何かが分かるというわけではない事例で、教科書も参考書も埋め尽くされているという印象がありました。彼らは自分たちで何をしているのか、本当に分かっているのでしょうか。したがって、本稿では順列や組合せを単に言い表すためだけに記号を使うといった愚行は避けることにしました(しばしば、このような愚行は社会科学で頻繁に繰り返されており、「物事に新しい名前をつけているにすぎない」と批評されることがあります)。

そういうわけで、本稿でも教科書の記述から話を進めることにしましょう。

[...] いくつかのものを順に1列に並べるとき,その並びの1つ1つを順列という。

[大矢, 2014: 15]

[...] ものを取り出す順序を無視した組を作るとき,これらの組の1つ1つを組合せという。

[大矢, 2014: 22]

こんな具合に表現は分けているようですが、実際の試験問題などでは「並べる」とか「取り出す」といった言葉はどちらの事例でも出てきます。つまり、何か決まった収納場所(集合論の言い方だと「宇宙」と言ったりします)から取り出して並べるという操作は、実は順列だろうと組合せだろうと同じことなのです。よって、こうした表現をどう使っているかによって順列であるか組合せであるかを知ることはできず、これらの言葉を使い分けるという傾向は、受験数学的なフェイクであることが分かります。何かを試験問題で問われても(あるいは自分で仕事や何かの事情で、起こりうる場合の数について考えているときでも)、こうした言葉は無視してしまっても構いません。数学的な思考とは何の関係もないのです。

さて、何か或る決まった条件や状況のもとで起こりうる全ての場合の数を数えるという目的(場合の数という単元で学ぶべきことは、結局のところこれしかありません)にとって、前回の記事では物事を数えるということが何であるかを考えました。そこで、今回は数えるべきことにはどういう条件や状況があるのかを調べてみます。既に述べたように、最初から条件や状況が順列と呼ばれるべきパターンであるとか、組合せと呼ばれるべきパターンであると分かっていて場合の数を数えるなどという、ご都合主義的な議論は止めにしたいものです。どのみち、大学で学ぶ学問としての数学の研究も、そして実社会で携わる仕事にしても、そんな区別やヒントを最初から教えてくれる人など誰もいません。

冒頭に戻る

3. 条件付きの物事

順列であろうと組合せであろうと、結局は場合の数を数えることに変わりはありません。そして、それらは或る条件や状況によって制約されたり制限されたという前提があった上で、起きる全ての場合の数を数えることだと言えます。では、まず最初に数える(数えられる)ということについては問わないこととして、全ての場合の数を数えてみましょう。実は、もしも全く何の条件もなしに起きる物事の全ての場合の数を数えようなどと言い出せば、僕らは何も数えられないということが分かります。例えば、人が何かやることについて自由意志をもっていて、一定の範囲であれば好き勝手にできるとしましょう。そして、そういう自由意志をもつ人物 ^^H^^ さんが庭で小石を池に投げようとしています。池はとても小さな面積しかありませんが、^^H^^ さんが小石を池のどこに投げるかは全くの自由意志で決まるとします。^^H^^ さんの投げた小石が池のどこへポチャリと落ちて沈んでゆくかは、小石が着水する座標に何らかの解像度と言ってもいい単位がない限り、離散的な値の範囲だけでは考えられません。小石が落ちた座標を(原点と軸の向きは全ての計測で同一だったとして)誰かが 1cm の単位で測って ^^( 20cm, 45cm )^^ などと言ったとしても、それは実際には 1mm の単位で測れば ^^(20.3cm, 44.98cm )^^ だったかもしれませんし、0.1mm の単位や 1μ の単位で測れば違う値になる可能性があります。したがって、離散的な(もしくは可算の)値という範囲で物事を計測したり数えているだけで、既に僕らは何らかの条件で制約された状況にあって物事を扱っていると言えます。自然数の(或る観点では「規則的」と言えますが、別の観点では非常に「雑な」)値として答えが出せるというだけで、相当に簡単な状況でものを考えているのだという強い自覚が必要でしょう。

小石を池に放り投げる

そのうえで、僕らは色々な条件とか状況のもとで物事を考えなくてはならないことがあります。何がいちばん良い選択なのかとか、どれが自分にとって都合のよい選択肢の一式なのかとか、あるいは基準が自分でなくてもいいわけですが、何らかの事情において決まった条件を満たすとか、何か定められた状況で選べる手立てを考えるとか、そうした色々な課題と、勉強や学問や仕事あるいは生活全般において何度も出会うこととなります。さしあたり、ここでは自分が選んだり実行しなくてはいけない事柄が一つ、二つ、三つ、などと数えられる物事だという前提は認めておきましょう。どのみち、そうでなくては数えようがないですし、場合の数で学ぶような計算も不可能だからです*。そして更に、集合論で言えば「たかだか可算」と言ったりしますが、可算であるというだけではなく、場合の数を全て数えるという作業や手順が多かろうと少なかろうと、とにかく終わるということ、つまり数えるという作業が有限回で停止するということも前提しておきます。とは言え、その作業が「現実的な所要時間」や「少ない回数」で終わるといった曖昧な条件まで、ここで許容するわけではありません。

*もちろん、場合の数からの応用として導入される確率論では離散的でも有限でもない状況での可能性を考えたりするのですが、僕は組合せ論を確率論のための準備段階や初等的な話題であるかのように配置する、「教育的な配慮」ではあっても短絡的としか言い様がない発想には疑問があります。したがって、ここでは既に述べてきたような、条件とか制約という事情でものを考えるというスタンスを越えた脈絡は関連付けないようにしています。(前回の論説で「独立」というキーワードを使いましたが、「独立(事象)試行」であるかのような使い方は避けています。)

では、最もありふれている題材として正6面体のサイコロを使いましょう。そして、サイコロを1回だけ振るという状況で起きる事柄、つまりは出る目という場合の数を全て数えます。もちろん、当たり前ですが 1, 2, 3, 4, 5, 6 という六つが、1回だけ振るという条件のもとで起きる可能性があると言える場合の数を全て数えた結果です(正確に記述しようとして、かなり回りくどい表現になっています)。このように、起きる可能性がある個々の場合が、サイコロの一つの目を示す面であるとか、1枚ごとのトランプの柄であるとか、何か独立した一つの物事として最初からありありと区別できていて、しかもトランプのカードが一揃いあるとか、サイコロが1個あるという記述だけで、場合の数として一つずつ数えるべき範囲が決まってしまっているような状況があれば、僕らは何をどの範囲で数えたらいいのか分かったうえで数えるということになります。正6面体のサイコロで出る目という場合の数を全て数えてくれと言われて、すぐ隣に置いてある正12面体のサイコロの目まで一緒に数え出すような人はいないでしょうし、ジョーカーを除いたトランプのカードが1デッキ(一揃い)で何枚あるのかと言われて、わざわざハートのカードを無視するような人もいない筈です。このような初期条件とも言える状況で、与えられた物事の数え方が分からないという人は、場合の数という話題に対応できる知識や経験があるとは見做されていないでしょう*

*目の前に置いてあるトランプのカードは、ジョーカーを除けば1デッキで何枚あるのでしょうか。そんな質問へ答えるために、何か特別に学んだり考えるべき数学の知識や理論や学説などありません。カードを一揃いだけ手に取って、具体的に枚数を1枚ずつ数えてゆけばいいだけでしょう。あるいは数学の問題として問われているなら、トランプのカードが1デッキで(ジョーカーなしで)何枚あるかを知らない受験生はいないと想定されている場合もあります。

ところで、実際に受験や学校の定期テストで出題される設問では、トランプのカードが1デッキで何枚あるのかを知っていると想定することが不当だと言われかねない場合もあるので、敢えてそういう「常識」を求めない出題者もいます。もちろん、トランプとは別のカードを使って遊ぶ文化がある国だとか、あるいはトランプで遊ぶような状況にない激しい内戦が続く国から日本へ移住してきた生徒や学生は、トランプなど誰も知らないかもしれません。トランプとかトランプのカードについて知っているという想定が何らかの差別になると考えるなら、そういう「常識」を想定して問題を作成することには疑問の余地があるでしょう。よって、そういう疑問を感じる出題者は「文字 a, b, c, d から云々」とか、「全く区別のできない同じボールが5個あるとして云々」などと、物事を数えるに当たって数える対象を最初からはっきり説明しているわけです。したがって、そういう初期条件で用意された物事を単に一つずつ数えられるかどうかということは問題にならないと言えるでしょう。そうして、誰にでも分かるように記述された初期条件に、何か他の条件が加わるとどうなるかが問題となるわけです。これは、順列であろうと組合せであろうと同じことです。

何を場合の数として数えようとしているのかという初期条件の説明は、なるべく他の解釈の余地が残る曖昧な書き方であってはいけません。しかし、前回の論説でも指摘したように、どのていど詳しく説明すれば他の解釈の余地が残らないかは、フレーム問題があるために正確なルールがないと言えます。なお、他に解釈できる余地が全く残らないように記述できたとすると、いわゆる「題意を損なう」と呼ばれるケアレス・ミスが原因の失点が少なくなるので、受験生の平均点は上がることとなります。実は、そういうケアレス・ミスを敢えて誘うような書き方をする出題者もいますし、無自覚にそういう曖昧な文章しか書けない数学者や数学教師も世の中には大勢います*

*それを非難しても徒労であるというのが高校時代の僕の結論でした。仕事においても、作業の指示や与件・仕様を曖昧にしか記述できない上司やクライアントが無数にいるという現実があることを、雑誌や本を読んで知っていたからです。地位や学歴とは関係なく、大半の大人は文章が下手であり、その自覚すらないという仮説を訂正する必要は、いまでも感じていません。僕もその一人に含まれているかもしれませんが、大半の日本人は、たとえ「愛国」だの「純粋日本人」だのとたわごとを口にしていようと、日本語をまともに運用する能力や経験や見識などもってはいないのです。それに加えて、教育勅語を尊ぶなどと公言している人間に限って、『古今和歌集』の歌を一首すら詠えない無知無教養の輩であります。

冒頭に戻る

4. 順列や組合せは何が特別なのか

では、正6面体のサイコロでもいいですし、トランプのカード1デッキでもいいですし、箱に入ったボールでも何でもかまいません。これまで説明してきたように、場合の数を数えようとしている対象が独立した個々の要素から成る有限かつ離散的な集合として記述できるものとします。その前提があると、正6面体のサイコロと言われたら、それについて何を考えたり問題として解くのであろうと、^^ \lbrace 1, 2, 3, 4, 5, 6 \rbrace ^^ という集合が初期条件として想定できることになります。すると、教科書でお馴染みだと思いますが、順列と呼ばれる特別な条件で場合の数を限定しようという話になります。ここで違和感を持つ人がいるかもしれませんが、実は順列の説明や試験問題でサイコロは殆ど登場しません。なぜなら、サイコロを題材として使うと、問題を順列として考えなくてはいけない状況や条件を作り出すのが面倒だからです。冒頭で紹介した順列の説明を思い出しましょう。

[...] いくつかのものを順に1列に並べるとき,その並びの1つ1つを順列という。

[大矢, 2014: 15]

正6面体のサイコロ1個を順番に並べるなんてことはできません。かといって、1個のサイコロを仮に複数のサイコロであるかのように見做して、^^S_1, S_2, S_3... S_n^^ としたところで、それは何を並べていることになるのでしょうか。サイコロの目を並べているわけではありません。すると、サイコロを ^^S_1, S_2, S_3... S_n^^ と並べて数えられることとは何でしょう。単純に、そこに並んでいるヴァーチャルなサイコロの数だけではないでしょうか。そこには、順列として物事を考えるために問題を組み立てて準備できるような条件がありません。ヴァーチャルなサイコロを使って順列を考えなくてはいけない状況にしようとすれば、たとえばサイコロ ^^S_1^^ を振ると、次のサイコロ ^^S_2^^ は ^^S_1^^ が出した目を出さなくなるといった、不思議な(そして明らかに不自然で、常識では想定できない)サイコロを条件として用意しなくてはならなくなります。こんな SF 的な状況を用意して生徒に考えさせる必要が教育としてあるでしょうか。もちろん、ありません。もっと自然に、常識的な対象について考えるだけで順列を理解しなくてはいけなくなるようなケースを使えばいいだけでしょう。たとえばトランプのカードとか、壺に入っているボールとか、何かを選び出すことによって条件が変わるようなケースを使えばいいわけです。逆に言えば、サイコロを使うと、起きる可能性がある場合が一つずつ独立しているだけではなく、そういう場合の中から一つの結果が起きるという個々の選択や動作の結果も独立していることになります。サイコロ ^^S_1^^ を振って3の目が出たからといって、次に ^^S_2^^ を振ったら3以外の目が出るだろうなんてことは、サイコロについては想定してはいけないわけです(しばしば、こういう間違った想定は「ギャンブラーの錯誤」などと言われたりします)。順列は、そういう振舞いが自然であるような対象については議論することが難しいものだと言えます(全くできないわけではありませんが、議論できるように状況を作り出そうとすると不自然で作為的なものになってしまいます)。

最も単純に表現するなら、順列では初期条件の集合から一つの選択肢を取り去るという操作が不可欠です。^^ \lbrace 1, 2, 3, 4, 5, 6 \rbrace ^^ という集合から一つの選択肢が取り出されると、たとえば5を取り出すと、その集合の要素は ^^ \lbrace 1, 2, 3, 4, 6 \rbrace ^^ となります。更に1を取り出すと、その結果は ^^ \lbrace 2, 3, 4, 6 \rbrace ^^ となり、最後の6回目で集合から要素が全てなくなって要素を取り尽くしたこととなって、この取り去るという操作は停止・終了します。先に引用した順列の定義でも、「いくつかのものを順に1列に並べる」と書かれています。これはつまり、「いくつかのもの」という初期条件の集合がポーカーの1デッキとか1から5の自然数などと用意されていて、そこから要素を取り去るという操作の結果を並べるということに他なりません。

もう少しここで踏み止まって考えてみると、では「順に」とか「並べる」という表現で、順列というものを考えなくてはいけないと想定している出題者、あるいは順列という概念をつくった数学者は何を前提したり仮定しているのでしょうか。

まずはっきりしているのは、初期条件の集合から何かを取り出すという操作は、他に特殊な条件がない限りは、1度に一つの要素を取り出すということです。取り出すという操作は個々に独立していなくてはならず、1度に要素を二つも三つも選んだり取り出してしまえると仮定すれば、その仮定には何か特別な理由とか条件が必要になってしまいます。これに対して、或る決まった要素の集合から一つずつ要素を選び出すという操作には、要素の数と選び出す操作の回数とが合致するという明白な規則性がありますし、それらを自然数によって数えられるという利点もあります。そして、前回と同じく自然数の特徴を全て仮定して良ければ、要素を一つだけ取り出した次に要素を二つ取り出すような操作は許されませんし、3回目に取り出した要素と4回目に取り出した要素を取り違えることもありません。ずいぶんと面倒な議論をしているように見えるかもしれませんが、特徴を一つずつ洗い出してみると、順列なんて実は、何かから何かを一つずつ取り出してゆくという平凡な状況を言い表しているにすぎないと分かる筈です。

ここで、或る条件にしたがって一つずつ順番に要素を取り出して作った「並び」を、或る順番にしたがって並ぶ要素から作られた集合だと考えてみましょう。前回の記事でも順序対として紹介したアイデアです。^^A = \lbrace 1, 2, 3\rbrace^^ という初期条件の集合があって、ここから数字を二つだけ取り去って順番に並べた整数が幾つあるかという、順列の問題としてはお馴染みの状況を考えましょう。すると、この集合をもとにすれば、以下のとおり六つの部分集合が出来ます。これらを順序対(ordered pair)と言って、順序対を集めたひとまとまりの集合は直積(product, direct product)と言います。^^\lbrace 1, 2 \rbrace^^ と ^^\lbrace 2, 1 \rbrace^^ とは単なる集合を表しており、要素の並びや順番は区別されないので、順序列を表すときは、特別に “ ^^\langle ^^ ” ... “ ^^ \rangle^^ ” という記号で囲みます。

$$\langle 1, 2 \rangle, \langle 1, 3 \rangle, \langle 2, 1 \rangle, \langle 2, 3 \rangle, \langle 3, 1 \rangle, \langle 3, 2 \rangle$$

すぐお分かりのように、順列を数えるということは、これらの順序対の数を数えることと同じです。

更に、^^A = \lbrace 1, 2, 3\rbrace^^ という初期条件の集合から、今度は全ての数(三つの数)を全て順番に取り出して整数を作ることにしましょう。そして、順番に要素を取り除いて並べるという操作を二つのステップに分解してみます。それらは、第一に二つの数字を順番に取り除く操作であり、第二に二つの数字を取り除いたという条件のもとで三つ目の数字を取り除く操作です。これらに分解してみると、^^A^^ から順番に三つの数字を取り除いて三桁の整数を作るという操作の結果そのものを一つの順序対として表現できるので、次のように表せることになります。(もちろん高校の単元で学ぶように、三つの集合から二つを取り去る順列と、三つの集合から三つを取り去る順列とでは、計算結果は同じ場合の数となります。)

では次に、組合せの定義を再び見てみましょう。

[...] ものを取り出す順序を無視した組を作るとき,これらの組の1つ1つを組合せという。

[大矢, 2014: 22]

順列と比べて順番を気にしないということだけが違いであり、組合せの特徴であるかのような書き方ですが、果たして本当にそうなのでしょうか。まず、或る決まった集合から何かを取り出すという操作が順列を考える場合と全く同じであるという点に注意してみましょう。そして、なぜ組合せの事例では取り出す順番とか取り出した要素の並ぶ順番を考えなくてもよいのかという点にも注意を払ってみます。すると、当たり前のことですが、そもそもその事例で何かを取り出そうとするのは何故なのかという理由を考えざるを得なくなります。ここで、逆に順列でしかお目にかからないような状況や条件を敢えて組合せの話に持ち込むと、400m リレーの選手を選ぶという事例が使えそうです。実際、リレーの選手を選ぶとは言っても、走る順番というものは選抜された後にチームで話し合って決めるものです(僕も高校時代に陸上部のメンバーだったことがあります)。教科書で頻繁に見かける設問が描くような、順番ごとリレーの選手を選抜する状況は、小学生の運動会で教師が(親の力関係などを考慮して)決める事例くらいのものでしょう。よって、リレーは選手の走る順番が重要な意味をもつ競技ではありますが、どの選手を選ぶかという段階では順番を決めずにメンバーを選出することがあるわけです。そこで、そもそもリレーの選手に選ぼうとする選択肢になりえる選手が20名いたとして、そこから4名を選抜するという状況を考えてみると、もちろんそういう状況では最初から順番なんて考えなくてもよい選び方をしているのですから、わざわざ組合せなのか順列なのかという違いを気にすること自体がナンセンスだと言えます。逆に言えば、組合せとして問題になる事例で順番を気にしなくてもいいのは、その答えとなる選び方が順番を気にしなくてもいいことだからだとしか言えないでしょう。もし走る順番を決めたうえでリレーの選手を選ぶというなら、それは最初から順番を決める必要があると条件に含まれているのですから、順番を無視などできるわけがありません。このように考えると、順列と呼ばれる要素のひとまとまりや、組合せと呼ばれる要素のひとまとまりについて、それらが他と区別されなくてはいけない理由というものは、何か元になる集合から要素を選ぶための条件や事情にしか答えはないと言えるでしょう。何かから何かを選び出すという操作そのものに、順列あるいは組合せのどちらかと結びつくような特性はないわけです。実際、順列や組合せの初等的な説明にはお馴染みと言って良い樹形図(何かから何かを選んだ結果とか、選ぶ様子を描くものです)は、順列を数えるためにも使えますし、組合せを数えるためにも使えます。

冒頭に戻る

5. 例題に取り組む

以上の議論から、或る集合から要素を取り出すということには何の違いもなく、それが順列であるか組合せであるかは初期条件なり設問が決めることだと言えそうです。では、或る設問で求められている事が順列なのか、それとも組合せなのかを区別するには、どうすればいいでしょうか*

*受験でも、しばしば起きるミスとして「題意を取り違える」という事例があって、場合の数という分野では、順列として数えるべきことを組合せとして数えたり、組合せとして数えるべきことを順列として数えたりするようなミスが起きやすいと言われています。加えて、考え入れるべき順列を除外したり無視したりするミスや、除外したり無視するべき組合せを数え入れてしまうミスも起きやすいとされていて、今述べたような混乱を少なくすることは、単に受験勉強や校内試験の対策としてだけではなく、現実にものごとを考えて対処するために必要な知恵でもあります。これを、ミスを防ぐヒントなり考え方を知っているか知らないか、あるいは思いつくか思いつかないかだけで、生徒や受験生の序列が生まれるように試験問題や指導要領を仕込むのが中等教育の数学であるなら、われわれはそのようなイカサマ師どもを「教師」や「講師」や「先生」と呼ぶ必要などないでしょう。

民主的な社会において大衆化され制度化された近代国家の教育制度においては、幼稚園から大学院にいたるまで、それらの教育機関で学んでいる生徒や学生の殆どは開成高校の生徒や京都大学の学生ではありませんし、ましてや17歳でハーヴァード大学の教授になるような数学の天才ではありません。民主的な制度としての大衆教育というものは、簡単に言えば全ての生徒(理想的には、あらゆる種類の障害をもつ生徒や学生も含まれます)が同じ学力を身に着けることが至上命題であって、一部の天才など知ったことではなく、お金や時間があれば勝手に勉強して勝手に奨学金をもらったりパトロンを見つけて、勝手に飛び級で大学に行けばいいのです。僕は、才能があると言われる人々を抑え込むような悪平等は全く肯定しませんが、民主的な制度というものはどうであれ暴力的なのです。本来は、人によって得手不得手があったり、生来の障害があったりなかったりするのを無視して全く同じ水準で技能や知識を身に着けさせるのですから、これが暴力でないはずがありません。しかし、そういう「不自然」な暴力ゆえに、人の文明や文化や社会には、自然に適応したり、場合によっては対抗する力があるのだと思っています。

では、ここで問題を一つ考えてみます。

1・4 1, 2, 2, 3, 3, 3, 4, 4, 4, 4 の10個の数字がある.

  1. (1) 10個の数字のうち3個を用いて作られる3桁の整数は全部で何個あるか.
[東京出版編集部, 2011: 8; 京都教育大学]

このような問題があると、これまでに議論してきた範囲の理解だけで解いてゆくなら、もちろん力技(brute force)で全ての場合を選び出してゆくことになります。あくまでも参考として、みなさんはこんなことはしないと思いますが、仮に設問に出てくる数字をそれぞれ区別があるかのように、「2, 2」は「^^2_1, 2_2^^」などとして並べてみましょう。つまり、添え字のある数を要素とする初期条件の集合は以下のとおりとなります。

$$\lbrace 1, 2_1, 2_2, 3_1, 3_2, 3_3, 4_1, 4_2, 4_3, 4_4 \rbrace$$

そして、これらを全て別々の数字であると見做して扱うことにすると、これらの中から三つの数字を使って作れる整数は幾つあるのでしょうか。前の節で紹介した順序列を使うと、以下のとおりとなります。

$$ \langle \langle 1, 2_1 \rangle, 2_2 \rangle, \langle \langle 1, 2_1 \rangle, 3_1 \rangle, \langle \langle 1, 2_1 \rangle, 3_2 \rangle, \langle \langle 1, 2_1 \rangle, 3_3 \rangle, $$ $$ \langle \langle 1, 2_1 \rangle, 4_1 \rangle, \langle \langle 1, 2_1 \rangle, 4_2 \rangle, \langle \langle 1, 2_1 \rangle, 4_3 \rangle, \langle \langle 1, 2_1 \rangle, 4_4 \rangle, $$ $$ \langle \langle 1, 2_2 \rangle, 2_1 \rangle, \langle \langle 1, 2_2 \rangle, 3_1 \rangle, \langle \langle 1, 2_2 \rangle, 3_2 \rangle, \langle \langle 1, 2_2 \rangle, 3_3 \rangle, $$ $$ \langle \langle 1, 2_2 \rangle, 4_1 \rangle, \langle \langle 1, 2_2 \rangle, 4_2 \rangle, \langle \langle 1, 2_2 \rangle, 4_3 \rangle, \langle \langle 1, 2_2 \rangle, 4_4 \rangle, $$ $$ \langle \langle 1, 3_1 \rangle, 2_1 \rangle, \langle \langle 1, 3_1 \rangle, 2_2 \rangle, \langle \langle 1, 3_1 \rangle, 3_2 \rangle, \langle \langle 1, 3_1 \rangle, 3_3 \rangle, $$ $$ \langle \langle 1, 3_1 \rangle, 4_1 \rangle, \langle \langle 1, 3_1 \rangle, 4_2 \rangle, \langle \langle 1, 3_1 \rangle, 4_3 \rangle, \langle \langle 1, 3_1 \rangle, 4_4 \rangle, $$ $$ \langle \langle 1, 3_2 \rangle, 2_1 \rangle, \langle \langle 1, 3_2 \rangle, 2_2 \rangle, \langle \langle 1, 3_2 \rangle, 3_1 \rangle, \langle \langle 1, 3_2 \rangle, 3_3 \rangle, $$ $$ \langle \langle 1, 3_2 \rangle, 4_1 \rangle, \langle \langle 1, 3_2 \rangle, 4_2 \rangle, \langle \langle 1, 3_2 \rangle, 4_3 \rangle, \langle \langle 1, 3_2 \rangle, 4_4 \rangle, $$ $$ \langle \langle 1, 3_3 \rangle, 2_1 \rangle, \langle \langle 1, 3_3 \rangle, 2_2 \rangle, \langle \langle 1, 3_3 \rangle, 3_1 \rangle, \langle \langle 1, 3_3 \rangle, 3_3 \rangle, $$ $$ \langle \langle 1, 3_3 \rangle, 4_1 \rangle, \langle \langle 1, 3_3 \rangle, 4_2 \rangle, \langle \langle 1, 3_3 \rangle, 4_3 \rangle, \langle \langle 1, 3_3 \rangle, 4_4 \rangle, $$ $$ \langle \langle 1, 4_1 \rangle, 2_1 \rangle, \langle \langle 1, 4_1 \rangle, 2_2 \rangle, \langle \langle 1, 4_1 \rangle, 3_1 \rangle, \langle \langle 1, 4_1 \rangle, 3_2 \rangle, $$ $$ \langle \langle 1, 4_1 \rangle, 3_3 \rangle, \langle \langle 1, 4_1 \rangle, 4_2 \rangle, \langle \langle 1, 4_1 \rangle, 4_3 \rangle, \langle \langle 1, 4_1 \rangle, 4_4 \rangle, $$ $$ \langle \langle 1, 4_2 \rangle, 2_1 \rangle, \langle \langle 1, 4_2 \rangle, 2_2 \rangle, \langle \langle 1, 4_2 \rangle, 3_1 \rangle, \langle \langle 1, 4_2 \rangle, 3_2 \rangle, $$ $$ \langle \langle 1, 4_2 \rangle, 3_3 \rangle, \langle \langle 1, 4_2 \rangle, 4_1 \rangle, \langle \langle 1, 4_2 \rangle, 4_3 \rangle, \langle \langle 1, 4_2 \rangle, 4_4 \rangle, $$ $$ \langle \langle 1, 4_3 \rangle, 2_1 \rangle, \langle \langle 1, 4_3 \rangle, 2_2 \rangle, \langle \langle 1, 4_3 \rangle, 3_1 \rangle, \langle \langle 1, 4_3 \rangle, 3_2 \rangle, $$ $$ \langle \langle 1, 4_3 \rangle, 3_3 \rangle, \langle \langle 1, 4_3 \rangle, 4_1 \rangle, \langle \langle 1, 4_3 \rangle, 4_2 \rangle, \langle \langle 1, 4_3 \rangle, 4_4 \rangle, $$ $$ \langle \langle 1, 4_4 \rangle, 2_1 \rangle, \langle \langle 1, 4_4 \rangle, 2_2 \rangle, \langle \langle 1, 4_4 \rangle, 3_1 \rangle, \langle \langle 1, 4_4 \rangle, 3_2 \rangle, $$ $$ \langle \langle 1, 4_4 \rangle, 3_3 \rangle, \langle \langle 1, 4_4 \rangle, 4_1 \rangle, \langle \langle 1, 4_4 \rangle, 4_2 \rangle, \langle \langle 1, 4_4 \rangle, 4_3 \rangle $$

もちろん、樹形図を使う数え方でも同じように全ての場合の数を書き出して数えられます。でも、こんなことはふつうしないでしょう。もちろん、特別な条件がない限り、選び出された数字から作られる3桁の整数は文字ではなく数ですから、或る文字を選び出して作った「342」は、別の或る文字を選び出して作った「342」とは違う文字を使っているかもしれませんが、数としては同じです。「342」というのは、まさしくそう表現される整数の名前にすぎないからです。342という数、いや数それ自体は、もちろん「342」とか「三百四十二」とか特定の表現を固有の名前としてもつわけではありませんし、特定の場所、たとえば渋谷の交差点とかに存在しているわけでもありません。よって、文字の並びとしては「設問に出てきた三つ目の『4』を使った」といった(それはそれで何の意味があるのか分かりませんが)事情があるとしても、三つの数字を並べて342という特定の数を指している「342」という文字には、どの「3」とか、どの「2」を使ったなどという区別がありません。したがって、設問にあるとおり「3桁の整数」として数えるなら、数として同じものを数えることは避けなくてはなりません。必要もなしに物事を重複して数えてしまうことは、前回の「組合せ論の基礎 (1): 数えるということ」という論説でご紹介したように、与えられた条件に従って物事を正しく数えるための、漏れなく重複もなく数えるという要求を満たさないからです。そこで、上記の一覧として列挙した順序列のうち、数としては重複しているものを除外してゆきましょう。そのためには、もちろん ^^2_1^^ と ^^2_2^^ を同じ数であると見做すという条件が必要ですが、そもそも設問は ^^2_2^^ と ^^2_2^^ の区別などしていないのですから、条件は既に(見た目で同じ数字であるというだけの理由ではありますが)満たされていると言ってよいでしょう。仮に、設問が「1, 2, 2, 3, 3, 3, 4, 4, 4, 4」と表記されておらず、たとえば「壱, 2, II, さん, 3, 参, three, vier(ドイツ語で4のこと), four, 4, IV」などと表記されていたとしても、原則としては同じように扱える筈です。答えを列挙すると、以下のような53通りの順序列が得られるはずです。

^^\langle \langle 1, 2 \rangle, 2 \rangle^^, ^^\langle \langle 1, 2 \rangle, 3 \rangle^^, ^^\langle \langle 1, 2 \rangle, 4 \rangle^^, ^^\langle \langle 1, 3 \rangle, 2 \rangle^^, ^^\langle \langle 1, 3 \rangle, 3 \rangle^^, ^^\langle \langle 1, 3 \rangle, 4 \rangle^^, ^^\langle \langle 1, 4 \rangle, 2 \rangle^^, ^^\langle \langle 1, 4 \rangle, 3 \rangle^^, ^^\langle \langle 1, 4 \rangle, 4 \rangle^^, ^^\langle \langle 2, 1 \rangle, 2 \rangle^^, ^^\langle \langle 2, 1 \rangle, 3 \rangle^^, ^^\langle \langle 2, 1 \rangle, 4 \rangle^^, ^^\langle \langle 2, 2 \rangle, 1 \rangle^^, ^^\langle \langle 2, 2 \rangle, 3 \rangle^^, ^^\langle \langle 2, 2 \rangle, 4 \rangle^^, ^^\langle \langle 2, 3 \rangle, 1 \rangle^^, ^^\langle \langle 2, 3 \rangle, 2 \rangle^^, ^^\langle \langle 2, 3 \rangle, 3 \rangle^^, ^^\langle \langle 2, 3 \rangle, 4 \rangle^^, ^^\langle \langle 2, 4 \rangle, 1 \rangle^^, ^^\langle \langle 2, 4 \rangle, 2 \rangle^^, ^^\langle \langle 2, 4 \rangle, 3 \rangle^^, ^^\langle \langle 2, 4 \rangle, 4 \rangle^^, ^^\langle \langle 3, 1 \rangle, 2 \rangle^^, ^^\langle \langle 3, 1 \rangle, 3 \rangle^^, ^^\langle \langle 3, 1 \rangle, 4 \rangle^^, ^^\langle \langle 3, 2 \rangle, 1 \rangle^^, ^^\langle \langle 3, 2 \rangle, 2 \rangle^^, ^^\langle \langle 3, 2 \rangle, 3 \rangle^^, ^^\langle \langle 3, 2 \rangle, 4 \rangle^^, ^^\langle \langle 3, 3 \rangle, 1 \rangle^^, ^^\langle \langle 3, 3 \rangle, 2 \rangle^^, ^^\langle \langle 3, 3 \rangle, 3 \rangle^^, ^^\langle \langle 3, 3 \rangle, 4 \rangle^^, ^^\langle \langle 3, 4 \rangle, 1 \rangle^^, ^^\langle \langle 3, 4 \rangle, 2 \rangle^^, ^^\langle \langle 3, 4 \rangle, 3 \rangle^^, ^^\langle \langle 3, 4 \rangle, 4 \rangle^^, ^^\langle \langle 4, 1 \rangle, 2 \rangle^^, ^^\langle \langle 4, 1 \rangle, 2 \rangle^^, ^^\langle \langle 4, 1 \rangle, 4 \rangle^^, ^^\langle \langle 4, 2 \rangle, 1 \rangle^^, ^^\langle \langle 4, 2 \rangle, 2 \rangle^^, ^^\langle \langle 4, 2 \rangle, 3 \rangle^^, ^^\langle \langle 4, 2 \rangle, 4 \rangle^^, ^^\langle \langle 4, 3 \rangle, 1 \rangle^^, ^^\langle \langle 4, 3 \rangle, 2 \rangle^^, ^^\langle \langle 4, 3 \rangle, 3 \rangle^^, ^^\langle \langle 4, 3 \rangle, 4 \rangle^^, ^^\langle \langle 4, 4 \rangle, 1 \rangle^^, ^^\langle \langle 4, 4 \rangle, 2 \rangle^^, ^^\langle \langle 4, 4 \rangle, 3 \rangle^^, ^^\langle \langle 4, 4 \rangle, 4 \rangle^^

もちろん、受験数学でも学校で教えられる演習でも、わざわざ効率的な解き方との違いを自覚させるためでもない限り、こんな解き方は推奨されないでしょう。この問題に答える典型的な「解法」の一つをご紹介すると、それは答えとして許容されるパターンを最初に(漏れなく、重複なく)数え上げることであります。つまり、この問題でも、結局は一定の条件を置いたうえで、その条件を満たすような場合の数を全て数え上げよと求めているわけですから、何が数え上げるべき場合に該当するのかを最初からパターンとして決めておけるなら、数えやすくなるというわけです*。そして、それが順列なのか組合せなのかという明快な区別ができていれば、選び出した要素から作った数字の並びが3桁の整数であることは題意から明らかですから、それがどういう3桁の整数であれば答えになるかを考えればよいでしょう。

*受験数学では、そういうパターンがありそうだと期待して解くわけですが、大学で研究されている数学という学問では、そういうパターンがあるという保証などありませんし、寧ろ自分でその保証があるなら何であるかを見つけなくてはなりません。この一点だけでも、いかにお膳立てされた舞台の上で受験数学の問題を解くという芝居を演じているだけなのかという状況が分かると思います。それは、実際のところ学問としての数学でも何でもない、幾つかの流派があろうと結局は試験問題を解くという様式美の芝居にすぎません。

答えになる整数のパターンを考えてみると、上記の三つのパターンがあるだろうと推定できます。ここまで考えたら、あとはパターンごとに場合の数を数え上げるか計算するだけです。

ここで考えたいのは、まず、どうしてそんなパターンがあると思えるのかという問いです*。そして次に、そのパターンが正しいかどうか(漏れなく、重複のない数え方なのかどうか)は何が保証しているのかという問いです。

*もちろん、授業で取り上げられる例題や入試で出題される問題は、出題者が正解を知っていて、受験生や生徒の回答に是非の判断を下せるという体裁がなければ成立しません。よって、敢えてパターンのない、それこそ力ずくで制限時間のあいだに回答しなくてはいけない問題を作ったのでない限りは、何らかのパターンを思いつくかどうかで回答の是非を下す基準にしているでしょう。順列の単純な階乗の計算(ただの掛け算です)ができるかどうかを、東大の入試問題の出題者がチェックしているとは思えません(もちろん、そんな掛け算でミスをするような受験生は東大に必要ないでしょう)。しかし、そういうパターンがあるとかありそうだという見込みだとか予想をつけられる一定の指導や訓練もなしに、「数学的センス」だの何のと、教えられもせずに自然と体得したか、あるいは生まれながらに才能としてもっている人間しか数学の問題を解けないかのような指導をしたり、そういう人々に近づけるような秘儀や教義を「解法」と称してバラ撒いたり、予備校で延々と喋っているだけの人々に、まともな数学教育など永遠にできないでしょう。

ここで、使える数字の中から異なる数字を一つずつ選び出すという操作で作られた数字が全部で幾つあるのかという、(3) のパターンについては、順列の考え方が使われています。そして、(3) だけを考えるなら、この設問で登場する初期条件だった、

$$\lbrace 1, 2, 2, 3, 3, 3, 4, 4, 4, 4 \rbrace$$

は、

$$\lbrace 1, 2, 3, 4 \rbrace$$

でも構わないということが分かります。そして、そう考える方が順列という方法を使うのに見通しが良くなるとも言えます。全て違う数字を使うという条件があるのですから、重複した数字は(重複しないで全ての場合を数え上げるという目標にとっては)邪魔なだけだからです。このようにして、或る条件のもとで場合の数を全て数え上げるという課題について、順列と組み合わせを必要に応じて使い分けることが頻繁にあるのですが、それらをどう組み合わせたら漏れなく重複もなしに数え上げられるのかという基準なり指標を見つけることはできるのでしょうか。恐らく一般論として言えば、「ない」というのが答えになるのでしょう。なぜなら、与えられた問いについて答えることができたとしても、その方法が何らかの計算であるとは限らず、それどころか方法が一つである保証もないからです。前回の記事でもご紹介したように、或る条件にしたがって物事を数え上げるというだけのことなら、計算などしなくても数えるだけで済むことがありますし(目の前に置かれているミカンを数えよと言われて、数学の参考書を引っ張り出す人はいません)、場合の数を全て数え上げるために使う物事(サイコロ一つでもいいですし、大文字のアルファベットでも構いません)について、どういう数え方を問うかは幾らでも条件の出し方があるからです。アルファベットの小文字から一筆書きで書けない文字だけを数え上げよと問われたとき、何を計算しますか(恐らく答えは "f," "i," "j," "t," "x" でしょう)。積の法則や和の法則、あるいは順列でも組み合わせでも、お好きなら高度な組合せ論の理論でも構いませんが、それらを使う必要があると思いますか。このようなわけで、数学の問題つまり設問になっている時点で、それらは中学生や高校生が何らかの仕方で規則性を見つけて問題を解く、つまりは一部にしろ学んだ規則性を与件に当てはめて計算することが期待されているという、最初から制約された条件のもとで物事を考えている、一種の演劇だと理解した方がいいということになります*

*もちろん、だからといって数学を学んでも現実の問題を解く役に立たないとか、「実社会」だの「世の中」はもっと複雑だなどと言っても無益でしょう。そういうことを言う人に限って、自分自身の抱えている問題についてすら合理的に分析したり理解することを怠り、単なる人間関係や周りの対応という成り行きに任せて仕事をしたり生活しているに過ぎなかったりするからです。やろうと思えば、数学を活用する手は幾らでもあり、それは東大の博士号を持っていようと中卒だろうと殆ど関係ありません。使える手立てを使わない人には、それを使わない人生しか選択肢がないという事実はしっかり覚えておいた方がよいでしょう。もちろん、死ぬ間際に出版するような自費出版のエッセイなどで泣き言や恨み言をセンチメンタルに書いてみたり、「これはこれでいい人生だった」などと悲惨な憐憫や気晴らしに没入するのも凡人にとっては一つの生き方でしょう。でも、いかに僕も含めた大半の人間が凡人であろうと、チャンスや可能性を自ら手放して凡庸に生きるかどうかは別の話です。

以上の例題では、設問に求めたい場合の数を全て数えるための与件や条件が示され、それらを数えるために必要かつ十分な条件として三つのパターンがあり、そして個々のパターンについて順列なり単純な列挙なりを使って数えたという手順を追っています。本稿は、そもそも二つのテーマを扱っており、いま区別した手順の中で進められていることが何を基準にしていたり、どういうアイデアを利用しているのかが教科書や参考書では示されていない(「数学的センス」だ「解法」だと北斗神拳の秘儀のように予備校でしか教えられなかったり、自発的に思いつくような「出来の良い生徒」しか身に着けられない頓智の才能として、学校では全く教育されていないように思える)という教育への不信感に端を発しているので、全く動機はプライベートなものであって、しかも或る種の怒りに近い動機もあります。僕らが適正にものを理解したり考えて判断するために有効な手立てとして数学という成果を使えるというのに、その教育や啓発が杜撰なせいで、僕のように「数学者や数学教師こそ論理的な説明や思考ができていない」と考える哲学者がいたり、「女に三角関数は不要」などと言い出す人がいまだにいるわけです。

設問から条件を満たす場合の数を全て数えるというタスクについて、それがこれこれの数え方で必要かつ十分であると言えるためには、数え方そのものを必要かつ十分であると言えるために、それこそ全て数え上げる必要があります。順列や組み合わせの計算手順は、はっきり言えば覚えてしまえばどうということはありません。寧ろ、このテーマで難しいのは、どうして問題が与えられると順列や組み合わせだけで解けると生徒が思い込んでしまったり、あるいはそれを期待して御膳立てされたような問題ばかりを繰り返すのかということです。こんな、数学教師と生徒の合意で繰り広げられる演劇のようなことを500年ほど繰り返したところで、「数学的な思考」など身に着くわけがありません。せいぜい、地球上に「問題を解く」という型を覚えた大根役者が何億人と育つだけの話でしかありません。こんなものは、数学の教育とは言えません

前回でも述べたように、任意の与件において場合の数を全て数える一般的かつ普遍的な一つの方法というものはありません。また、それら場合の数が幾つかの方法で数えられるとしても、その数え方を数え上げるための一般的かつ普遍的な方法もないというのが、数学に携わる知性として正しいスタンスだと言えます。そして、その分からなさのゆえに数学者のやることには価値も意味もあるわけです。もしも、どちらの意味にせよ、あらゆる与件に対応して数え方を引き出せる方法があるなら、その分野に関して数学者は不要であり、計算機にプログラミングすればいいだけのことです(もちろん、一部の分野や手順については、既に Computational Mathematics とか Experimental Mathematics として実現しています)。

なお、お恥ずかしながら本稿は2022年に作成を一時中断したまま放置していたため、この後に何を書こうとしていたのか分からない状態となってしまっています。しかし、ここまでの議論は先の記事との関わりで公開しておく必要を感じるので、不十分ながら公開することとしました。

冒頭に戻る

参考文献

Mazur, David R.

2010

Combinatorics: A Guided Tour. The Mathematical Association of America (MAA Textbooks), 2010.

大矢雅則, et. al.

2015

『新編 数学A』, 数研出版, 2015(2011年3月16日、文部科学省検定済).

東京出版編集部

2011

『大学への数学 ポケット日日の演習 (3) 場合の数・確率編』, 東京出版, 2011.

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook