Design patterns Knuth-Morris-Pratt算法的模式发现问题

Design patterns Knuth-Morris-Pratt算法的模式发现问题,design-patterns,knuth-morris-pratt,Design Patterns,Knuth Morris Pratt,使用Knuth-Morris-Pratt查找模式p=abacaaba的正确故障链接时遇到问题 到目前为止,我得到的是: K12345678 p(k)abacaba 弗林克(k)01 01 第一个始终为0 现在我们有k(i)=a1和k(j)=b2,它们是不匹配的,所以应该是0 现在我们有k(i)=a1和k(j)=a3,这是一个匹配,a1=0,所以a3=0+1=1 现在我们把i和j一跳到右边,k(i)=b2和k(j)=c4,这是不匹配的,所以我们把i跳回到1。现在k(i)=a1,这是一个不匹配。我们

使用Knuth-Morris-Pratt查找模式p=abacaaba的正确故障链接时遇到问题

到目前为止,我得到的是:

K12345678

p(k)abacaba

弗林克(k)01 01

  • 第一个始终为0
  • 现在我们有k(i)=a1和k(j)=b2,它们是不匹配的,所以应该是0
  • 现在我们有k(i)=a1和k(j)=a3,这是一个匹配,a1=0,所以a3=0+1=1
  • 现在我们把i和j一跳到右边,k(i)=b2和k(j)=c4,这是不匹配的,所以我们把i跳回到1。现在k(i)=a1,这是一个不匹配。我们不能再往回走了,所以c4=0
  • 现在k(i)=a1和k(j)=a5,这是一个匹配。a1的值为0,因此a5=0+1=1
  • 我们又把i和j放在右边。k(i)=b2和k(j)=a6。这是不匹配的。我们把i放回1,所以k(i)=a1。a1和a6是匹配的,a1的值为0,因此a6=0+1=1
  • 我们又把i和j放在右边。k(i)=b2和k(j)=b7。这是一个匹配项,b2的值为0,因此b7的值为0+1=1
  • 最后k(i)=b2和k(j)=a8。这些不匹配,新的k(i)将是a1。a1和a8是匹配项,i的值为0,因此a8=0+1=1 我的老师给FLink(k)的答案是0 1 2 1 2 3。我做错什么了吗