摘要: Trie图先看一个问题:给一个很长很长的母串 长度为n,然后给m个小的模式串。求这m个模式串里边有多少个是母串的字串。最先想到的是暴力O(n*m*len(m)) len(m)表示这m个模式串的平均长度。。。显然时间复杂度会很高。。。再改进一些,用kmp让每一模式串与母串进行匹配呢?时间复杂度为O((n + len(m))*m),还算可以。可是还有没有更快的算法呢?编译原理里边有一个很著名的思想:自动机。这里就要用到确定性有限状态自动机(DFA)。可以对这m个模式串建立一个DFA,然后让母串在DFA上跑,遇到某个模式串的终结节点则表示这个模式串在母串上。就像这个图,母串“nano”在上边跑就能到 阅读全文
posted @ 2012-07-24 14:50 AC_Von 阅读(10362) 评论(3) 推荐(1) 编辑