python通過BF算法實現(xiàn)關(guān)鍵詞匹配的方法
本文實例講述了python通過BF算法實現(xiàn)關(guān)鍵詞匹配的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:
# -*- coding: UTF-8
# filename BF
import 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="為什么叫向量空間模型呢?其實我們可以把每個詞給看成一個維度,而詞的頻率看成其值(有向),即向量,這樣每篇文章的詞及其頻率就構(gòu)成了一個i維空間圖,兩個文檔的相似度就是兩個空間圖的接近度。假設(shè)文章只有兩維的話,那么空間圖就可以畫在一個平面直角坐標(biāo)系當(dāng)中,讀者可以假想兩篇只有兩個詞的文章畫圖進(jìn)行理解。"
p="讀者"
i=0
count=0
start=time.time()
while (i <=len(t)-len(p)):
j=0
while (t[i]==p[j]):
i=i+1
j=j+1
if j==len(p):
break
elif (j==len(p)-1):
count=count+1
else:
i=i+1
j=0
print count
print time.time()-start
算法思想:目標(biāo)串t與模式串p逐詞比較,若對應(yīng)位匹配,則進(jìn)行下一位比較;若不相同,p右移1位,從p的第1位重新開始比較。
算法特點(diǎn):整體移動方向:可認(rèn)為在固定的情況下,p從左向右滑動;匹配比較時,從p的最左邊位開始向右逐位與t串中對應(yīng)位比較。p的滑動距離為1,這導(dǎo)致BF算法匹配效率低(相比其他算法,如:BM,KMP,滑動沒有跳躍)。
該算法的時間復(fù)雜度為O(len(t)*len(p)),空間復(fù)雜度為O(len(t)+len(p))
希望本文所述對大家的Python程序設(shè)計有所幫助。
相關(guān)文章
Python中的xml與dict的轉(zhuǎn)換方法詳解
這篇文章主要介紹了Python中的xml與dict的轉(zhuǎn)換方法詳解,xml 是指可擴(kuò)展標(biāo)記語言,一種標(biāo)記語言類似html,作用是傳輸數(shù)據(jù),而且不是顯示數(shù)據(jù)。可以自定義標(biāo)簽,需要的朋友可以參考下2023-07-07
Python通過keyboard庫實現(xiàn)模擬和監(jiān)聽鍵盤
這篇文章主要為大家詳細(xì)介紹了Python如何通過keyboard庫實現(xiàn)模擬和監(jiān)聽鍵盤,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2024-10-10
python實現(xiàn)本地圖片轉(zhuǎn)存并重命名的示例代碼
今天小編就為大家分享一篇python實現(xiàn)本地圖片轉(zhuǎn)存并重命名的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python通過30秒就能學(xué)會的漂亮短程序代碼(過程全解)
這篇文章主要介紹了Python之30秒就能學(xué)會的漂亮短程序代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-10-10
python數(shù)據(jù)預(yù)處理方式 :數(shù)據(jù)降維
今天小編就為大家分享一篇python數(shù)據(jù)預(yù)處理方式 :數(shù)據(jù)降維,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
jupyter notebook運(yùn)行代碼沒反應(yīng)且in[ ]沒有*
本文主要介紹了jupyter notebook運(yùn)行代碼沒反應(yīng)且in[ ]沒有*,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03

