私がやろうとしているのは、NP 完全問題へのヒューリスティックなアプローチを実装することです。オブジェクト (一致) のリストがあり、それぞれに 2 つのスコアがあります。スコアの説明で並べ替えられたリストの最初の要素を取得し、リストから削除します。次に、最初の要素にバインドされたすべての要素が削除されます。要素がなくなるまで、リストを反復処理します。
この問題を効率的に解決できるデータ構造が必要なので、基本的には
次のプロパティを備えている必要があり
ます
。
今SortedSet<T>
がベストフィットのようです。
問題は、私の場合に最適な選択ですか?
List result = new List();
while (sortedItems.Any())
{
var first = sortedItems.First();
result.Add(first);
sortedItems.Remove(first);
foreach (var dependentFirst in first.DependentElements)
{
sortedItems.Remove(dependentFirst);
}
}
私が必要とするのは、ソートされたハッシュテーブルのようなものです。