KMP算法用C++描述

来源:百度知道 编辑:UC知道 时间:2024/06/21 02:11:44
谁能给我详细介绍一下KMP算法用C++描述,我刚学数据结构,看书看得一头雾水啊,没看明白,哪位高手能给我详细讲下哈 ,万分感激啊

就是减少回溯。

比如 T:abbaba, P: aba, 如果按照一般匹配过程的话,aba和T里面的abb比较,自然aba和前三个abb不匹配,于是就直接后移一位,用aba和bba匹配,这样就产生了回溯。
按照KMP的算法思想,在第一次匹配并且不等的时候,P的第一位a与T里第二和第三位b不匹配只于第四位的a匹配,这样第一次匹配不成功的时候就不用右移一位与bba相比,因为很明显b与a不等。直接把P右移3位和T的第四、五、六位也就是aba匹配,并成功。
这样就减少了回溯。

自认没有写书人的水平,所以就不多说了。我看的是《数据结构(用面向对象方法与C++描述)》,清华大学出版社。这本书是我上大学时的教材