11
:
:
:
. -23
..
:
..
- 2011
(. string searching algorithms) , (, . pattern) .
. () - ( ) , .
. - . , . X = x [1] x [2]... x [n] - n, x [i] (i- ) . Lentgh (X) = = N - .
. .
L. Length (L) = 0.
. X Y, Z, Y = XZ. ( L, X = LX.
: ab abcfa.
. X Y, Z, Y = ZX. , .
: bfg vsenfbfg.
. X Y, Z 1 Z 2, Y = Z 1 XZ 2. Z 1 , Z 2 - . ϳ . X Y. X Y, . X Y.
: hrf fhr abhrfhr, gf sfdgfro.
' ': , ' ? ' ', . , , , .
- .
: , , ( ). , , .
, , 2 .
()
|
|
. S - , X. m n - S X . X S, 1,2,..., m-n +1 S; . 1.
, O ((m-n +1) * n +1), . . ( ), n, m . , O ((n-m +1) m). , 100 , . . , aabc ( aab), , , .
.
A, m, X n. "" n . "" ? Գ n, , , , . "" , . ҳ , .
(n ) (m ), , O (n + m). -, , , , . , , . , , , . , , , , :
1. .
2. .
3. Hash (y [i +1, i + m]) hash (y [i, i + m -1].
ϳ hash (x) hash (y [i, i + m-1]) i 0 nm . , . 2.
( ). , . . ( "" "".)
, , , . , , , ( D * n, D - ), . ? .
|
|
( ). p ( ) x p. n ( ). ֳ n-1 p x. ( p x ). "" 1 , x . , . p , X Y - n. ( , - p, ). , x , 0. г n-1 n-1 . , n p, x "" .
, , O (m + n + mn / P), mn / P , . , , , .
, . ( , , ), . ֳ ' . , ( ).
1.4. - - ()
, : -. S [1.. i] S S [1.. j] (j <i), , ( ). , abcHelloabc abc ( , ). - , , abcHelloabc ( ), ( ). . X , , ( , , X). n (X). - [13].
.
n (aba) = a, n (n (aba)) = n (a) = L;
n (abab) = ab, n (n (abab)) = n (ab) = L;
n (ababa) = aba, n (n (ababa)) = n (aba) = a, n (n (n (ababa))) = n (a) = L; n (abc) = L.
:
(1) n (X), n (n (X)), n (n (n (X))),... "" ( L).
(2) n (X), n (n (X)), n (n (n (X))),..., L X.
(3) - , X ( X), n (X), n (n (X)),...., L.
, : -. : ( ) i , i-1. , , , , .. ij , .
|
|
, : , ? , -, - m , k. while (P [k] <k), 0, , . k 1 m . , k 2m . , O (m).
-
-, - , , .
- . . . . , , , , . , . . , . ( ) , . , , .
: , , . , , . , , , .
, , .