与えられたあみだくじの初期状態(上部の数字の並び $1, 2, 3, ..., 9$)と最終状態(下部の数字の並び $8, 5, 4, 9, 1, 3, 2, 7, 6$)から、どのように横棒を引けば、そのあみだくじを完成させられるか? 一般的な$n$本の縦棒の場合について、その方法を考察する。ヒントとして、横棒を1本引くことは隣り合った数字を入れ替えること、順列における各数の転倒の個数に注目することが与えられている。
2025/6/28
1. 問題の内容
与えられたあみだくじの初期状態(上部の数字の並び )と最終状態(下部の数字の並び )から、どのように横棒を引けば、そのあみだくじを完成させられるか? 一般的な本の縦棒の場合について、その方法を考察する。ヒントとして、横棒を1本引くことは隣り合った数字を入れ替えること、順列における各数の転倒の個数に注目することが与えられている。
2. 解き方の手順
この問題は、与えられた順列を、隣り合う要素の入れ替え(swap)のみを使って、初期状態である に並び替えることを意味します。言い換えれば、与えられた順列をソートする際に必要なswap操作の手順を求める問題です。これはバブルソートの手順を逆にたどることに相当します。転倒数と横棒の関係を利用します。
具体的な手順は以下の通りです。
1. **最終状態の順列を初期状態にソートする手順を考える**: 最終状態の順列 $8, 5, 4, 9, 1, 3, 2, 7, 6$ をソートして、初期状態の順列 $1, 2, 3, 4, 5, 6, 7, 8, 9$ に変えるための隣接要素のswap操作の手順を記録します。バブルソートのように、小さい数字から順番に正しい位置に移動させることを考えます。
2. **swap操作と横棒の対応**: swap操作は、あみだくじの横棒を引く操作に対応します。swap操作を行った隣接する数字に対応する縦棒の間に横棒を引きます。
3. **具体的な横棒の引き方**:
* まずは1を正しい位置に移動させます。 において、1は5番目にあります。そこで、1と9の間、9と4の間、4と5の間、5と8の間に横棒を引くことで、1を先頭に移動させます。順列は となります。
* 次に2を正しい位置に移動させます。 において、2は7番目にあります。そこで、2と3の間、3と9の間、9と4の間、4と5の間、5と8の間に横棒を引くことで、2を2番目に移動させます。順列は となります。
* 同様の手順で3, 4, 5, 6, 7, 8, 9を順番に正しい位置に移動させていきます。
* 注意点として、ある数字を正しい位置に移動させる際に、すでに正しい位置にある数字との間で横棒を引く必要はありません。
4. **一般的なnの場合**: 一般的なnの場合も、与えられた順列をソートするための隣接要素のswap操作を記録し、それに対応する横棒を引いていくという考え方は同じです。
3. 最終的な答え
あみだくじを完成させるための横棒の引き方は、最終状態の順列を初期状態にソートする際のswap操作に対応します。具体的には、最終状態の順列 から、1, 2, 3...と順番に数字を正しい位置に移動させるために必要な隣接要素のswap操作を求め、それに対応する縦棒の間に横棒を引けばよいです。一般的なの場合も同様に、与えられた順列をソートする際のswap操作に対応する横棒を引きます。バブルソートのような考え方で、必要な横棒を一つ一つ決定していくことになります。