26
Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Embed Size (px)

Citation preview

Page 1: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)Farkas Attila

FAANABI.ELTE

Page 2: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 3: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

0 0 0 1 2 3 0 0Next[]

Page 4: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 5: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 6: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 7: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 8: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 9: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 10: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 11: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 12: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 13: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 14: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 15: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 16: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 17: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 18: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 19: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 20: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 21: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 22: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Knuth-Morris-Pratt algoritmus (KMP)

B L A B L A B L A B L A L A K B A NB L A B L A L A K

Page 23: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

C++ Implementáció

Page 24: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

C++ Implementáció

Page 25: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

C++ implementáció teszt környezettel• #include <iostream>• #include <string>

• 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;• }

Page 26: Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE

Vége