Algorithm 公共子串的高效查询

Algorithm 公共子串的高效查询,algorithm,data-structures,Algorithm,Data Structures,例如,我有一个对象的表示 子对象:H1,H2,F1,F2 其中,每个HanfF表示一个特定的较小对象。我希望能够轻松地查询,以检查所有具有3个共同子对象的表示 例如H1、H4、F1、F2将返回,甚至H1、H2、F1、F5也将返回。当我为H1、H2、F1、F2查询具有共同字符串表示形式的三部分的对象时 字符串位置很重要,因此H2,H1,F1,F2不同于H1,H2,F1,F2 暴力行动计划是不可能的,因为我有数千个这样的字符串要比较。我正在考虑通过使用后缀树来解决这个问题 有没有更有效的数据结构可以

例如,我有一个对象的表示
子对象
H1
H2
F1
F2
其中,每个
H
anf
F
表示一个特定的较小对象。我希望能够轻松地查询,以检查所有具有3个共同子对象的表示 例如
H1、H4、F1、F2将返回,甚至
H1、H2、F1、F5也将返回。当我为
H1
H2
F1
F2
查询具有共同字符串表示形式的三部分的对象时

字符串位置很重要,因此
H2
H1
F1
F2
不同于
H1
H2
F1
F2

暴力行动计划是不可能的,因为我有数千个这样的字符串要比较。我正在考虑通过使用后缀树来解决这个问题


有没有更有效的数据结构可以用来解决这个问题?

正如我在问题中所说的,我求助于使用后缀树。这样的树可以让我快速查询树中的特定子字符串,并返回包含该特定子字符串的所有对象。我不知道是否存在更好的解决方案,但后缀树对我的问题很有效。

他们的位置需要匹配还是只匹配值?例如,一个xcd和一个cyd有3个匹配元素,或者2个?确实位置很重要,很抱歉没有把它列下来。在较小的物体的宇宙中,物体的最大数量是多少?最长对象表示法中有多少个小对象?@DilumRanatunga我定义的H或F的id的最大数量,但每个H对象和F都有一个特定的唯一id
,每个H对象和F都有一个特定的唯一id
,如果使用map(其中4个),我想你可以在O(1)或O(logn)中这样做。如果在不同的子对象之间重用这些H和F对象,则复杂性将更高,具体取决于重用H和F的频率。