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