看板 Grad-ProbAsk 關於我們 聯絡資訊
Fill the function value in KMP algorithm for string matching J 0 1 2 3 4 5 6 7 8 9 pattern a b a c a b a c d a failure(j) 請問有高手能教一下嗎 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.139.132.251
taitin:-1 -1 0 -1 0 1 2 3 -1 0 02/05 21:28
assassin88:看不懂+1 02/05 21:52
lwtistunning:t大 若我是設F(0)=0為起始的話 02/05 21:55
lwtistunning:答案是 0 0 1 0 1 2 3 4 0 1 對嗎?還是一定要-1起頭 02/05 21:56
taitin:沒有規定就對,看題目怎麼問 02/05 22:04
lwtistunning:感謝 02/05 22:06
polomoss:那用KMP去比對字串呢? 例如搜尋abc跟他的反轉 02/05 23:16
taitin:比較S1有沒有在S2裡面,先對S1做failure function 02/05 23:32
taitin:接著比對兩字串,相同就向下一個字元比對,若遇到不同 02/05 23:32
taitin:就查前一個相同字元的function,再根據function 02/05 23:34
taitin:所給的參數J,跳回第J個字元再比對 02/05 23:35
taitin:若相同,再向下比對;若還是不同再查f(i),重複比對 02/05 23:36
taitin:ex 比較 abab 跟 abcabac 02/05 23:36
taitin:function 是 -1-1 0 1 02/05 23:37
taitin:比對 前兩個相同 到C的時候不同,查前一個function,為-1 02/05 23:37
taitin:所以從c開始再從頭比對,不同,所以向下一個字元 02/05 23:38
taitin:接下來aba相同,c不同,查前一個function為 0 02/05 23:39
taitin:因此再拿C跟0的下一個字元b比較,又不同,查function為-1 02/05 23:40
taitin:再重頭比較 02/05 23:40