編集: 階層は、ここでの私の目標とはうまくいきません。元のリクエストのままですが、コアリクエスト(重複/非重複ルール)を満たすものを以下に回答しました。
1D 行のセットがあり、それぞれが 2 つの unsigned ints: start と end (start < end) で記述されているとします。重複するかどうかに基づいてグループを作成したいのですが、重複しない行をグループに含めたくありません。ラインが複数のグループに属している場合、グループ内のグループ内のグループを追跡するために、ある種の階層構造が必要になると思います...
ルールは次のとおりです。
- 重複する行は、階層のできるだけ低い位置にグループ化する必要があります。
- 重ならない行は同じグループにできません。
とにかく、ここに例の写真があります:
Line A
ざっと見て、 and Line C
form Group 0
、Line H
and Line I
form Group 1
、 and Line B
isと言えますGroup 2
。と、と、とLine D
はこれらの 3 つのグループすべてに含まれています。したがって、ここには 2 つの層のグループ化がありますが、問題の複雑さによっては、N が存在する可能性があると確信しています。また、私の例が表していないいくつかの問題があることも確信しています。Group 1
Group 2
Line E
Group 0
Group 1
Line F
Line G
これを処理するための典型的なアルゴリズムは何ですか?