1
ストリーミング形式での順列のパリティの計算
順列のパリティを計算するワンパスアルゴリズムを探しています。入力順列がストリームによって与えられると仮定します。出力は、順列のパリティでなければなりません。決定論的アルゴリズムが使用するメモリ量に興味があります。問題のランダム化アルゴリズムはありますか?π[ 1 ] 、π[ 2 ] 、⋯ 、π[ n ]π[1],π[2],⋯,π[n]\pi[1], \pi[2], \cdots, \pi[n] 1回のパスで反転数を計算する際にメモリを使用することを知っています。上限は、任意のBSTで簡単に取得できます。下限は次のとおりです。http://citeseerx.ist.psu.edu/viewdoc/versions?doi = 10.1.1.112.5622Θ (n )Θ(n)\Theta(n) 残念ながら、論文の下限の証明をパリティの場合に拡張することはできません(または、私にはそれほど明白ではありません)。 また、順列へのランダムアクセスを使用した小さなスペースでのパリティの計算は、決定論的アルゴリズムによって時間とO (log 2 n )メモリで、またはO (n log n )時間とO (log n )ランダム化されたメモリ。http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.2256を参照してくださいO (n ログn )O(nlogn)O(n \log n)O (ログ2n )O(log2n)O(\log^2 n)O (n ログn )O(nlogn)O(n \log n)O (ログn )O(logn)O(\log n) 主な考え方は、順列のパリティが式で計算できることです。ここで、cはサイクル数、nはサイズです。著者は、順列のサイクル分解を行います。したがって、サイクル数を簡単に計算できます。s gn (π)= …