n個の整数値のセグメントのベクトルが与えられた場合、他のセグメントのほとんどを含むセグメントを計算するためのO(n log n)アルゴリズムを探しています。実際、私はそれらのセグメントの数にのみ興味があります。
セグメントツリーと区間ツリーのバリエーションを試しましたが、関連するものはありません。私が抱えている本当の問題は、半順序から来ています。順序が合計の場合、包含ツリーを直接計算することで問題がはるかに簡単になります。
例 :a = [4;11] b = [2;7] c = [5;8] d = [6;7] e = [3;9] f = [1;10] g = [10;42]
ここに、ecbを含むfと最大のdがあります。もちろん、gははるかに長いですが、他のセグメントは含まれていないため、最大のセグメントの問題ではありません。
順序グラフを表示できます(推移的なアークは表示されていません):
f -----> b ---> d
\-->e--->c-/
a-/
g
私にとっての主な問題は、セグメントを処理している間は除外できないことです。これは、ある時点で、fに含まれていないサブセグメントが表示され、最大のセグメントになる可能性があるためです。