日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Burst trie(爆炸式字典树)解读

發布時間:2024/9/19 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Burst trie(爆炸式字典树)解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

burst trie(爆炸式字典樹)

Burst trie組成介紹

burst trie有三個不同的組成部分,一組records,一組containers,還有一個access trie。

  • records包含一個字符串,必要信息(統計數據或單詞位置等),一個指針(指向實體數據的指針)
  • containers是一個records的集合,對于一個深度為K的容器,所有字符串的長度至少為k,并且所有字符串的前k個字符都是相同的。
  • access trie是containers中的葉子。

Burst trie例子

看不懂上面的解析,沒關系,看下面的圖,下面的圖中存儲這這10個單詞,分別是:“came”, “car”,“cat”, “cave”, “cy”, “cyan”, “we”, “went”, “were”, “west”。

該圖中存儲“came”的位置可以說是一個records,record除了代表字符串,還包含一些該單詞的必要信息,以及一個指向實體數據位置的指針。

圖中畫出的burst trie中最左邊的container包含了4個records,分別是“came”, “car”,“cat”, “cave”,明顯它們都有一個共同的前綴"ca",所以該contain的深度為2 ,并且里面record代表的字符串長度不能少于2.

圖中三角形框住的是container的葉子節點,也稱為access trie。其中,圖中的access trie數據結構是BST,所以這個Burst trie是一個基于BST的代表容器。

Burst trie查找

Burst trie查找主要分兩大步驟,前綴的查找,和后綴的匹配。

前綴查找,從根節點開始,進行字符的匹配,分兩小步:

  • 從槽中找到當前字符,并且當前字符有進入下一個槽的指針,走下一步,否則匹配失敗。遇到access trie,則改為進行后綴匹配(使用BST)
  • i++

假設查找“came”單詞的record,搜先查找當前需要匹配字符“C”,在槽中找到"C",發現“C”的位置有進入下一個槽的指針,那么就i++,并進入下一槽。然后匹配字符"A",發現槽中“A”處的下一個指針是access trie,則對剩下的字符串進行后綴匹配(直接使用BST)

Burst trie的生長方式

Burst trie有兩種生長方式:

一種是元素的插入,元素的插入會建立新的葉子節點,或者往葉子節中添加新的后綴。

一種是以Burst trie爆破的方式進行生長,Burst trie爆破指的是用深度k的容器替換為一個trie節點和深度k+1的一組新Container的過程。

Burst trie插入

Burst trie插入的過程跟查找相識,前綴的插入和后綴插入。跟查找相似,先進行前綴的匹配添加。

前綴的添加,先槽中找到當前字符,查看當前字符是否有進入下一個槽的指針,沒有則進行新葉子(access trie)的建立,有則往下一個槽移動。如果移動到葉子節點,則直接將后綴加入葉子節點(access trie)。

Burst trie爆破

Burst trie爆破指的是用深度k的容器替換為一個trie節點和深度k+1的一組新Container的過程,這些容器之間包含原始容器中的所有記錄。決定是否破壞一個Container應該取決于訪問它的頻率和每次訪問的成本如何。

假設現在往Burst trie插入一個records,這個records代表著單詞“western”,并且假設滿足爆破條件,那么改圖就會進行Container爆破調整,變成下面這副圖:

爆破過程如下:

  • 先將要爆破的葉子節點(access trie)的數據拿出來
  • 然后在匹配的K層字符的槽指向一個新建立的K+1層的槽,然后通過節點添加的方式往K+1層的槽進行葉子節點的添加

具體開源代碼,可以參考:https://github.com/gabrieldumitrescu/BurstTrie

參考論文:Heinz S, Zobel J, Williams H E. Burst tries: a fast, efficient data structure for string keys[J]. ACM Transactions on Information Systems (TOIS), 2002, 20(2): 192-223.

論文ppt:http://www.cs.uvm.edu/~xwu/wie/CourseSlides/Schips-BurstTries.pdf

總結

以上是生活随笔為你收集整理的Burst trie(爆炸式字典树)解读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。