→ yauhh:另一個問題是,你怎麼肯定想要找O(n+m)的解? 06/09 09:41
→ suhorng:原PO的意思應該是指 text跟pattern的任一個M有對應到 06/09 11:05
→ suhorng:那段意思是說, text長度是n, pattern長度是m 06/09 11:05
→ suhorng:而對於位置i, 若 (p[1],t[i]) (p[2],t[i+1]) ... 06/09 11:06
→ suhorng:(p[m], t[i+m-1]) 中有任一個pair是 (M,M), 就說pattern 06/09 11:06
→ suhorng:在text+i這個位置match 這樣? 然後要找出所有match的i 06/09 11:06
→ angleevil:其實tag固定在頭尾的話,也是可以做出這效果 06/09 11:43
推 walker2009:嗯嗯@@ 是要找 suhorng大說的那個 06/09 13:04
→ walker2009:yau大的作法看起來是 O(nm)~ 06/09 13:18
→ walker2009:我不確定有 linear time 的解啦XD 只是一開始看到 06/09 13:19
→ walker2009:這問題, 看起來很簡單, 我跟幾個朋友都覺得應該可以 06/09 13:19
→ walker2009:但後來卻都想不出 linear time 的解, 因此想說問看看 06/09 13:19
→ walker2009:有沒有人處理過類似問題, 或是有關鍵字可以提供查詢@@ 06/09 13:19
→ yauhh:我看你要先把一個問題定清楚: 06/09 13:28
→ yauhh:怎 06/09 13:29
→ yauhh:麼說pattern case可以拉到討論O(m)的程度。 06/09 13:30
→ yauhh:以本例來看,只明確看到你要找二個offsets:0,3 06/09 13:32
→ yauhh:二個Offsets相關字元都是X。另外,別的位子是否not X也可以 06/09 13:35
→ yauhh:現在具體的pattern很小,整個其實化約成O(n)了。 06/09 13:38
推 AstralBrain:你是來回答問題還是來否定整個問題的... 06/09 15:58
推 ledia:推樓上... 別擔心, 反正大家都有看懂就好了 XD 06/09 16:38
→ angleevil:~"~這問題,我至少誤解三次以上.演算法真是新人勿碰阿 06/09 17:19
→ yauhh:你認為我否定問題?我認為我是幫他補強問題 06/09 18:15
→ yauhh:如果你不認同我的看法,可以發表你自己的解。不必無謂相爭 06/09 18:17
→ yauhh:原po應該可以參考這篇: 06/09 22:55
→ yauhh:所討論的不是相同的問題,但有很接近目標的感覺. 06/09 22:58
推 walker2009:嗯@@ 我有想過 suffix tree, 但最後還是會轉回 06/09 23:33
→ walker2009:don't care matching, 掉到 O(n log m) 06/09 23:33
→ angleevil:其實看到原po給的連結,和其他給的連結 06/10 09:35
→ angleevil:就算用到boolean convolution,應該也是要對text的index 06/10 09:36
→ angleevil:和pattern index.到最後更加無法理解logm的由來. 06/10 09:37
→ yauhh:log的出現通常跟tree有關係 06/10 21:17
推 LPH66:既然能看成 index 那可以更進一步這樣看: 06/11 03:19
→ LPH66:原問題等同於求 {p-q | p \in P, q \in Q} 06/11 03:19
→ LPH66:其中 P \subseteq {1,2,3,...,n} Q \subseteq {1,2,3,...,m} 06/11 03:20
→ LPH66:這和多項式乘法有點類似 自然就能有類似 FFT 的做法 06/11 03:20
→ LPH66:(其實就是 boolean convolution 在做的事了} 06/11 03:21
→ LPH66:這裡 log 的出現就和 FFT 的 divide & conquer 做法有關 06/11 03:21
→ LPH66:而比較沒有明顯的樹存在 06/11 03:21
推 DJWS:如果字元數不多的話 是不是可以用hash table? 06/11 07:14
→ DJWS: 種類 06/11 07:15
推 walker2009:可以這麼想, 因為我只 care X 這個 character 06/12 00:44
→ walker2009:所以我把其他 character 都換成 O 也沒關係,不影響答案 06/12 00:45
→ walker2009:因此這個問題可以想成只有 2 種 character 06/12 00:45
推 ledia:hash table worst case 也會是 O(nm) 06/14 09:08
→ firejox:二進位碼? 06/14 19:54
→ angleevil:~"~所以這題有實作出來嗎? 如果有的話,不知道可以po上來 06/15 21:45
→ angleevil:嗎? 讓小弟知道怎麼做 06/15 21:46