Python基于动态规划算法计算单词距离

yipeiwu_com6年前Python基础

本文实例讲述了Python基于动态规划算法计算单词距离。分享给大家供大家参考。具体如下:

#!/usr/bin/env python
#coding=utf-8
def word_distance(m,n):
  """compute the least steps number to convert m to n by insert , delete , replace .
  动态规划算法,计算单词距离
  >>> print word_distance("abc","abec")
  1
  >>> print word_distance("ababec","abc")
  3
  """
  len_1=lambda x:len(x)+1
  c=[[i] for i in range(0,len_1(m)) ]
  c[0]=[j for j in range(0,len_1(n))]
  for i in range(0,len(m)):
  #  print i,' ',
    for j in range(0,len(n)):
      c[i+1].append(
        min(
          c[i][j+1]+1,#插入n[j]
          c[i+1][j]+1,#删除m[j]
          c[i][j] + (0 if m[i]==n[j] else 1 )#改
        )
      )
  #    print c[i+1][j+1],m[i],n[j],' ',
  #  print ''
  return c[-1][-1]
import doctest
doctest.testmod()
raw_input("Success!")

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

相关文章

python sort、sorted高级排序技巧

Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。 1)排序基础 简单的升序排序是非常容易的。只需要...

Python列表list内建函数用法实例分析【insert、remove、index、pop等】

Python列表list内建函数用法实例分析【insert、remove、index、pop等】

本文实例讲述了Python列表list内建函数用法。分享给大家供大家参考,具体如下: #coding=utf8 ''''' 标准类型函数: cmp():进行序列比较的算法规则如下:...

np.random.seed() 的使用详解

np.random.seed() 的使用详解

在学习人工智能时,大量的使用了np.random.seed(),利用随机数种子,使得每次生成的随机数相同。 我们带着2个问题来进行下列实验 np.random.seed()是否一直...

django项目搭建与Session使用详解

django项目搭建与Session使用详解

前言 Django完全支持也匿名会话,简单说就是使用跨网页之间可以进行通讯,比如显示用户名,用户是否已经发表评论。session框架让你存储和获取访问者的数据信息,这些信息保存在服务器上...

浅谈python日志的配置文件路径问题

如下所示: import logging import logging.config logging.config.fileConfig(path) logger = logging...