2012-06-08 28 views
1
[ 
    [ 
     [2,33,64,276,1], 
     [234,5,234,7,34,36,7,2], 
     [] 
    ] 
    [ 
     [2,4,5] 
    ] 
    . 
    . 
    . 
    etc 
] 

我不是在尋找一個確切的解決方案,因爲上面的結構只是一個例子。我試圖搜索一個可以嵌套在隨機排列的一組ID中的幾個級別深度的ID。通過隨機嵌套數據的最快搜索

目前我只是做一個線性搜索,需要幾分鐘才能得到結果,當每個最深層次有幾百個ID。我想知道是否有人可以建議一個更快的算法來搜索多個級別的隨機數據?如果有問題,我正在用Python做這件事。

注意:ID始終處於最深的級別,並且級別數量對於每個分支都是一致的。不知道這件事是否重要。

此外爲了澄清數據點是獨特的,不能重複。我的例子有一些重複,因爲我只是砸鍵盤。

+1

向我們顯示您的代碼。 – eumiro

+5

如果您的數據確實是隨機的,沒有更快的搜索方式。您*有*訪問每個節點。 –

+0

我只是尋找一個算法的名稱,通過隨機數據點搜索來找到一個特定的算法。我的代碼如何是不相關的。 – Takkun

回答

3

通過隨機數據最快的搜索是線性的。假裝你的數據不是嵌套的,它仍然是隨機的,所以即使是扁平化也無濟於事。

爲了減少時間複雜度,您可以增加空間複雜度 - 保留一個包含ID作爲鍵的字典和任何您想要的信息(可能是指向包含每個級別ID的列表的索引列表),並更新它每次創建/更新/刪除一個元素。