精確多模式匹配問題 關鍵詞樹 字尾樹

2021-08-30 09:41:35 字數 733 閱讀 4140

一、多模式匹配問題

給定一組模式和乙個文字,在文字中查詢任一模式的全部出現資訊。

輸入:k個模式的集合p1,p2,...,pk,以及文字t=t1...tm

輸出:所有位置i(1<=i<=m)的資訊,使得與模式pj(1<=j<=k)相同的t的子字串從位置i開始

1)樹的每條邊都被字母表的乙個字母標記。

2)從同一頂點延伸出的任意2條邊都有不同的標記。

3)模式集合中的每個模式pi(1<=i<=k)都是沿著某條路徑從根到葉的順序進行拼寫的。

三、使用字尾樹

文字t=t1...tm的字尾樹是乙個根部標記的且含有m片葉子的樹

1)每條邊由文字中的乙個子字串標記。

2)每個內部頂點(根節點除外)至少含有2個孩子。

3)從同一頂點出發的任意2條邊起始於不同的字母。

4)文字t的每個字尾是依根部到某片葉子的路徑拼寫的。

將模式p穿過字尾樹的線串定義為p沿著t中唯一路徑的字元的匹配。如果這個匹配過程終止於p的所有字元都匹配上了,則稱該字串為完全線串;如果匹配半途終止,則稱其為不完全線串。如果乙個模式的線串是完全的,它會終止於t中的某個頂點或邊。

演算法:suffixtreepatternmatching(p,t)

構建要匹配的文字t的字尾樹

模式p在字尾樹中的線串

if 線品是完全的

output 每個p匹配葉子在樹的位置

else

output模式並未在文字中出現

hive like關鍵詞模糊匹配

select a.code,a.region code,a.name from hangzhou a companyname b where a.name like b.key 或者類似其他的我們可以直接 你要匹配的字段 但是在hive裡面不行,因為轉義了,需要自定義udf去完成這個操作!selec...

DFA 演算法實現關鍵詞匹配

ahocorasick esmre 但是其實包都是基於dfa 實現的 這裡提供原始碼如下 usr bin python2.6 coding utf 8 import time class node object def init self self.children none self.flag f...

Trie 樹 搜尋關鍵詞提示

trie 樹也叫 字典樹 顧名思義,它是乙個樹形結構,專門用來處理在一組字串集合中快速查詢某個字串的問題。假設我們有 6 個字串,它們分別是 how,hi,her,hello,so,see。我們希望在這裡面多次查詢某個字串是否存在,如果每次都拿要查詢的字串和這六個字串依次進行匹配,那效率就會比較低。...