所以,我必须搜索有一些缺失字母的单词(用在填字游戏中),并且还必须保留剩余空格的可能单词列表。
现在我的问题是,如果用于搜索的最快算法,我已经用Google搜索了一下。 但是,如果我用trie编写这个代码,那对我来说是多么难以转向爆破特征。??
如果你没有得到你的东西可以评论澄清任何一点,请耐心等待。
答案 0 :(得分:1)
首先是免责声明,我还没有写过爆炸声。但是,在阅读你的问题时,我发现了提出爆发特工的初始论文Burst Tries: A Fast, Ecient Data Structure for String Keys,这听起来很直接。我写了几个trie数据库和许多附件函数。
从我读到的内容听起来就像你按照标准方法编写trie并简单地在你的struct中添加一个bst选项并将其用于最后一个char序列。然后在你的trie类中添加一个'burst'函数,在你的设置中,将bst'爆发'到一个新的trie结构级别并继续使用bst后缀树。
所以,我认为你的问题的答案是肯定的,很容易将你的特里转换为爆发特里。
答案 1 :(得分:1)
只要你拥有正确的抽象层,将trie变成一个爆发trie实际上非常简单。那个爆炸特里的文章Scala implementation(混合了GWT&trie实现中的一些想法)在空间方面非常有效(并且空间约束在处理时是最明显的)特里结构)。
如果您想构建自己的,请查看该实现以获得指导。它有点通用,因此它可以以不同的方式使用;但如果您使用JVM并且不介意使用scala库,它应该适用于您的用例。