我真的不理解這個列表的概率事情。除了聲明「我們必須檢查不超過n/2 + 1個節點(其中n是列表的長度)。給每個第四個節點提前四個指針(圖1c)要求不超過n/4 + 2個節點進行檢查「。 這條語句我在以下鏈接中閱讀:ftp://ftp.cs.umd.edu/pub/skipLists/skiplists.pdfskiplist-我真的需要一個解釋,它是如何插入和刪除
回答
跳過列表在他們的Wikipedia article中解釋得很好。如果你有關於數據結構的具體問題,可以自由地問問他們。來自麻省理工學院
感謝你的幫助。我有插入和刪除功能的問題,我試圖瞭解它們,特別是獲得隨機等級的部分 – 2010-12-12 18:00:26
一種較爲容易理解的解釋可以在這裏找到:http://igoro.com/archive/skip-lists-are-fascinating/
什麼你不理解的是,每節點有1級的鏈接也就是說,在最底層,數據結構本質上是一個鏈表。使用這個搜索節點當然是O(n)操作。
跳躍列表中的每個節點都有至少一個環節:一個在1 水平平均,節點的一半也有在2級鏈路如果這是最高水平在哪個鏈接存在,那麼你可以在O(n/2)中找到任意節點。基本上,您可以按照第二級節點進行操作,直到您找到要查找的項目,或者直到找到其值大於要查找的節點的節點。此時,您下降到1級節點並從前一個節點向前搜索(即比您要查找的節點更少)。
同樣,平均有1/4的節點在第3級有鏈接。使用這些,你可以在O(n/4)中找到任意節點。您首先搜索級別3節點,直到您找到該節點或超過該節點,然後從該點下降到第2級節點,如果沒有找到第2級節點,則下降到第1級節點。
如果您按照數學計算,可以看到如果最大級別爲m
,那麼只要跳過列表中的節點少於2^m
,您的平均搜索時間將爲O(log2(n)),其中n
是列表中的項目數量。
因此,一個跳躍列表節點的結構是這樣的:
SkiplistNode
{
int level;
SomeType data; // the data held in the node
SkiplistNode* forwards[]; // an array of 'level' forward references
}
如果節點具有爲1的level
值,然後將有所述forwards
陣列中只有一個項目。如果它是在第4級,那麼將有四個條目:一個用於每個級別4,3,2,以及1
事實證明,在平均大小的forwards
陣列的是2。即如下進展1 + 1/2 + 1/4 + 1/8 + 1/16, + 1/32, ...
那就是:
Every node has a link at level 1
1/2 of the nodes have a link at level 2
1/4 of the nodes have a link at level 3
1/8 of the nodes have a link at level 4
etc.
現在更清楚了嗎?
- 1. CSS轉換 - 我需要一個解釋
- 2. C++我需要一個解釋
- 3. 我需要一個解釋關於如何類型的作品
- 4. 複雜的c代碼,我需要任何解釋它是如何工作的?
- 5. 我是否需要爲SQL Server 2008的插入和刪除使用鎖定
- 6. 在刪除表之前,我們是否真的需要刪除外鍵?
- 7. 需要一些解釋來了解Grails是如何工作的
- 8. 需要深入解釋fork和exec
- 9. 指針在C++ - 需要解釋它是如何工作
- 10. 我的第一個jQuery插件。需要幫助格式化和理解它是如何工作的
- 11. 我需要解釋什麼RelayCommand是
- 12. 另一個需要解釋的bash
- 13. as3需要一個簡單的解釋
- 14. 我需要viewHolder解釋
- 15. aspx.cs需要向我解釋
- 16. 我們是否真的一直需要使用Ruby/rails插件?
- 17. 我需要幫助刪除新插入的行
- 18. 要插入,更新和刪除的SSIS
- 19. 我需要一個真正的mouseOver
- 20. Portal:我真的需要一個Portal嗎?
- 21. 混淆在filter()函數和我需要深入的解釋
- 22. 是DjangoRestFrameWork真的需要一個網站
- 23. 我需要一個解釋這個簡短的腳本
- 24. 如果我沒有爲它指定一個新值,我是否需要刪除一個指針?
- 25. 我需要一個支持高效的隨機訪問和O(k)插入和刪除的容器
- 26. 如何刪除一個文件中的文本只是我需要使用VIM
- 27. 需要一個PHP解釋器
- 28. 我需要一個先進的CSS代碼的解釋
- 29. 我是否需要刪除此對象?
- 30. 我是否需要刪除對象?
我猜這是與家庭作業有關的問題。你能否讓你的問題更清楚? – 2010-12-12 17:23:47
其實它不是一個家庭作業,我只是錯過了lec和即時通訊試圖瞭解跳過列表的好處,特別是它如何插入和刪除 – 2010-12-12 17:26:20
我在跳過列表的文章中閱讀該聲明。 – 2010-12-12 17:26:59