2010-10-07 80 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的答案並希望得到的特徵列表不會太長。