看动画学算法系列之:后缀树suffix tree
生活随笔
收集整理的這篇文章主要介紹了
看动画学算法系列之:后缀树suffix tree
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 簡介
- 字典樹Trie
- 壓縮字典樹
- 后綴樹Suffix Tree
- 后綴樹的搜索
- 查找最長重復子字符串
- 查找兩個字符串的最長公共子字符串
- 后綴樹的代碼實現
簡介
模式匹配是一個在工作中經常會用到的場景,比如說給定一個字符串數組txt[0…n-1]和要匹配的模式pat[0…m-1],我們希望找出所有在txt中能夠匹配模式字符串的次數。這就叫做模式匹配。
要想完成字符串匹配的任務,我們其實有兩種方式,第一種方式就是使用各種模式匹配的算法,比如KMP,Rabin Karp,Finite Automata based和Boyer Moore。 這些匹配算法最好的時間復雜度是O(n),其中n是字符串的長度 。
還有一種方式是對要查詢的字符串數組進行預處理,處理過后再進行匹配的話,時間復雜度可以減少到O(m),其中m是要匹配的模式的長度。
實際上這就是空間換時間的概念,假如我們有一本康熙字典,即使是O(n)的時間復雜度也住夠長了,如果能夠進行預處理之后,O(m)的時間復雜度將會大大減少我們的搜索時間。
那么是不是所有的字符串的模式匹配都可以使用預處理呢?
當然不是,因為預處理是需要耗費時間的,預處理的情況只適用于一次
總結
以上是生活随笔為你收集整理的看动画学算法系列之:后缀树suffix tree的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript开发后端程序的神器n
- 下一篇: 密码学系列之:明文攻击和Bletchle