分割統治の古典的な用途は、次の問題を解決することです。
アレイ所与対:異なる、同等の要素をアレイ状に反転ペアの数をカウントし、ようにと。(i 、j )a [ i ] > a [ j ] i < j
これに対する1つのアプローチは、マージソートを実行することですが、副問題の反転ペアの数もカウントします。マージステップ中に、2つのサブ問題にまたがる反転ペアの数をカウントし、サブ問題のカウントに追加します。
これは良いですが、時間アルゴリズムを提供しますが、これは配列を台無しにします。
我々は追加の制約がある場合は、アレイは、読み取り専用であることを、我々はコピーでコピーして取引をする、またはカウントを行うために、バイナリツリーをバランス順序統計のような追加のデータ構造を使用し、どちらも使用することができますスペース。
現在の問題は、実行時間に影響を与えずに、スペースを改善することです。すなわち
反転ペアの数をカウントする時間アルゴリズムはありますか。これは読み取り専用配列で機能し、サブリニア(つまり)スペースを使用しますか?o (n )
均一コストのRAMモデルを想定し、要素はスペースを使用し、それらの間の比較はと仮定します。O (1 )
参照はできますが、説明の方が良いでしょう:-)
ウェブを検索しようとしましたが、これに対する肯定的/否定的な答えが見つかりませんでした。これは単なる好奇心だと思います。