Categories: 未分類

ブロックスワップアルゴリズム

Block_swap_algorithms

ブロックスワップアルゴリズムは、コンピュータアルゴリズムの配列の2つの要素をスワップします。同じサイズの配列の重複しない2つの領域を交換するのは簡単です。ただし、配列の重複しない2つの領域をインプレースで交換することは簡単ではありません。これらの領域は、互いに隣接していますが、サイズが異なります。これを実現するための3つのアルゴリズムが知られています:Bentley’s Juggling、Gries-Mills、およびReversal。 3つのアルゴリズムはすべて線形時間O(n)です(時間計算量を参照)。

反転アルゴリズム
反転アルゴリズムは、回転を使用して説明するのが最も簡単です。回転は、配列要素のインプレース反転です。このメソッドは、配列の2つの要素を範囲内の外部から交換します。回転は、偶数の要素または奇数の配列要素に対して機能します。反転アルゴリズムは、3つのインプレースローテーションを使用して、インプレースブロックスワップを実行します。
領域Aを回転します
領域Bを回転します
領域ABを回転させる
Gries-MillsおよびReversalアルゴリズムは、キャッシュに適したメモリアクセスパターンの動作により、BentleyのJugglingよりも優れたパフォーマンスを発揮します。
回転はサブ領域に分割でき、他の領域とは独立して回転できるため、反転アルゴリズムは適切に並列化されます。

参考文献
^ Jon Bentley、「Programming Pearls」、pp。13–15、209-211。
同様の記事でリストできるように、カテゴリを追加して

admin

Share
Published by
admin

Recent Posts

Bqosta

Bqosta Bqosta(ア…

4週間 ago

Bqerzla

Bqerzla Bqerzla…

4週間 ago

Bqarqacha

Bqarqacha Bqarq…

4週間 ago

Bqaatouta

Bqaatouta  「Bqa…

4週間 ago

Bqaa Safrine

Bqaa_Safrine Bq…

4週間 ago

ベルギー郵政

Bpost  「Bpost」 …

4週間 ago