ÿþI n s t r u k c j a I E F A l g o r y t m y i s t r u k t u r y d a n y c h
L a b o r a t o r i u m 2 : P r z e s z u k i w a n i e t e k s t ó w c d .
1 . A l g o r y t m K M P ( K n u t h , M o r r i s P r a t t ) .
A l g o r y t m K M P o p u b l i k o w a n y z o s t a B w r o k u 1 9 7 6 i s t a n o w i r o z w i n i c i e a l g o r y t m u n a i w n e g o . A l g o r y t m
n a i w n y w y k o n u j e w i e l e p o w t a r z a j c y c h s i p r z e s z u k i w a D, n i e w y k o r z y s t u j c w p r z y p a d k u n i e z g o d n o [c i
k t ó r e g o [ z n a k u w z o r c a i n f o r m a c j i w c z e [n i e j p r z e b a d a n e j . W a l g o r y t m i e K M P w y k o r z y s t y w a n a j e s t
i n f o r m a c j a o m o \l i w o [c i w y k o n a n i a p r z e s u n i c i a w z o r c a o w i c e j n i \ j e d e n z n a k .
i i n d e k s t e k s t u
j i n d e k s w z o r c a
N d Bu g o [ t e k s t u
M - d Bu g o [ w z o r c a .
" t w o r z e n i e t a b l i c y p r z e s u n i
T a b l i c a p r z e s u n i ( z w y c z a j o w o n a z w a n a n e x t ) w y k o r z y s t y w a n a j e s t w a l g o r y t m i e K M P d o
w y z n a c z a n i a m a k s y m a l n y c h b e z p i e c z n y c h p r z e s u n i w z o r c a w z g l d e m p r z e s z u k i w a n e g o t e k s t u .
T w o r z o n a j e s t w e d Bu g n a s t p u j c e g o a l g o r y t m u :
a ) n e x t [ 0 ] = - 1
j = 1
b ) u m i e [ k o p i p i e r w s z y c h j z n a k ó w w z o r c a p o d f r a g m e n t e m w z o r c a z Bo \o n y m z p i e r w s z y c h j l i t e r
w z o r c a , p r z e s u n i t y c h w p r a w o o j e d e n z n a k
c ) p r z e s u w a j t e k o p i w p r a w o d o c h w i l i g d y :
- w s z y s t k i e n a k Ba d a j c e z n a k i s i d e n t y c z n e , l u b
- n i e m a n a k Ba d a j c y c h s i z n a k ó w
d ) n e x t [ j ] j e s t r ó w n e l i c z b i e n a k Ba d a j c y c h s i z n a k ó w
j = j + 1
j e [l i j j e s t r ó w n e d Bu g o [c i w z o r c a s t o p ,
w p r z e c i w n y m w y p a d k u s k o c z d o p u n k t u b ) .
n e x t [ 0 ] = - 1 ;
f o r ( i = 0 , j = - 1 ; i <