【问题标题】:Prefix matching in objective c目标c中的前缀匹配
【发布时间】:2012-01-29 04:56:16
【问题描述】:

我使用objective-c implementationtrie 进行前缀匹配,但它占用了大量内存(对于 200k 文件路径,它占用 600MB)。任何人都可以建议我在objective-c中进行前缀匹配的任何替代方法吗?

NDMutableTrie *pathsTrie=[[NDMutableTrie alloc] init];
[pathsTrie addString:filepath]; //filepath is NSString
[pathsTrie containsObjectForKeyWithPrefix:pathForItem]

我有 NDMutableTrie,其中包含一些文件路径,我正在检查带有 NDMutableTrie 的文件夹路径。

【问题讨论】:

  • “20 万文件路径”是什么意思?请向我们提供有关您正在搜索的内容的更多信息。有什么理由不使用正则表达式或简单的字符串搜索,因为 600MB 的内存使用是个问题?
  • 您是仅尝试匹配路径名还是通用字符串?

标签: objective-c c cocoa trie


【解决方案1】:

你可以试试OFTrie

【讨论】:

【解决方案2】:

trie 算法故意使用稀疏数据结构来加快搜索速度。如果这对您来说占用了太多内存,您应该考虑使用更保守的内存使用算法,例如将路径存储在有序数组中并通过二进制搜索发现匹配项(无论您使用字节比较还是正则表达式来做实际匹配),或者您可以将整个批次放入数据库并通过查询找到您的匹配项。

【讨论】:

    猜你喜欢
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 2019-01-11
    • 2013-06-03
    • 1970-01-01
    • 2011-01-27
    相关资源
    最近更新 更多