ac自動機_第1頁
已閱讀1頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、關鍵字:AC自動機自動機有限狀態(tài)自動機Trie字母樹字符串匹配多串匹配算法Note:閱讀本文需要有KMP算法基礎,如果你不知道什么是KMP,請看這里:blogarticle.aspid=146(Matrix67大牛寫的)AC自動機是用來處理多串匹配問題的,即給你很多串,再給你一篇文章,讓你在文章中找這些串是否出現(xiàn)過,在哪出現(xiàn)。也許你考慮過AC自動機名字的含義,我也有過同樣的想法。你現(xiàn)在已經知道KMP了,他之所以叫做KMP,是因為這個算法

2、是由Knuth、Mris、Pratt三個提出來的,取了這三個人的名字的頭一個字母。那么AC自動機也是同樣的,他是AhoCasick。所以不要再YY地認為AC自動機是AC(cept)自動機,雖然他確實能幫你AC一點題目。。。。扯遠了。。。要學會AC自動機,我們必須知道什么是Trie,即字母樹。如果你會了,請?zhí)^這一段Trie是由字母組成的。先看張圖:這就是一棵Trie樹。用綠色標出的點表示一個單詞的末尾(為什么這樣表示?看下去就知道了)。

3、樹上一條從root到綠色節(jié)點的路徑上的字母,組成了一個“單詞”。也許你看了這一段,就知道如何構建Trie了,那請?zhí)^以下幾段。那么如何來構建一棵Trie呢?就讓我從一棵空樹開始,一步步來構建他。好了,現(xiàn)在我們已經有一棵Trie了,但這還不夠,我們還要在Trie上引入一個很強大的東西:失敗指針或者說shift數(shù)組或者說Next函數(shù)…..你愛怎么叫怎么叫吧,反正就是KMP的精華所在,這也是我為什么叫你看KMP的原因。KMP中我們用兩個指針i

4、和j分別表示,A[ij1..i]與B[1..j]完全相等。也就是說,i是不斷增加的,隨著i的增加j相應地變化,且j滿足以A[i]結尾的長度為j的字符串正好匹配B串的前j個字符,當A[i1]B[j1],KMP的策略是調整j的位置(減小j值)使得A[ij1..i]與B[1..j]保持匹配且新的B[j1]恰好與A[i1]匹配(從而使得i和j能繼續(xù)增加)。Trie樹上的失敗指針與此類似。假設有一個節(jié)點k,他的失敗指針指向j。那么kj滿足這個性質

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論