我需要存储类型为a的元素集。类型a是部分排序的,因此比较和可以返回更小,更大,相等或不可比的结果。
哈希表的一个问题是,两个相等的元素可以用不同的方式表示,并且我无法访问与相等一致的哈希函数。
比较两个元素可能是一个漫长的过程,因此最小化比较会很有趣。如果需要,可以记住对比较运算符的调用。我现在意识到,我只需要存储反链(或者假设是这样)。更准确地说,我将需要执行的操作如下:
- 从反链中删除一个元素;
- 尝试添加一个元素。如果元素小于成员,则不要添加它,否则,添加它并删除所有小于它的元素。
我还可以用两个整数来绑定每个元素,因此,如果我知道和,那么知道立刻给我。当然,并不意味着 ...与完整的元素比较相比,找到整数范围是一个相对便宜的操作。
1
我认为我们需要了解更多信息,才能明智地回答您的问题。您是否存储了元素并且可以轻松地计算偏序?或者您是否还在某种查找表中存储了部分顺序?您打算如何使用偏序?您是否希望以与线性顺序存储集相同的方式使用它(例如在搜索树中)?
—
安德烈·鲍尔
既然我意识到我只会有反链,那么我不确定有什么比将结果存储在列表中的天真的解决方案更好的了。如果是这样,对不起,麻烦!
—
阿卜杜拉
如果您认为您的问题现在有争议,也许您应该将其标记为删除/结束?
—
Suresh Venkat
集合中的任何两个元素都是无与伦比的,但这并不意味着幼稚的表示是您可以做的最好的事情。例如,考虑按包含顺序排序的有限多重集(=具有除数顺序的整数):根据数据表示(使用基数,使用支持集,…),存在很大的优化潜力。这些优化将在很大程度上取决于订单关系的性质。然后是另一个问题,即决定是否值得保留有关现在删除的元素的信息:您是否经常将它们与新添加的元素进行比较?
—
吉尔(Gilles)'所以
好的谢谢。因此,我添加了一些可能导致优化的信息(整数包围可能性)。
—
阿卜杜拉