第8話 グループ分け
郵政省が民営化される前の話ですから、
今から10数年前の頃でしょうか。
私の記憶によるものですから、
確かな話しではありませんが、
郵便物をグループに分けてから分類するようにしたら、
仕分けの速度がアップして、
郵便物を早く配達できるようになった、
と郵政省が発表していました。
全部をまとめて分類するのではなく、
機械的にいくつかのグループに分けてから、
届け先を仕分けすると早くなったというわけです。
このアイデアを並び換えに採用できないでしょうか。
データを複数のグループに分け、
その中で並び換えをしてから、
全体を並び換えたら、
並び換えのスピードアップが図れないでしょうか。
6 8 3 4 8 2
を例にして思考実験してみましょう。
以下、青は比較、薄茶は交換、緑は何もしないを表し、
丸数字はステップ数を示します。
緑は何もしないを表していますので、ステップ数としてはカウントしません。
6 8 3 4 8 2
を
6 8 3
と
4 8 2
のグループに分けてから並び換えをします。
前半グループ 6 8 3 の並び換え
1巡目
6 8 3 @
6 8 3
6 8 3 A
6 3 8 B
2巡目
6 3 8 C
3 6 8 D
3 6 8 E
3 6 8
3巡目
3 6 8 F
3 6 8
3 6 8 G
3 6 8
交換が1回も発生せず、前半グループの並び換え成功
後半グループ 4 8 2 の並び換え
1巡目
4 8 2 @
4 8 2
4 8 2 A
4 2 8 B
2巡目
4 2 8 C
2 4 8 D
2 4 8 E
2 4 8
3巡目
2 4 8 F
2 4 8
2 4 8 G
2 4 8
交換が発生せずに、後半グループの並び換えに成功。
この2つはそれぞれのスレッドに並行処理させますので、
グループ別のステップ数は多い方を数えれば良いわけです。、
今の事例では両方とも同じ8ですから、8です。
前半と後半を合体した 3 6 8 2 4 8 の並び換え
1巡目
3 6 8 2 4 8 H
3 6 8 2 4 8
3 6 8 2 4 8 I
3 6 8 2 4 8
3 6 8 2 4 8 J
3 6 2 8 4 8 K
3 6 2 8 4 8 L
3 6 2 4 8 8 M
3 6 2 4 8 8
2巡目
3 6 2 4 8 8 N
3 6 2 4 8 8
3 6 2 4 8 8 O
3 2 6 4 8 8 P
3 2 6 4 8 8 Q
3 2 4 6 8 8 R
3 2 4 6 8 8 S
3 2 4 6 8 8
3 2 4 6 8 8 繪
3 2 4 6 8 8
3巡目
3 2 4 6 8 8 繪
2 3 4 6 8 8 繪
2 3 4 6 8 8 繪
2 3 4 6 8 8 繪
2 3 4 6 8 8
2 3 4 6 8 8 繪
2 3 4 6 8 8
2 3 4 6 8 8 繪
2 3 4 6 8 8
4巡目
2 3 4 6 8 8 繪
2 3 4 6 8 8
2 3 4 6 8 8 繪
2 3 4 6 8 8
2 3 4 6 8 8 繪
2 3 4 6 8 8
2 3 4 6 8 8 繪
2 3 4 6 8 8
2 3 4 6 8 8 繪
2 3 4 6 8 8
交換が発生せず、4巡目で終了
全体のステップ数は32回でした。
グループ分けしない場合のステップ数は果たしてどうでしょうか。
