AC自動機學習筆記

2022-08-03 14:18:14 字數 697 閱讀 2143

搞了一晚上ac自動機,發現需要先學trie和kmp……都不會啊。。於是又去現學kmp和trie。。終於基本看懂ac自動機了。

#include using

namespace

std;

struct

node

}s[500005

];int sind;//

記錄節點的編號

char str[55];//

模板串,」單詞「

char des[1000005];//

」文章「

int q[500005], qin, qout;//

佇列void cas_init()//

在整個程式前構造root

void ins()//

向書中插入字母

ind = s[ind].next[j];//

向下遍歷

} s[ind].count++;//

增加離根節點這條路徑上字串的個數,一條路上可能不止乙個單詞

}void make_fail()//

構造失配指標

}while(qin !=qout)}}

}int

fd()}}

return ct;//

返回單詞個數

}int

main()

return0;

}

AC自動機 學習筆記

是一種數學模型,大概就是由一堆狀態和狀態轉移規則等東西構成,能與外界交換資訊,並改變動作。這個是理論上的東西,了解就行,對ac自動機的理解沒有大影響。通俗的講就是在trie上做kmp,處理多模式串匹配問題。trie 的每個結點就是乙個狀態,根結點是初始狀態。ac自動機的行為被定義為一下3個函式 1....

AC自動機學習筆記

ac自動機是基於字典樹和fail指標來快速一類解決多串匹配的問題。先用所有模式串建乙個字典樹。然後用bfs搞出每個節點的fail指標。fail指標是指向 和當前 字首的字尾有最長匹配的字首。洛谷3808 掃文字串的時候,標記一下訪問過的字典樹上的節點。include using namespace ...

AC自動機學習筆記

title ac自動機學習筆記 date 2020 08 31 15 53 40 tags 8月的最後一天,還是完成了ac自動機的學習。在熟練掌握了kmp後,我發現ac自動機並沒有想象的那麼難,既不難理解,也不難實現,於是決定寫點東西記錄一下。本篇主要談談ac自動機的理論,思想。首先我們必須要明確乙...