串的模式匹配

串的模式匹配

利用KMP算法思想,完成以下两个操作:

1、分别求出下面两个模式串的next值和nextval值,并用表格呈现。

(1)t1=“ababaa

i012345
t[i]ababaa
next[i]-100123
nextval[i]-10-10-13

(2)t2=“abaabaab”

j01234567
t[j]abaabaab
next[i]-10011234
nextval[i]-10-110-110

 

2、假设病毒的DNA序列为t=“abaacba”,某患者的DNA序列为s=“abcaabbabcabaacbacba”,请你利用串结构的相关知识检测该患者是否感染病毒。

(1)请你回答检测检测该患者是否感染病毒的这项工作的实质是什么?

          检测该患者是否感染病毒的实质是进行字符串匹配,即查找患者DNA序列中是否存在病毒的DNA序列。

(2)选择KMP算法是否合适,能检测出该患者是否感染病毒吗?并分析原因。

KMP算法是一种高效的字符串匹配算法,适用于解决DNA序列匹配问题。因此,选择KMP算法是合适的,可以检测出该患者是否感染病毒。

(3)请指出这里面进行检测的主串和模式串分别是什么?

         这里进行检测的主串是患者的DNA序列s,模式串是病毒的DNA序列t。

(4)利用没有修正的KMP算法,请计算模式串的next数组值。

k0123456
t[k]abaacba
next[k]-1001100

(5)请根据问题(4)中的next数组,画出模式匹配的过程。

59a2044c3ae34aadb450f2390afccc34.png

90ffbccc32cf4f00863150cb4be504a8.png

(6)利用改进的KMP算法,请计算模式串的nextval数组值。

n0123456
t[n]abaacba
next[n]-1001100
nextval[n]-10-1110-1

(7)请根据问题(6)中的nextval数组,画出模式匹配的过程。

f77942abe2354af09e95338f5bec4eda.png

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

噗-噗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值