有哪些复杂度比 n^2 要小的来计算给定的 n 个序列中重复的系列的好的算法
Hashing 撞桶就是一样的Hashing的复杂度算O(1)全部检查一遍就是 O(n)如果序列的维度很高,就用局部敏感哈希算法(LSH),先撞桶,然后再计算距离,简单的就是计算欧式距离。不过因为是完全重复,那么应该可以设置好Hash算法,通过完全撞桶的方式来判断。
■网友
根据问题需求可以有不同的方法。 可以将每一个序列映射(例如Hashing)到一个可排序集合(例如一个数字集合),然后排序映射后的集合,在排序的结果中一样的序列就在一起了。预处理复杂度O(NL),排序O(NlogN),其中L是序列的最大长度,N是序列个数。例如:以前的序列是s1,s4,s3,s4,无论你采用什么方法,将其一一对应到4个不同的数字,假设是1,4,3,4,也就是f:s1-\u0026gt;1, f:s4-\u0026gt;4, f:s3-\u0026gt;3, f:s4-\u0026gt;4,然后排序,就得到了1,3,4,4,这样我们就能反推出对应的原序列是s1,s3,s4,s4,发现其中有两个s4了。如果是英文字符串之类的,可以建立一个Trie树,每次添加过程中就知道以前是否添加过了。不过如果量比较大的话,可能空间占用较多。
■网友
参照simhash
推荐阅读
- 医院|感染艾滋病毒初期有哪些征兆?可以自行检查吗?共用马桶会传染吗
- 玩游戏花钱最多的有哪些游戏,哪些人
- 旅行|需要准备哪些物品?全面冬季出游清单,建议收藏带宝宝出门旅行
- 红米手机通过QQ空间的成功营销,给涉足社会化营销的企业有哪些启示
- 互联网在线音乐行业有哪些可能的盈利模式
- 直播会成为品牌传播的另一个途径么有哪些可行的方法感觉有戏又没头绪好捉急。
- 侧重业务逻辑的产品需求规格说明书,需要有哪些要点
- 大学|上海大学第8,前10名有哪些高校?上海市30所大学排名
- 学图像处理有哪些不错的书推荐
- 新浪微博创新基金投资了哪些团队
