# 编辑距离
def edit_distance(word1, word2):
len1 = len(word1)
len2 = len(word2)
dp = np.zeros((len1 + 1,len2 + 1))
for i in range(len1 + 1):
dp[i][0] = i
for j in range(len2 + 1):
dp[0][j] = j
for i in range(1, len1 + 1):
for j in range(1, len2 + 1):
delta = 0 if word1[i-1] == word2[j-1] else 1
dp[i][j] = min(dp[i - 1][j - 1] + delta, min(dp[i-1][j] + 1, dp[i][j - 1] + 1))
return dp[len1][len2]
# 全局序列对齐 Needleman-Wunsch
def globalAlignment(str1, str2):
m = len(str1)
n = len(str2)
f = [[0 for _ in range(n + 1)] for _ in range(m + 1)]
for i in range(m + 1):
for j in range(n + 1):
if i == 0 and j == 0:
pass
elif i == 0:
f[i][j] = f[i][j - 1] - 2
elif j == 0:
f[i][j] = f[i - 1][j] - 2
else:
temp = 1 if str1[i - 1] == str2[j - 1] else -1
f[i][j] = max(f[i - 1][j] - 2, f[i][j - 1] - 2, f[i - 1][j - 1] + temp)
return f[m][n]
# 局部序列对齐 Smith-Waterman
def localAlignment(str1, str2):
m = len(str1)
n = len(str2)
f = [[0 for _ in range(n + 1)] for _ in range(m + 1)]
for i in range(m + 1):
for j in range(n + 1):
if i == 0 and j == 0:
pass
elif i == 0:
f[i][j] = max(f[i][j - 1] - 2, 0)
elif j == 0:
f[i][j] = max(f[i - 1][j] - 2, 0)
else:
temp = 1 if str1[i - 1] == str2[j - 1] else -1
f[i][j] = max(f[i - 1][j] - 2, f[i][j - 1] - 2, f[i - 1][j - 1] + temp, 0)
return max([max(ele) for ele in f])
# 最长公共子串
def longestCommonString(A, B):
m = len(A)
n = len(B)
f = [[0 for _ in range(n + 1)] for _ in range(m + 1)]
for i in range(1, m + 1):
for j in range(1, n + 1):
if A[i - 1] == B[j - 1]:
f[i][j] = f[i - 1][j - 1] + 1
else:
f[i][j] = 0
return max([max(ele) for ele in f])
# 最长的公共子序列 LCS
def find_lcseque(s1, s2):
# 生成字符串长度加1的0矩阵,m用来保存对应位置匹配的结果
m = [ [ 0 for x in range(len(s2)+1) ] for y in range(len(s1)+1) ]
# d用来记录转移方向
d = [ [ None for x in range(len(s2)+1) ] for y in range(len(s1)+1) ]
for p1 in range(len(s1)):
for p2 in range(len(s2)):
if s1[p1] == s2[p2]: #字符匹配成功,则该位置的值为左上方的值加1
m[p1+1][p2+1] = m[p1][p2]+1
d[p1+1][p2+1] = 'ok'
elif m[p1+1][p2] > m[p1][p2+1]: #左值大于上值,则该位置的值为左值,并标记回溯时的方向
m[p1+1][p2+1] = m[p1+1][p2]
d[p1+1][p2+1] = 'left'
else: #上值大于左值,则该位置的值为上值,并标记方向up
m[p1+1][p2+1] = m[p1][p2+1]
d[p1+1][p2+1] = 'up'
(p1, p2) = (len(s1), len(s2))
s = []
while m[p1][p2]: #不为None时
c = d[p1][p2]
if c == 'ok': #匹配成功,插入该字符,并向左上角找下一个
s.append(s1[p1-1])
p1-=1
p2-=1
if c =='left': #根据标记,向左找下一个
p2 -= 1
if c == 'up': #根据标记,向上找下一个
p1 -= 1
s.reverse()
return len(s)
文章浏览阅读819次,点赞29次,收藏16次。本文旨在深入探讨顺序统计树中结点秩信息的维护机制,特别是在插入和删除操作中如何保持这一关键信息的准确性。我们将详细分析插入和删除过程中的每个步骤,探讨如何在不影响红黑树操作渐近性能的前提下,有效地维护结点的秩信息。通过本文的阐述,读者将能够更好地理解顺序统计树的工作原理,以及如何在实际应用中高效地利用这一数据结构。
文章浏览阅读913次。前面说了三菱和西门子PLC的上位机通信,实际在生产应用中,设备会有很多不同的厂家生产的PLC,那么,我们就需要一种通用的语言,进行设备之间的通信,工业上较为广泛使用的语言之一就是Modbus。Modbus有多种连接方式,如串口(RTU)、以太网(TCP/IP),今天我们讲的是TCP,也就是插网线的方式。首先,我们安装从机的仿真,上位机软件作为主机。从机仿真可以用Modbus Slave这个软件。_modbus 测试 上位机
文章浏览阅读55次。java毕业生设计宠物领养管理系统计算机源码+系统+mysql+调试部署+lw。springboot学生心理健康信息咨询系统。springboot“西单”甜品线上预定系统。springboot高校教师科研成果管理系统。springboot师生共评的作业管理系统。springboot扶贫助农与产品合作系统。springboot京津冀景区网上导游系统。springboot个性化产品服务管理系统。springboot中医药院校科研会议系统。springboot中小企业设备管理系统。_宠物管理系统mysql源码
文章浏览阅读3k次,点赞5次,收藏28次。系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言一、运动学的理解二、运动学的目的三、位置运动学(1)位置的表示1)位姿表示原理2)位姿和相对位姿的概念3)不同坐标系下的位置表示(1)笛卡儿坐标【这个比较常用】(2)柱坐标(3)球坐标4)步骤(2)旋转的表示1)旋转原理2)旋转通过旋转矩阵表示(1)旋转矩阵原理(2)绕XYZ轴旋转方向的基本旋转矩阵(3)正交旋转矩阵(1)旋转矩阵的性质(2)主动旋转与被动旋转(4)旋转矩阵进行坐标_在坐标系a中有一单位矢量k,不通过坐标原点而通过空间点p
文章浏览阅读62次。12月20日,距离2018不到2周的时间,时间流逝,而我仿佛还停留在过去,忘记了时间,迷茫,懵懂。这一年中似乎是在消耗,浪费,2016年春节过后,告别父母,我怀着比较复杂的心情再次来到陌生的上海,来的路上,看到那光彩耀人的霓虹灯,高大的摩天轮,一栋栋高楼大厦从眼前一晃而过,从乡村来的我好生羡慕,我期望着有一天能够站在高楼的顶端。今年一年我换了两处住房,由一种拆迁公寓搬到了小区住房,但这也并没有改变...
文章浏览阅读61次。转载VBGood作者:陶刚编译 近十年以来人们一直预言VisualBasic会消亡,但即使在VisualBasic.NET出现后,一切仍然没有发生变化。从最近的报道来看,VB.NET的未来受到了它的兄弟语言C#的挑战。即使过了这么多年,人们还是无法理解VB——以及现在的VB.NET——仍然是一种世界上最流行的编程语言。的确,某些VB程序员会转向C#、Java或Delphi,但...
文章浏览阅读2.8k次,点赞3次,收藏13次。前言论文链接:https://arxiv.org/abs/1901.081501. Hypergraph Convolution and Hypergraph Attention1.1 Hypergraph Revisited一个普通图定义为 G=(V,E)\mathcal{G}=(V,E)G=(V,E) ,其中节点集定义为 V={v1,v2,…,vN}V=\{v_1,v_2,\dots,v_N\}V={v1,v2,…,vN},边集定义为 E⊆V×VE \subseteq V \times V_hypergraph convolution and hypergraph attention
文章浏览阅读2.5k次。drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint): 画弧,参数一是RectF对象,一个矩形区域椭圆形的界限用于定义在形状、大小、电 弧,参数二是起始角 (度)在电弧的开始,参数三扫描角(度)开始顺时针测量的,参数四是如果 这是真的话,包括椭圆中心的电 弧,并关闭它,如果它是假这将是一个弧线,参数五是Paint对象;..._setstrokecap
文章浏览阅读2.8k次,点赞5次,收藏10次。一、ARM体系的CPU有以下7种工作模式:1、用户模式(usr):正常的程序执行状态2、快速中断模式(fiq):3、中断模式(irq):4、管理模式(svc):操作系统使用的保护模式5、系统模式(sys):运行具有特权的操作系统任务6、数据访问终止模式(abt):数据或指令预取终止时进入该模式7、未定义指令终止模式(und):未定义的指令执行时进入该模式_操作系统内核通常处于()模式
文章浏览阅读566次。给出对应于7个阶段的7篇博客phase_1 https://www.cnblogs.com/wkfvawl/p/10632044.htmlphase_2 https://www.cnblogs.com/wkfvawl/p/10636214.htmlphase_3 https://www.cnblogs.com/wkfvawl/p/10651205.htmlphase_4 ht...
文章浏览阅读749次。初识JSON.........................................................................................................................................2在ASP.NET中使用JSON............................................_java 能用newtonsoft.json吗
文章浏览阅读1.9w次,点赞11次,收藏89次。颜色对照表_css 绿色