KMP ???? - PowerPoint PPT Presentation

1 / 59
About This Presentation
Title:

KMP ????

Description:

KMP - ... (pattern matching) ... – PowerPoint PPT presentation

Number of Views:73
Avg rating:3.0/5.0
Slides: 60
Provided by: app128
Category:
Tags: kmp | matching | pattern

less

Transcript and Presenter's Notes

Title: KMP ????


1
??? ?? ????
2
??
  • ??? ?? ????
  • ??? ????
  • KMP ????
  • ???-?? ????
  • ??-?? ????
  • ?? ?? ????
  • ?? ?? ????
  • ?-?? ???
  • ??-?? ???
  • ??? ????
  • ??? ??
  • ?? ? ??? ???

3
??? ?? ????
  • ?? ?? ?
  • ???(text) ??
  • ??(pattern) ??? ???
  • ???(string)
  • ??? ????? ??? ?
  • ???(text) ???
  • ??(binary) ???
  • ??? ?? ????? ??
  • ????? ??? ??(false start) ??
  • ???? ??? ???? ??? 0? ??? ??? ??
  • ??? ??? ??? ??? ??? ?

4
??? ????(1)
  • ? ?? ?? ? ??? ????? ??
  • ???? ???? ??? ?? ???? ???? ????

BruteForce(p, t) M ? ??? ?? N ? ???? ??
for (i ? 0, j ? 0 j lt M and i lt N i ? i 1, j
? j 1) do if (ti ? pj) then i ?
i - j j ? -1 if (j M) then
return i - M else return i end ButeForce()
5
??? ????(2)
  • ?? ???
  • ??? ?? ?? ???? ???? ?? ???? ??? ???? ??? O(MN)? ?

6
??? ??? ?? ??
1 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 1 1 1 0
1 0 1 0 0 1 1 1                                  
  1 0 1 0 0 1 1 1                                
    1 0 1 0 0 1 1 1                              
      1 0 1 0 0 1 1 1                            
        1 0 1 0 0 1 1 1                          
          1 0 1 0 0 1 1 1                        
            1 0 1 0 0 1 1 1                      
              1 0 1 0 0 1 1 1                    
                1 0 1 0 0 1 1 1                  
                  1 0 1 0 0 1 1 1                
                    1 0 1 0 0 1 1 1              
                      1 0 1 0 0 1 1 1            
                        1 0 1 0 0 1 1 1          
                          1 0 1 0 0 1 1 1        
                            1 0 1 0 0 1 1 1      
                              1 0 1 0 0 1 1 1    
1 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 1 1 1 0
7
KMP ????(1)
  • KMP Knuth, Morris and Pratt
  • ???? ??? ??? ???? ? ??? ?? ??? ???? ?? ?? ????,
    ???? ??? ? ??? ??? ?? ???? ?? ??? ??
  • ??? ????? ?? nextM? ??? ??? ??? ????
  • nextM ???? ???? ?? ??? ?? ??
  • ?? ??? O(MN)

8
KMP ????(2)
KMP(p, t) M ? ??? ?? N ? ???? ??
InitNext(p) for (i ? 0, j ? 0 j lt M and i lt
N i ? i 1, j ? j 1) do while ((j 0)
and (ti ? pj)) do j ? nextj if (j
M) then return i - M else return i end
KMP()
9
? ?? ??(1)

? 10100111 ? ?? ? ?? ??
10
? ?? ??(2)
? abababca ? ?? ? ?? ??
11
? ?? ?? ????

InitNext(p) M ? ??? ?? next0 ? -1
for (i ? 0, j ? -1 j lt M i ? i 1, j ? j 1)
do nexti ? j while ((j 0) and
(pi ? pj)) do j ? nextj end
InitNext()
12
??? ??? KMP ????(1)
KMP(t) i ? -1 sm i ? i 1 s0 if
(ti ? '1') then goto sm i ? i 1 s1 if
(ti ? '0') then goto s0 i ? i 1 s2 if
(ti ? '1') then goto s0 i ? i 1 s3 if
(ti ? '0') then goto s1 i ? i 1 s4 if
(ti ? '0') then goto s2 i ? i 1 s5 if
(ti ? '1') then goto s0 i ? i 1 s6 if
(ti ? '1') then goto s1 i ? i 1 s7 if
(ti ? '1') then goto s1 i ? i 1 return
i-8 end KMP()
13
??? ??? KMP ????(2)
  • ?? ?? ??(finite state machine FSM)
  • ??(state ??? ??)
  • ??(transition ??? ??)
  • ?? ??(match transition ???? ??) ????? ??
  • ??? ??(non-match transition ???? ??) ???? ??
  • ???(?? ?? ???)
  • ???(??? ?? ???)

14
??? ??? KMP ????(3)
  • KMP ????? ?? ?? ?? ??

15
??? ?? ?? ??(1)
  • InitNext ????? nexti ? j ??
  • ??? ?? ?? ??

if (pi pj) then nexti ? nextj
else nexti
16
??? ?? ?? ??(2)
  • ??? ?? ?? ??? ??? KMP ???? ?? ??
  • 10100111
  • MN ? ??? ??? ?? ???? ?? ???? O(MN)

17
??? ?? ?? ??(3)
  • ??? ?? ?? ??? ??? KMP ???? ?? ??
  • abababca

18
???-?? ????
  • ????? ???? ??? ??? ??
  • ??? ?? ??(mismatched character heuristic) ??
  • ???? ?? ???? ??? ??? ??? ??? ????? ??? ????? ??
  • ?? ??? ??(good suffix heuristic) ??
  • ???? ???? ??? ??? ???? ?? ?? ???? ????? ??? ????
    ???? ?
  • ? ?? ? ??? ???? ???? ??? ? ? ?? ??
  • ??? ?? ?? ??? O (m n /m S)
  • ???? ? ?? O (m n /m S) ??? ??? ???? ?? ??

19
??? ?? ??? ?? ??? ??
20
??? ?? ?? ????(1)
MisChar(p, t) M ? ??? ?? N ? ???? ??
InitSkip(p) for (i ? M-1, j ? M-1 j 0 i ?
i - 1, j ? j - 1) do while (ti ? pj) do
k ? skipindex(ti) if (M-j gt k)
then i ? i M - j else i ? i k
if (i N ) then return N j ? M - 1
return i1 end MisChar()
21
??? ?? ?? ????(2)
  • InitSkip() skip ??? ??
  • ATION ? ?? skip ??

void InitSkip(char p)   int i, j, M
strlen(p)   for (i 0 i lt NUM i) skipi
M   for (i 0 i lt M i) skipindex(pi)
M - i - 1
22
??? ?? ?? ????(3)
  • ??? ?? ??? ??? ???-?? ??? ?? ??

23
??-?? ????(1)
  • ???? ????? ?? ?? ?? ?? ???? ???? ????
  • ??? ?? ???? O(MN)??? ?????? ??? ??? ?? ??? ???
    ????
  • ???? ??
  • ? ?? M ??? ???? ?? ????? ? ???? ????? ??? ????
    ???? ?? ? ???? ?? ??? ??? ??? ??

24
??? ??
  • ?? PM? ?? 10?? p? ?? ??
  • ?? PM 31415?? ? ?, p? ??? ??

25
?? ?
3 1 4 1 5 2
???
7
8
  • d 10, q 13, m 5
  • D 104 mod 13 3
  • 14152 mod 13 ((31415 - 3?104)10 2) mod 13
  • ((7 10?13 - 3?3)10
    2) mod 13
  • (11?10 2) mod 13
  • 8
  • - 31415 mod 13 7
  • 128 mod 13 11
  • 112 mod 13 8

26
??-?? ????(2)
  • --------------------------
  • ???? 5.6 ??-?? ????
  • --------------------------
  • RabinKarp(p, t)
  • dM ? 1 h1 ? 0 h2 ? 0
  • M ? ??? ?? N ? ???? ??
  • for (i ? 1 j lt M i ? i 1) do
  • dM ? (ddM) mod q
  • for (i ? 0 j lt M i ? i 1) do
  • h1 ? (h1 d index(pi)) mod q
  • h2 ? (h2 d index(ti)) mod q
  • for (i ? 0 h1 ? h2 i ? i 1) do
  • h2 ? (h2 d q - index(ti) dM) mod q
  • h2 ? (h2 d index(tiM)) mod q
  • if (i gt N-M) then return N
  • return i
  • end RabinKarp()

RabinKarp(p, t) dM ? 1 h1 ? 0 h2 ? 0 M
? ??? ?? N ? ???? ?? for (i ? 1 j lt M i ?
i 1) do dM ? (ddM) mod q for (i ? 0
j lt M i ? i 1) do h1 ? (h1 d
index(pi)) mod q h2 ? (h2 d
index(ti)) mod q for (i ? 0 h1 ? h2 i
? i 1) do h2 ? (h2 d q -
index(ti) dM) mod q h2 ? (h2 d
index(tiM)) mod q if (i gt N-M) then
return N return i end RabinKarp()
27
?? ?? ????
  • ?? ??(pattern matching)
  • ??? ????? ??? ?? ??? ?? ?? ?
  • ?? ??
  • ? ??(concatenation)
  • ???? ??? ?? ? ??? ????? ???? ??
  • ? ???(or)
  • ? ?? ?? ? ??? ???? ???? ??
  • ? ??(closure)
  • ??? ??? 0? ?? ???? ??
  • ???(regular expression)
  • ??? ????? ???? ?
  • ???? ?? ? ?? ?? ???? ???? ??(symbol)?? ?????? ??

28
?? ?? ??
  • ?? ?? ??(pattern matching machine)
  • ?? ??? ???? ?? ??
  • ???(deterministic) ??
  • ??? ?? ??? ?? ?? ??? ?? ???? ???? ?
  • KMP ????? ?? ?? ?? ??
  • ????(nondeterministic) ??
  • ??? ???? ?? ?? ??? ??? ?? ?? ??? ??? ?? ?? ??? ?
  • ??? ????? (ABAC)D? ?? ???? ?? ?? ????, ??? ??
    ??? ?? ??? ???.

29
?? ?? ?? ??
  • ?? ?? ?? ??

??
??
???
30
?? ?? ?? ?
  • (ABAC)D? ?? ???? ?? ?? ??
  • CDAABCAAABDDACDAAC

  0 1 2 3 4 5 6 7 8 9
ch   A   B     A C D  
next1 5 2 3 4 8 6 7 8 9 0
next2 5 2 1 4 8 2 7 8 9 0
31
?? ?? ???? ??
  • ?? ?? ??? ??
  • ?? ??? ??? ????? ??
  • ??? ????? ?? ??? ????
  • ??(deque double-ended queue)? ??
  • ??? ?? ??? ??
  • ????? ??? ???? ?? ??
  • ??? ????? ??
  • ??? ??? ????? ??? ??-?? ??(output-restricted
    deque)? ??
  • N ??? ???? ??? ????? M-?? ??? ??? ?? ?? ??? ????
    NM ? ??? ?? ???? ??

32
?? ?? ???? ?? ?
  • AAABD? ???? ??

33
?? ?? ????
  • ?? ??(file compression)
  • ????? ??? ???? ??? ?? ??
  • ???? ??? ???? ???? ???? ??? ?? ??
  • ??
  • ??? ??
  • ???? ???? ??? ??
  • ???? ?? ???? ??? ??? ?? ?

34
?-?? ???(1)
  • ?-?? ???(run-length encoding)
  • ??? ??? ?? ? ?? ?? ??? ?? ??? ??? ???? ??
  • ???? ???? ??? ???? ????? ??

35
?-?? ???(2)
  • ??? ??? ?? ?? ??
  • ?? ??? ??? ???? ?? ???? ??? ? ??
  • ????? ??? ???? ??? ?? ??(escape character)? ????
    ?? ??(escape sequence)? ??
  • ?? ?? ??
  • ?? ??
  • ??? ???? ???
  • 1?? ?? ??

36
??-?? ???
  • ??-?? ???(variable-length encoding)
  • ?? ???? ???? ?? ??? ???? ??? ???? ???? ?? ???
    ???? ???(encode)?? ?? ??
  • ABRACADABRA ? ?? ??? ??
  • 00001000101001000001000110000100100000010001010010
    00001
  • ABRACADABRA? ?? ?? ??
  • 0 1 01 0 10 0 11 0 1 01 0

?? A B C D R
??? 5 2 1 1 2
?? 00001 00010 00011 00100 10010
?? A B C D R
??? 5 2 1 1 2
?? 0 1 10 11 01
37
???(1)
  • ???(trie)
  • ??? ?? ??? ?? ?? ??? ???? ?? ?? ?? ???? ????
  • ?? ???? ???? ??? ? ? ??
  • ??? ?????? ?? ?? ???? ??? ? ??
  • ?? ?? ??? ??? ?? ?? ?? ???? ???? ?? ??? ??? ?

38
???(2)
  • ABRACADABRA? ?? ? ?? ??? ???
  • A 11, B 00, C 010
  • D 10, R 011
  • A 0, R 10, B 110
  • D 1110, C 1111

39
??? ???
  • ??? ???(Huffman encoding)
  • ?? ??? ? ?? ?? ???? ???? ???? ??
  • ???? ?? ???? ???? ?? ?? ???? ??? ???? ??
  • ???? ???? ??
  • ??? ??? ??? ??? ?? ?? ??(weighted external path
    length)? ?? ?
  • ??? ???? ??? ??
  • ??? ??? ???? ?

40
??? ?? ?? ??(1)
  • ?? ??
  • ??? ??? ????? ?? ??
  • ABRACADABRA ? ???? ??
  • ??? ?? ??

(a) ?? ??                        
(b) 5? 9 ??
41
??? ?? ?? ??(2)
(c) 10? 11 ??                              
(d) 14? 12 ??
(e) 15? 21 ??                             
(f) 26? 27 ??
42
??? ?? ?? ??(3)
(g) 36? 53 ??
43
??? ??
  • ??? ???? ??? ??? ??
  • lenk ??? ??? ??
  • codek ???? ??? ??? ??

    A B C D E F
k 0 1 2 3 4 5 6
lenk 2 2 3 4 4 3 3
codek 0 3 2 6 7 4 5
  00 11 010 0110 0111 100 101
44
??? ??? ?? ?(1)
  • VISION QUESTION ONION CAPTION GRADUATION
    EDUCATION
  • ?? ???
  • ?? ?? ??

45
??? ??? ?? ?(2)
  • ??? ??

46
??? ??? ?? ?(3)
  • ??? ??

  k codek lenk  
  0 1 3 001
A 1 15 4 1111
C 3 28 5 11100
D 4 1 4 0001
E 5 0 4 0000
G 7 8 5 01000
I 9 4 3 100
N 14 6 3 110
O 15 5 3 101
P 16 9 5 01001
Q 17 23 6 010111
R 18 10 5 01010
S 19 29 5 11101
T 20 7 4 0111
U 21 6 4 0110
V 22 22 6 010110
47
??? ????
  • ???(cryptology)
  • ???? ???? ?? ?? ???? ?? ? ??? ?? ?
  • ??? ????
  • ???? ???? ???? ??? ? ???? ?
  • ?? ??(cryptography)
  • ?? ?? ???? ??
  • ?? ??(cryptanalysis)
  • ?? ?? ???? ???? ??? ??

48
??? ???
  • ??? ???(cryptosystem)
  • ??? ???? ???(encrypt)
  • ??? ???? ???(decrypt)
  • ??? ??(encryption method)
  • ??? ??(decryption method)
  • ? ????(key parameters)

49
??? ??(1)
  • ???? ???(Caesar cipher)
  • ?? ??? ????? ????? ???
  • ??? ?? ??? ???? N?? ????, ??? (NK)?? ??? ??
  • K1? ? ???? ???? ?

?  ? S A V E   P R I V A T E   R Y A N
??? T B W F A Q S J W B U F A S Z B O
50
??? ??(2)
  • ?? ???? ??? ???
  • ??? ???? ????? ?? ??? ??? ??
  • ?? ???? ?
  • ? ???? ??? ???? ?

  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Q H C B E J K A R W S T U V D   I O P X Z F G L M N Y
?  ? S A V E   P R I V A T E   R Y A N
??? X H G J Q I P W G H Z J Q P N H D
51
??? ??(3)
  • ????(Vigenere) ???
  • ??? ? ??? ?? ?? ?? ???? ??
  • ???? ???? ?
  • ???(Vernam) ???
  • ???? ????? ?? ??? ??? ??? ?? ? ?
  • ???? ???? ??? ??? ???

? A B C A B C A B C A B C A B C A B
?  ? S A V E   P R I V A T E   R Y A N
??? T C Y F B S S K Y B V H A T A B P
52
??? ??(4)
  • ???? ???
  • ??? ???(exclusive-or) ?? ??

x XOR y
0 0 0
0 1 1
1 1 0
1 0 1
? 1 1 0 0 0 1 1 1 0 0 1 1
?  ? 1 0 0 1 1 0 0 0 1 1 1 0
??? 0 1 0 1 1 1 1 1 1 1 0 1
???
? 1 1 0 0 0 1 1 1 0 0 1 1
??? 0 1 0 1 1 1 1 1 1 1 0 1
?  ? 1 0 0 1 1 0 0 0 1 1 1 0
? ?
53
??? ??(4)
  • ???/??? ??
  • (encryption/decryption machine)
  • ??? ??? ??? ???? ??? ?? ?? ???? ???? ? ??
  • "?? ?(pseudo-key)" ??
  • ? ???? ???? ??
  • ???? ?? ?? ????? ?? ??

54
?? ? ??? ???(1)
  • ?? ? ??? ???(public-key cryptosystem)
  • ???? ?? ???? ??? ???? ?? ???
  • ???? ?? ?
  • ???? ???? ?? ?? ?? ???? ???? ? ??
  • ???? ?? ?
  • ???? ??? ?? ?? ?(secret key)? ???? ???
  • ?? ? ??? ???? ?? ??
  • P ?? ?, S ?? ?, M ???
  • ? S(P(M)) M
  • ? ?? (S, P) ?? ???? ??.
  • ? P??? S? ???? ?? M? ???? ??? ???? ??.
  • ? S? P? ?? ??? ? ??? ??.

55
?? ? ??? ???(2)
  • ?? ? ??? ???? ???? ??
  • ??? ? ??? ????? ???? ?? ????? ???, ??? ? ???? ??
    ??? ???? ?? ????? ??
  • ? 1)
  • 130?? ?? ???? ???? ?? 7?? ??
  • 63?? ? ??? ??? ?? ?? ? ?? ??? ???? ?? 4106?? ??
  • ? 2)
  • 200?? ??? ?? ? ??? ??? ?????? ???? ????? ??? ??
    ??? ??

56
RSA ????
  • RSA (Rivest, Shamir and Adleman) ????
  • ?? ? ??? ????? ???? ???? ????
  • ???? ?? ??? ???
  • ???
  • ???

57
RSA ???? ?? ?(1)
  • ???? ??? ?? ??
  • 3 ?? ??? ??
  • s 97(??? ?? ? ?), x 47, y 79
  • N? ??
  • N x y ??? 47 79 3713
  • p? ??
  • ps mod (x - 1)(y - 1) 1? ?? p? ??
  • p 97 mod 46 78 1
  • p 97 mod 3588 1
  • p 97 3589
  • p 3589 97 37
  • ?? ? p 37

58
RSA ???? ?? ?(2)
  • ??? ??
  • SAVE PRIVATE RYAN? A? 01, B? 02, C? 03 ?? ????
    ???
  • 190122050016180922012005001825011400
  • ??? ??
  • 190137 mod 3713 0335
  • 220537 mod 3713 1472
  • 001637 mod 3713 1447
  • 180937 mod 3713 3060
  • 220137 mod 3713 1548
  • 200537 mod 3713 1608
  • 001837 mod 3713 3091
  • 250137 mod 3713 0654
  • 140037 mod 3713 1414
  • ???? ???
  • 033514721447306015481608309106541414

59
RSA ???? ?? ?(3)
  • ??? ??
  • ??? ??
  • 033597 mod 3713 1901
  • 147297 mod 3713 2205
  • 144797 mod 3713 0016
  • ???? ???
  • 190122050016180922012005001825011400
Write a Comment
User Comments (0)
About PowerShow.com