我有一些数据:
A
AXNHJNEHWXNOECMEJK
DNFJNXYEEQWhsdbchjsxs
XMJQWsdsEOJdfsKMDJE
...
每一行都是数组,每个字母都是对象。我有比较函数可以说字母A等于字母a(实际上它不是字母。它是俄语单词和比较函数使用形态学让我知道单词是相等的例如матрешка==матрешки==матрешкины和数组是俄语句子。例如:“Мамамылараму”)。我想创建一个树形数据结构,如下所示:
1) A
2.1) BA
2.2) DHBAFH
3.1) BEDMEWA
etc...
否则子节点必须包含父节点的字母。如果你知道如何工作谷歌adwords我认为你可以理解我。我的问题是如何快速做到这一点。我需要创建具有数千个数组的树。比较功能工作非常慢(它使用大字典),这就是为什么速度是真正的问题。
一些简单的数据(对不起俄语):
这里是一组句子
сайты
сайты недорого
сайты дешево
сайты дешево и быстро
красивый сайт по доступным ценам
хочу купить хороший стул
стул по доступным ценам
我们必须创建以下树数据结构
1) сайты
1->2.1) сайты недорого
1->2.2) сайты дешево
1->2.3) красивый сайт по доступным ценам
1->2.2->3) сайты дешево и быстро
其他父节点:
1) хочу купить хороший стул
1) стул по доступным ценам
子节点必须包含更多单词,然后是父节点。
答案 0 :(得分:1)
答案 1 :(得分:1)
从包含一个单词的句子开始。它们都将成为父节点,所以这很简单。
然后继续用两个单词的句子。你必须将它们与每个单字父节点相匹配,因为你的比较慢,所以它会很慢。但是,您可以执行两项优化:首先检查单词是否完全相同。你可以自己做,这会很快。另一个是记住每对比较单词的比较函数的结果。你会浪费一些记忆,但你会获得一些速度。
当节点匹配时,将句子添加到其中。当句子与任何节点不匹配时,将其设为父节点。
对于长度逐渐增加的句子,除了必须尝试匹配匹配的节点的子节点外,您也会这样做,以找到添加句子的正确位置。