针对多个目标的快速不完全匹配算法

时间:2016-11-23 01:53:23

标签: algorithm

假设我有一组S,其元素为N元组,即(xi1, xi2, ... , xin)

给定元素x = (x1, x2, ..., xn)y = (y1, y2, ..., yn)matches(x,y,M)当且仅当Mx的至少y个元素相等时。< / p>

现在给定一组SmatchSet(x,S,M)会返回Smatches(x,y,M)的元素。

假设S的数据matchSet平均只匹配0或1个元素(偶尔会匹配更多,但很少),是否有办法编写matchSetS结构,以便它的运行时间与S的大小呈亚线性,并且它的空间是合理的(即不在2^L上放S索引,其中L是元素的长度)?

或者,快速运行matchManySet(S', S, M)也是可以接受的,对于matchSet的每个元素运行S',也只需要比{{1}的时间少得多的时间} {} S的大小。

1 个答案:

答案 0 :(得分:0)

这个任务对我来说听起来很有趣。我有一些想法,不幸的是有人应该测试它(我没有时间实现它)。用于存储这些元组的数据结构提醒我后缀树。 (有关更多信息,请参阅https://en.wikipedia.org/wiki/Suffix_tree)。

例如,您可以将set Sx存储在一个后缀树中,将Sy存储在其他后缀树中。在这种情况下,您的任务归结为创建结果后缀树,通过合并给定的两个树(当然,在合并期间,您应该使用特定谓词,如元组是否有K出现)。总体算法复杂度为O(N + M),其中NM是输入后缀树的大小。

我希望这样的想法会对你有所帮助。

编辑:这个想法有很强的限制 - 元组的词典顺序

相关问题