KMP的精神就是想要利用比对过的资讯减少比对失败的成本,pi func找出来之后,如果比对失败就可以直接shift到正确位置,不用再一个字符一个字符shift,以下面这个跑到一半的例子为例
https://i.imgur.com/tAGEruA.jpgT跟P比对到失败的时候,在失败处前面画一条线,前面总共有5个字,这时候去查pi(5)=3,意思是P5之suffix与P之prefix可以配对到3个字符一样,所以直接shift到刚刚画的那条线前面剩3个字符,可以发现这三个字符往上看跟还没shift以前是一样的(跟pi func得知的结果一样),也就是不用再花成本去比对前面,直接从线后面比对下去就好