看板 Prob_Solve 關於我們 聯絡資訊
※ 引述《windows2k (KERORO軍曹)》之銘言: : 傳統的一維比對, 給定一個字串 text 和一個 pattern : 要看看pattern是否有在 text出現過 : 對於這種問題, 已經有很多解決方案, 如 BM, KMP之類的演算法 : 那如果變成二維的情況該怎麼轉化成一維 : 如 : abc bc : bcd 中要找出 cd 這個pattern : cde : 可以找到 : abc abc : bcd 和 bcd : cde cde : 兩組解 : 該怎麼把二維的問題轉成一維來做? abc ab bc 把 bcd 拆成 bc , cd 就是跟 pattern 一樣的寬度 cde cd de 然後分別從裡面找, 要比對 m-n 個, ab A 然後把 bc 編成 B 之類的, 還是用 Huffman code @_@" cd C bc B pattern cd 就編成 C, 然後就是 ABC 和 BC 做一維的比對嚕~@_@" m, n 分別是 text 和 pattern 的寬度 複雜度 O( (m-n)*( m+n + [編碼(m+n)個字串] )) ^^^ 如果分別是 m 列和 n 列 = O( (m^2-n^2) + [編碼(m+n)個字串]*(m-n) ) = O( (m^2-n^2) + k(m+n)(m-n) ) = O(m^2-n^2) 感覺起來好像非常好 @@" 比接成一串的 KMP O(m^2+n^2) 好 不知道有沒有算錯 Orz... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.205.19 ※ 編輯: yalight 來自: 140.115.205.19 (07/07 13:20) ※ 編輯: yalight 來自: 140.115.205.19 (07/07 13:22) ※ 編輯: yalight 來自: 140.115.205.19 (07/07 13:23)
pause2:pattern間的長度若不一樣,就要對每種pattern長度做一樣的事 07/07 13:23
※ 編輯: yalight 來自: 140.115.205.19 (07/07 14:27)