Mathematics
Examination
Test
Archives
【1】 を正の整数とするとき,からまでの個の整数が任意の順序で並んだ列を,整数列と呼ぶことにし,を整数列の長さと呼ぶ.整数がこの順に並んだ整数列を,と表記する.たとえば,長さの整数列には,次のつがある.
長さの整数列がつ与えられたときに,隣接するつの整数の順序を入れ換えることを繰り返して,昇順列,つまり整数が小さいものから順に並んだ整数列に変換したい.隣接するつの整数の順序を入れ換えるのは,整数と,その直後の整数が,を満たす場合だけである.この操作を,スワップと呼ぶことにする.たとえば,整数列に対しては,スワップを回行う次の手順で,昇順列に変換できる.ここで,矢印「」は,回のスワップを表す.また,それぞれのスワップによって入れ換えられる整数を,下線で示す.
(1)
この変換に関して,以下の問題に答えよ.
[問題1] つの整数列に対して,スワップできる整数の組が,つ以上存在することがある.たとえば,に対しては,とをスワップしてもよいし,とをスワップしてもよい.したがって,与えられた整数列を昇順列に変換する手順は,通りとは限らない.たとえば,に対しては,上の(1)の手順以外に,次の手順がある.
しかし,与えられた整数列を昇順列に変換するために必要なスワップの回数は,手順とは関係なく一定である.このことを証明せよ.
[問題2] 与えられた整数列を昇順列に変換するために必要なスワップの回数を,以下では単にスワップ数と呼ぶことにする.長さのすべての整数列のうちで,スワップ数が最大になるのは,降順列,つまり整数が大きいものから順に並んだ整数列だけである.このことを証明せよ.
[問題3] 長さのすべての整数列のスワップ数の総和を,と表す.のとき,長さの唯一の整数列は昇順列なので,スワップ数はである.したがって,である.また,長さの整数列とのスワップ数は,それぞれとなので,である.以上の整数に対して,を,を使って表す漸化式を導け.
[問題4] 長さの整数列は,全部で個ある.これらのスワップ数の平均値
を表すの多項式を導け.
[問題5] 整数列の先頭から順に整数を調べていって,スワップ可能な組があればスワップする,という一連の処理を,スキャンと呼ぶことにする.つまり,回のスキャンでは,番目()の整数と,その直後の番目の整数がスワップ可能であればスワップする,ということを,をから順にまで繰り返すのである.たとえば,をスキャンすると,まず先頭のがとスワップされてとなり,次にの番目の整数がとスワップされてが得られる.したがって,回のスキャンによって,は,に変換される.このことを次のように表記する.
スキャンを何回か繰り返すことによって,与えられた整数列を昇順列に変換することを考える.整数列を回スキャンして,もしスワップが一度も行われなければ,その整数列はすでに昇順列なので,変換は終了する.スキャンを回行って,もしスワップが一度でも行われれば,もう一度スキャンする.これを,スキャン中にスワップが一度も行われなくなるまで繰り返す.たとえば,に対しては,次のように回のスキャンで昇順列に変換でき,さらに回目のスキャンで,昇順列になっていることを確認できる.
したがって,を昇順列に変換するためには,回のスキャンを必要とする.
長さの任意の整数列を昇順列に変換するために必要なスキャンの回数は,以下であることを証明せよ.
[問題6] 長さの整数列で,昇順列に変換するために回のスワップを必要とする整数列全体を考える.そのような整数列のうちで,スワップ数が最大のものは,それぞれのについてつずつ存在する.その整数列を求め,それが長さの整数列のなかで唯一のものであることを示せ.
[問題7] 長さの整数列で,昇順列に変換するために回のスキャンを必要とする整数列全体を考える.そのような整数列のうちで,スワップ数が最小のものは,それぞれのについてつずつ存在する.その整数列を求め,それが長さの整数列のなかで唯一のものであることを示せ.