我要做的是对 NP 完全问题实施启发式方法:我有一个对象列表(匹配项),每个对象都有一个双倍分数。我正在获取按分数 desc 排序的列表中的第一个元素,然后将其从列表中删除。然后将删除绑定到第一个元素的所有元素。我遍历列表,直到没有更多元素。
我需要一个可以有效解决这个问题的数据结构,所以基本上它应该具有以下属性:
1. 通用
2. 总是排序
3. 具有快速键访问
现在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);
}
}
我需要的是排序哈希表之类的东西。