順列とは
順列(じゅんれつ)とは、いくつかある要素の中からいくつかの要素を選び、それらを「順番(並び順)を区別して」並べたとき、何通りの並べ方があるかを表すものです。数学ではアルファベットの「P(Permutation)」を使って表現します。順列では、並べる順番が異なれば、それは別のパターン(異なる通り)としてカウントするのが最大の特徴です。セキュリティ分野におけるパスワードの総当たり攻撃(すべての組み合わせを試す手法)を防ぐために、どれだけのパスワードパターンが存在するかを計算する際や、最短のルートを計算するアルゴリズムの設計などで順列の考え方が必要とされます。
具体例
「A」「B」「C」の3枚のカードから、2枚を選んで左から順に並べる方法が何通りあるかを考えます。
並び順を区別するため、以下の組み合わせが考えられます。
1. 「A - B」
2. 「B - A」
3. 「A - C」
4. 「C - A」
5. 「B - C」
6. 「C - B」
計算式: 3 × 2 = 6通り(3P2)
「A - B」と「B - A」は使っているカードは同じですが、並び順が違うため別々のパターンとして「6通り」と数えます。これが順列の基本的な考え方です。
もう少し詳しく
順列の考え方は、コンピュータサイエンスの様々なアルゴリズムやセキュリティの分野で極めて重要な役割を果たします。順列の総数を求める計算式は、n個の異なるものからr個を選んで並べる場合、「n P r = n × (n-1) × (n-2) × ... × (n-r+1)」となります。この「順番を考慮する」という特性は、例えばブルートフォース攻撃(総当たり攻撃)への耐性を評価する際に直結します。4桁の暗証番号(0〜9の10種類の数字を重複を許して4つ並べる=重複順列)の場合、パターン数は 10の4乗 = 10,000通りとなります。システム管理者は、このような順列の計算を用いることで、「現在のパスワードの文字数と種類であれば、最新のコンピュータで総当たり攻撃を受けた場合に何秒で突破されるか」というリスク評価を行い、適切なパスワードポリシー(大文字小文字記号を混ぜて8文字以上など)を策定します。
また、有名なアルゴリズム問題である「巡回セールスマン問題(複数の都市をすべて1回ずつ訪問して出発点に戻る最短ルートを求める問題)」などでも順列が登場します。訪問する都市の順番をすべて洗い出す必要があるため、都市の数が増えると順列の数(n!:階乗)が爆発的に増加し、スーパーコンピュータを使っても計算が終わらなくなる「組み合わせ爆発」という現象が起こります。このように、問題の計算量(解くための難しさ)を評価する上でも、順列の概念は欠かせない知識となっています。
試験でのポイント
試験では、順列の計算式を直接問う問題だけでなく、情報セキュリティやネットワークの問題と絡めた応用問題として出題される傾向があります。特に多いのが、「数字とアルファベットを組み合わせたパスワードを作る際、特定の条件(最初の文字はアルファベットなど)を満たすパターンは何通りあるか」を計算させる問題です。この場合、単なる順列の公式を丸暗記しているだけでは解けず、各桁に入り得る文字の数を論理的に掛け合わせていく(積の法則)という本質的な理解が求められます。
順列(P)と組合せ(C)のどちらを使って計算すべきか迷いやすい点も、受験生がよく陥る罠です。見分けるポイントは、「選んだ要素を並べ替えたときに、意味が変わるか(別のものとして扱うか)」です。パスワードや暗証番号、役職(委員長と副委員長を選ぶなど)のように、順番に意味がある場合は「順列」を使います。試験本番で迷った時は、公式に頼り切るのではなく、「1桁目には何通りの選択肢があるか」「2桁目はどうか」と具体的に書き出して掛け算をしていく方法をとると、ケアレスミスを防ぎやすくなります。
関連する用語
組合せ、確率、階乗