2010-10-07 58 views
1

我们有一组文档,每个文档都有一组功能。 给定特征A,我们需要知道在同一个文档中具有特征B的概率是多少。关于相关功能的数据结构的建议

我想构建一个概率矩阵,s.t: M(i,j)=在文档中具有特征B的概率,假设特征A在那里。

但是,我们有一个附加要求: 鉴于特征A在文档中,所有具有概率> P的特征在同一个文档中。

尽管所有我能想到的是一个概率矩阵的稀疏矩阵,并且在计算之后,对于遍历所有列的每个特征,按P排序,并将其保存在某个链接列表中。 (所以现在我们针对每个功能列出了相应的功能

这个空间复杂度相当大(最坏的情况:N^2,N很大!),每个搜索的时间复杂度为O( N)

任何更好的主意

+0

@yassale:N大于10^3或10^9?千克大或千兆大? – 2010-10-07 13:55:18

+0

@Mark:10^9左右 – Yossale 2010-10-07 14:14:18

+0

估计文件数量?每个文档的最大功能数量?不同功能的总数?这样做会有所帮助,因为通用解决方案只能是稀疏矩阵,但如果您的文档比文档更多,则可以更快地遍历每个文档。测试给定功能是否在文档中有多复杂? – 2010-10-07 14:16:56

回答

1

如果特征的数量与文件的数量,或更大的可比性,考虑举行一个倒排索引:?对每个功能保持(例如排序列表)的文件然后可以通过在特征A和B的排序列表上运行合并来计算给定B的概率。

对于“预计给定A的共同特征”问题,我可以想到比预先计算每个A的答案并希望得到的特征列表不会太长。