查找大于部分有序集中给定的元素

时间:2017-09-20 16:47:24

标签: algorithm data-structures partial-ordering

我有一组S类型T的元素。类型<=的元素有一个部分订单T。众所周知,S中的所有元素都没有排序。 然后,我需要一种方法来执行以下查询:具有e类型的元素T,在e'中找到S,以便e <= e' < / em>的

是否存在允许有效执行此类查询的数据结构(没有S的线性扫描)?

重要提示:T是完整的格子。

1 个答案:

答案 0 :(得分:0)

您可以对列表进行预处理,并查找不具有大于这些数字的任何其他元素的元素子集(假设您将所有数字表示为dag,您应该找到所有没有父项的元素)。一旦你有了这个子集,你需要做的就是对这个子集进行线性扫描。我认为你不能比这更好。

此外,您还可以按子集中每个元素的元素数量(按递减顺序)对此子集进行排序。并按顺序扫描元素。