如果给定集合是集合的完美子集,那么查找给定子集的最佳方法是什么?

时间:2010-05-24 18:32:40

标签: algorithm set subset

查找给定集(未排序)是否是主集的完美子集的最佳方法是什么。我必须在我的程序中进行一些验证,我需要将客户端请求集与已注册的内部功能集进行比较。

我想通过对内部功能集进行排序(一旦注册后不会更改)并对客户端请求集中的每个元素进行二进制搜索。这是我能得到的最好的吗?我怀疑可能有更好的方法。

有什么想法吗?

此致

微内核

3 个答案:

答案 0 :(得分:3)

假设你选择的语言没有实现一个带有“contains in a set”方法的set类,就像Java一样HashSet ...

一个好的方法是使用hashmaps(又名哈希又称关联数组)

如果您的超集不是太大,请生成一个hashmap,将较大集合中的每个对象映射为true值。

然后,遍历子集中的每个元素。尝试在生成的hashmap中查找元素。 如果你失败了,你的小集不是一个peoper子集。如果你没有失败就完成循环,那就是。

答案 1 :(得分:1)

这取决于你的集合中有多少元素。 对于较大的集合,通常使用Hashset作为mainset会产生最佳性能。

答案 2 :(得分:0)

由于您了解内部功能集,因此可以使用perfect hash function来测试客户端请求集的元素。