Garbage Collection

塵も積もれば山

目次

Blog 利用状況

ニュース

C++とかC#とか数学ネタを投下していく予定です。

[その他のページ]
日々の四方山話を綴った日記出水の日記帳

書庫

日記カテゴリ

[アルゴリズム]はみだしシェアソート5

多次元シェアソートの行きつく先を見てみましょう。

要素が増えたとき、1辺の長さを出来るだけ短くしたまま
次元数だけをどんどん増やしてソートを行う事を考えてみます。

最も短い1辺の長さは2です。
256個の要素があったら、1辺が2の八次元立方体を作ってソートします。

また、最後に逆にするのは面倒なので、
ソートする要素の選び方を工夫して
配列は正しい順に並べたままソートをする方法を考えます。

まずは、要素が8個、つまり一辺2の三次元立方体で考えます。
以下の図ができます。

そして、横ソート、縦ソート、段ソートのペアを抽出してみます。

横ソート [1, 2] [3, 4] [5, 6] [7, 8]
縦ソート [1, 4] [2, 3] [5, 8] [6, 7]
段ソート [1, 8] [2, 7] [3, 6] [4, 5]

さらにこれを図示します。

意外に単純な図が出来上がりました。
これなら、棟ソート(四次元方向ソート)やその上も簡単に作れるでしょう。

さて、要素が4つの場合は「横ソート→縦ソート→横ソート」の方法で完了しました。
ではこの要素が8個の場合は何所に段ソートを入れればいいでしょうか。

実は、段ソートを行っていい条件として
縦ソート、横ソート共に完了する必要があります。
それ以前に段ソートを実行しても、ある程度は揃うけど完璧ではないのです。

つまり、三次元シェアソートは以下のようにソートをします。
「横ソート→縦ソート→横ソート→段ソート→
 横ソート→縦ソート→横ソート」
まるで二進数のビットが立っていく様子に似ています。

では、x個の要素(x=2^n)があったときの比較回数を求めてみましょう。
まず、ソート1回ではx/2回の比較が行われます。
そして、ソート回数は(x-1)回行われます。
よって、完了まで必要なソート回数は(x/2)(x-1)です!

あれ…ランダウの記号を用いるとこれは…O(n^2)なのでは??

ということで、これ以上進んでも深みにはまるだけっぽいので
シェアソートはこれで終わりにしたいと思います。

投稿日時 : 2008年9月26日 2:59

Feedback

# re: [アルゴリズム]はみだしシェアソート5 2008/09/28 17:37 れい

> あれ…ランダウの記号を用いるとこれは…O(n^2)なのでは??

多次元にもっていっちゃったらBubbleと同値ですよねぇ。
比較の順番と結果の並び方が違うだけで。

> シェアソートはこれで終わりにしたいと思います。

え~!
一読者としてはまだまだ続きが欲しいです。

シェアソートのグリッドは一つのソートを小さい独立した(同時実行可能な)ソートn個に分割するためにあるので…
その辺解説してくれるとありがたいなぁとか。

ソートエンジンの個数nは普通限られているので、要素数がn^2に満たない場合とかn^2より大きい時にどうしたらよいのか、とか。

複数スレッドとかプロセスで実際にどうコーディングするのか、とか。

最近コア数増えてますから、Shear+Quickなソートが当たり前になるかもしれませんねぇ。

そういや、某スパコンでソートしたときはShearがわからなくてMergeで誤魔化しました。
笑われました。(泣

# re: [アルゴリズム]はみだしシェアソート5 2008/09/28 19:22 出水

続きはネタさえ振ってくれればガンガン書きますよ!
とりあえず、n^2に満たない時は後で書きます

複数コアを考えたソートなら、なおさらクイックソートだけを使った方がよくないです?
シェアソートは縦横の切り替わりの同期が結構かかると思うんですよね
まぁ、複数コアのソートも面白そうなのでこのネタもそのうちに…

あと、シェアソートとは順列、逆列が多数出てくるので、
単純なクイックソートとは相性悪いです
実際、どのソートを使うかは結構悩みどころかも

# Woah! I'm really loving the template/theme of this website. It's simple, yet effective. A lot of times it's very hard to get that "perfect balance" between user friendliness and visual appearance. I must say you've done a fantastic job with th 2019/04/04 18:55 Woah! I'm really loving the template/theme of this

Woah! I'm really loving the template/theme of this website.
It's simple, yet effective. A lot of times it's
very hard to get that "perfect balance" between user friendliness and visual appearance.
I must say you've done a fantastic job with this. In addition, the blog loads super fast for me on Chrome.
Exceptional Blog!

# I visited multiple blogs except the audio quality for audio songs present at this site is actually fabulous. 2019/09/02 3:39 I visited multiple blogs except the audio quality

I visited multiple blogs except the audio quality for audio songs present at this site is actually fabulous.

タイトル
名前
Url
コメント