提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
- 掌握使用编辑距离和海明距离计算字符串间相似度;
- 通过实验理解编辑距离和海明距离的分析计算过程。
提示:以下是本篇文章正文内容,下面案例可供参考
一、介绍
- 实验1:用编辑距离计算两个自定义字符串间的相似度;
- 实验2:用海明距离分别计算二进制数间的相似度和字符串间的相似度。
(要求二进制数间的相似度计算用按位异或的思想)
二、实验 1
代码如下(示例):
def edit_dist(string1, string2):
m, n = len(string1), len(string2)
arr = [[0 for x in range(n + 1)] for x in range(m + 1)]
for i in range(m+1):
for j in range(n+1):
if i == 0:
arr[i][j] = j
elif j == 0:
arr[i][j] = i
elif string1[i - 1] == string2[j - 1]:
arr[i][j] = arr[i - 1][j - 1]
else:
arr[i][j] = 1 + min(arr[i][j - 1],
arr[i - 1][j],
arr[i - 1][j - 1])
return arr[m][n]
s1= "ccaca"
s2= "aaca"
print(edit_dist(s1, s2))
2.实验 2
代码如下(示例):
def hamming_dist1(x, y):
n = x ^ y
return bin(n).count('1')
print(hamming_dist1(12, 10))
def hamming_dist2(s1, s2):
if len(s1) != len(s2):
raise ValueError("不等长")
return sum(el1 != el2 for el1, el2 in zip(s1, s2))
s1= "ccaca"
s2= "aaca"
print(hamming_dist2(s1, s2))
总结
2.