推 seedman:aspera面試問題 我回答的就是我第一篇po的 04/03 14:44
推 seedman:子字串可以重複用多次 這樣好像和2衝突? 04/03 14:53
推 suhorng:2也可以做成對每個可能的[a,b]都標 比如寫KMP一樣可以在線 04/03 15:10
→ suhorng:性時間內完成 04/03 15:10
→ DJWS:剛剛想到 改用Aho-Corasick的話就可以線性時間做完了 04/03 16:31
→ DJWS:另外 細想了之後 我不知道怎麼用suffix tree找到匹配位置XD 04/03 16:33
推 AstralBrain:關於步驟二, 如果一個子字串找到很多組[a,b] 04/03 20:03
→ AstralBrain:這個圖的大小會不會變成O(S^2) ? 04/03 20:04
→ DJWS:樓上你說的對! 我沒有想到... 04/03 21:35
推 seedman:用Aho-Corasick的話要怎麼避開該字串本身呢? 04/04 04:34
→ DJWS:不用避開呀~ 當匹配到原本字串的時候 忽略他就行了 04/04 08:58
→ DJWS:另外Aho-Corasick可以避免掉AstralBrain版友說的O(S^2)情況 04/04 08:59
→ DJWS:開一條母字串一樣長的bool陣列 母字串比對過程中 隨時標記 04/04 09:02
→ DJWS:從第一個字元可以走到哪些字元 走訪suffix link計算[a,b]的 04/04 09:03
→ DJWS:過程中 一旦發現a是走得到的節點 就可以立即中止計算[a,b] 04/04 09:04
推 seedman:咦?這個演算法不是樹建完後 每次就直接拿字串去查 04/04 16:01
→ seedman:然後看字串拜訪的順序得知是由哪些子字串組成的嗎? 04/04 16:02
→ seedman:然後他是可以往下走就往下走 不然就走failure link? 04/04 16:02
→ seedman:所以有字典中有包含要查詢的字串會變成輸出自己? 04/04 16:03
→ DJWS:如果一次中很多個pattern 就得走suffix link找到所有pattern 04/04 17:49
→ DJWS:如果樹上已經有原本字串 當然就會中原本字串 此時忽略即可 04/04 17:50
推 seedman:感覺我好像運作方式沒搞懂@@ 大概要實作才會了解 謝謝回應 04/05 11:11
→ DJWS:事實上我也沒有懂得很透徹... 如果造成困擾 很不好意思~ 04/05 16:17