Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 映射函数以降低时间复杂度?博士资格项目_Algorithm - Fatal编程技术网

Algorithm 映射函数以降低时间复杂度?博士资格项目

Algorithm 映射函数以降低时间复杂度?博士资格项目,algorithm,Algorithm,这是我最后一次参加公司统计考试。我给出了一个我认为很好的答案。我们只知道考试的分数,而不知道具体问题是否正确。我希望社区能对这个问题给予指导,我对答案不感兴趣,而是对正在测试的内容和我可以去哪里阅读更多关于它的内容,并在下次考试前进行一些练习 乍一看,这似乎是一个时间复杂性问题,但当它开始讨论映射函数和预排序数据时,我不知道如何处理。 那你怎么回答呢 这是: 给定从某个域Z中提取的一组项X={x1,x2,…,xn},您的任务是查找该集中是否出现了Z中的查询项q。为了简单起见,您可以假设每个项目在

这是我最后一次参加公司统计考试。我给出了一个我认为很好的答案。我们只知道考试的分数,而不知道具体问题是否正确。我希望社区能对这个问题给予指导,我对答案不感兴趣,而是对正在测试的内容和我可以去哪里阅读更多关于它的内容,并在下次考试前进行一些练习

乍一看,这似乎是一个时间复杂性问题,但当它开始讨论映射函数和预排序数据时,我不知道如何处理。 那你怎么回答呢

这是:

给定从某个域Z中提取的一组项X={x1,x2,…,xn},您的任务是查找该集中是否出现了Z中的查询项q。为了简单起见,您可以假设每个项目在X中只出现一次,并且比较Z中的任意两个项目需要O(l)个时间量

(a) 为检查q是否在X中的算法编写伪代码。算法的最坏情况时间复杂度是多少

(b) 如果l非常大(例如,如果X的每个元素都是一个长视频),则需要有效的算法来检查X中的q\n。假设您可以访问k函数h_i:Z->{1,2,…,m},该函数将Z的一个元素均匀地映射到1到m之间的数字,并让k n。 为使用函数h_1…h_k检查q\in X的算法编写伪代码。请注意,允许您预处理数据。您的算法在最坏情况下的时间复杂度是多少

明确伪代码中的输入、输出和假设


第一种似乎是简单的线性扫描。时间复杂度是O(n*l),最坏的情况是比较所有元素。注意-它不能与
n
呈次线性关系,因为如果对数据进行排序,则没有任何信息


第二个(b)实际上是的变体,这是表示集合的概率方法。使用bloom过滤器-您可能会出现误报(假设某些内容在集合中,而它不在集合中),但决不会出现误报(假设某些内容不在集合中,而它在集合中)。

X的本质是什么?是列表还是数组?如何访问元素,时间复杂度是多少?