Download presentation
Presentation is loading. Please wait.
Published byNick Blakney Modified over 10 years ago
1
Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE
2
Knuth-Morris-Pratt algoritmus (KMP) BLABLABLABLALAKBAN BLABLALAK
3
00012300 Next[]
4
Knuth-Morris-Pratt algoritmus (KMP) BLABLABLABLALAKBAN BLABLALAK
5
BLABLABLABLALAKBAN BLABLALAK
6
BLABLABLABLALAKBAN BLABLALAK
7
BLABLABLABLALAKBAN BLABLALAK
8
BLABLABLABLALAKBAN BLABLALAK
9
BLABLABLABLALAKBAN BLABLALAK
10
BLABLABLABLALAKBAN BLABLALAK
11
BLABLABLABLALAKBAN BLABLALAK
12
BLABLABLABLALAKBAN BLABLALAK
13
BLABLABLABLALAKBAN BLABLALAK
14
BLABLABLABLALAKBAN BLABLALAK
15
BLABLABLABLALAKBAN BLABLALAK
16
BLABLABLABLALAKBAN BLABLALAK
17
BLABLABLABLALAKBAN BLABLALAK
18
BLABLABLABLALAKBAN BLABLALAK
19
BLABLABLABLALAKBAN BLABLALAK
20
BLABLABLABLALAKBAN BLABLALAK
21
BLABLABLABLALAKBAN BLABLALAK
22
BLABLABLABLALAKBAN BLABLALAK
23
C++ Implementáció
25
C++ implementáció teszt környezettel #include using namespace std; string S="blablablablalakban"; string M="blablalak"; int next[100]; int n=S.length(); int m=M.length(); bool u=false; int k=0; void initnext(){ int i,j; i=1; j=0; next[0]=0; while(i<m-1){ if(M[i]==M[j]){ i++; j++; next[i]=j; }else{ if(j==0){ i++; next[i]=0; }else{ j=next[j]; } // tomb indexeles javitasa -1 iranyba int tmp[100]; for(int i=0;i<99;i++){ tmp[i]=next[i+1]; } for(int i=0;i<99;i++){ next[i]=tmp[i]; } void KMP(){ initnext(); int i,j; i=0; j=0; while(i<n && j<m){ if(S[i]==M[j]){ i++; j++; }else{ if(j==0){ // a minta elejer ugrunk i++; }else{ j=next[j]; } if(j==m){ k=i-m; u=true; }else{ u=false; } int main(){ cout << S << endl; cout << M << endl; initnext(); cout << "------------" << endl; for(int i=0;i<m-1;i++){ cout << next[i] ; } cout << endl; KMP(); cout << "Megtalalhato?(0=nem;1=igaz)" << u << endl; return 0; }
26
Vége
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.