3
与えられたn個のシーケンスがソートされているかどうかを調べるには、並列アルゴリズム(コスト最適)が必要です。シーケンスがソートされているかどうかを確認する並列アルゴリズム
与えられたn個のシーケンスがソートされているかどうかを調べるには、並列アルゴリズム(コスト最適)が必要です。シーケンスがソートされているかどうかを確認する並列アルゴリズム
m個のスレッドの場合、各スレッドにn/m個の連続番号のチャンクに1つの番号の重複を付けます。各スレッドで、割り当てられている順序がソート順であることを確認します。すべてのサブシーケンスがソートされている場合、シーケンス全体がソートされます。
例:
[1, 4, 5, 6, 11, 42] => [1, 4, 5, 6*] and [6, 11, 42] with 2 threads
[1, 4, 5, 6, 11, 42] => [1, 4, 5*], [5, 6, 11*] and [11, 42] with 3 threads
*これは、この解決策は複雑さO(N/M)を有する1
の重なりです。
境界要素を分割する前に(オーバーラップなしに)境界要素を確認すると効率的です。もちろん、複雑さがO(m +(n/m))になるため、スレッドの数が少ないほど効率的です。しかし、これはスレッドを起動する前に境界がソートされているかどうかを検証するためのより良い短絡コードを形成します。 –