關鍵字匹配之BF演算法-python實現

來源:互聯網
上載者:User
#!/usr/bin/python# -*- coding: UTF-8# filename BFimport time"""t="this is a big apple,this is a big apple,this is a big apple,this is a big apple."p="apple""""t="為什麼叫向量空間模型呢?其實我們可以把每個詞給看成一個維度,而詞的頻率看成其值(有向),即向量,這樣每篇文章的詞及其頻率就構成了一個i維空間圖,兩個文檔的相似性就是兩個空間圖的接近度。假設文章只有兩維的話,那麼空間圖就可以畫在一個平面直角座標系當中,讀者可以假想兩篇只有兩個詞的文章畫圖進行理解。"p="讀者"i=0count=0start=time.time()while (i <=len(t)-len(p)):j=0   while (t[i]==p[j]):                i=i+1                j=j+1if j==len(p):breakelif (j==len(p)-1):count=count+1else:i=i+1j=0print countprint time.time()-start

演算法思想:目標串t與模式串p逐詞比較,若對應位匹配,則進行下一位比較;若不相同,p右移1位,從p的第1位重新開始比較。
演算法特點:整體移動方向:可認為在固定t的情況下,p從左向右滑動;匹配比較時,從p的最左邊位開始向右逐位與t串中對應位比較。p的滑動距離為1,這導致BF演算法匹配效率低(相比其他演算法,如:BM,KMP,滑動沒有跳躍)。
該演算法的時間複雜度為O(len(t)*len(p)),空間複雜度為O(len(t)+len(p))

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.