我有一组可变长度字符串,我想验证该集合中至少有一个字符串中是否存在可变长度前缀字符串。并且可以在连续搜索之间添加字符串。
难点在于我不想存储集合的字符串,而是存储集合的节省空间的表示。
例如,请考虑我有以下字符串集:
S = {"abcd","aaaaaaaaa","dcba"}
搜索a
应该返回True
,但搜索b
应该返回False
。我想搜索集合而不将字符串存储在内存中。
如果不存储字符串,可能的解决方案是使用有限状态自动机(fsa)来表示在集合中生成每个字符串的字符序列。换句话说,我将构建匹配集合中所有字符串的正则表达式。但是我不确定它比存储字符串更有效(空间(存储器))。我还想在集合中添加和删除字符串,并且在计算时间方面重新计算fsa可能成本太高。
我正在考虑使用分类算法,例如K-means或SVM,但是想知道是否存在针对此问题的任何空间有效算法。