本文实例讲述了python通过BF算法实现关键词匹配的方法。分享给大家供大家参考。具体实现方法如下:

#!/usr/bin/python

# -*- 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="为什么叫向量空间模型呢?其实我们可以把每个词给看成一个维度,而词的频率看成其值(有向),即向量,这样每篇文章的词及其频率就构成了一个i维空间图,两个文档的相似度就是两个空间图的接近度。假设文章只有两维的话,那么空间图就可以画在一个平面直角坐标系当中,读者可以假想两篇只有两个词的文章画图进行理解。"

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

算法思想:目标串t与模式串p逐词比较,若对应位匹配,则进行下一位比较;若不相同,p右移1位,从p的第1位重新开始比较。

算法特点:整体移动方向:可认为在固定的情况下,p从左向右滑动;匹配比较时,从p的最左边位开始向右逐位与t串中对应位比较。p的滑动距离为1,这导致BF算法匹配效率低(相比其他算法,如:BM,KMP,滑动没有跳跃)。

该算法的时间复杂度为O(len(t)*len(p)),空间复杂度为O(len(t)+len(p))

希望本文所述对大家的Python程序设计有所帮助。

python关键字匹配_python通过BF算法实现关键词匹配的方法相关推荐

  1. python地图匹配_python通过BF算法实现关键词匹配的方法

    本文实例讲述了python通过BF算法实现关键词匹配的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python # -*- coding: UTF-8 # filename ...

  2. python问题关键词匹配算法_python通过BF算法实现关键词匹配的方法

    本文实例讲述了python通过BF算法实现关键词匹配的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python # -*- coding: UTF-8 # filename ...

  3. python 程序设计思维_Python程序设计与算法思维

    译者序 前言 第1章 Python编程简介 1 1.1 计算的基本概念 1 1.1.1 为何编程 1 1.1.2 硬件和软件 2 1.1.3 数字领域 3 1.1.4 编程的过程 4 1.1.5 为何 ...

  4. python函数结构图_Python数据结构与算法之图结构(Graph)实例分析

    本文实例讲述了Python数据结构与算法之图结构(Graph).分享给大家供大家参考,具体如下: 图结构(Graph)--算法学中最强大的框架之一.树结构只是图的一种特殊情况. 如果我们可将自己的工作 ...

  5. 链表python笔试题目_python经典面试算法题1.4:如何对链表进行重新排序

    本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.4 对链表按照如下要求重新排序 [微软笔试题] 难度系数: ...

  6. python棋盘最短路径_Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例...

    本文实例讲述了Python数据结构与算法之图的最短路径(Dijkstra算法).分享给大家供大家参考,具体如下: # coding:utf-8 # Dijkstra算法--通过边实现松弛 # 指定一个 ...

  7. python文本聚类分析_python机器学习kmeans算法——对文本进行聚类分析

    #!/usr/bin/env python#-*- coding: utf-8 -*-#@File : kmeans.py#@Author: 田智凯#@Date : 2020/3/19#@Desc : ...

  8. python快速排序代码_Python实现快速排序算法

    原标题:Python实现快速排序算法 Python实现快速排序算法 快速排序算法是一种基于交换的高效的排序算法,由C.R.A.Hoare于1962年提出,是一种划分交换排序.它采用了一种分治的策略,通 ...

  9. python解决最优化问题_python实现最优化算法

    二分法 函数详见rres,此代码使该算法运行了两次 def asdf(x): rres=8*x**3-2*x**2-7*x+3 return rres i=2 left=0 right=1 while ...

最新文章

  1. GCC编译选项参数介绍
  2. win8和win8.1动态绑定数据到ListView
  3. Unity3D 2017软件安装教程
  4. P6154 游走 概率dp
  5. git checkout 单个文件_IntelliJ IDEA下的使用 Git
  6. 怎么计算z=x+y的概率密度_上大《Scripta Mater》基于第一性原理计算,研究镁合金强化相!...
  7. 关于安卓(apk)unity3d游戏汉化简单做一些全面分析
  8. 二次规划问题和MATLAB函数quadprog的使用
  9. 如何在右键新建中添加新建xmind文件
  10. VOIP电话中的SIP信令返回码的详细解释
  11. 基本共射放大电路的工作原理
  12. linux小白家教学一
  13. Unity游戏开发中大数值显示问题
  14. 深度学习中数据的拆分打乱
  15. 阿里王坚:用“机器智能”取代“人工智能”概念
  16. [《Python2.1宝典》笔记] 12-14章
  17. TDM与FDM的比较
  18. 计算机最主要的硬盘,电脑硬盘应该分几个区比较合适?
  19. MySQL数据库实际应用中,需求分析阶段需要做什么?
  20. uva 11021 数学概率 麻球

热门文章

  1. 你不得不知道的Visual Studio 2012(3)- 创建Windows应用程序
  2. linux 网络下载命令 wget 使用技巧
  3. VForum 2008系列之三:分论坛视频-实现自动化的虚拟数据中心
  4. .net webconfig 配置说明123
  5. goland idea设置代码自动换行
  6. k8s serviceaccount pod亲和性 污点
  7. Jenkins安装目录说明
  8. golang goroutine协程概念及入门:轻量级线程(或用户态线程)
  9. 在 Java 中,负责对字节代码解释执行的是?
  10. redis replicaof命令的使用