Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Knuth-Morris-Pratt algoritmus (KMP) Farkas Attila FAANABI.ELTE."— Presentation transcript:

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ó

24

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


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

Similar presentations


Ads by Google