1 / 9

Crochemore’s algorithm for repetitions and its fast and space-efficient implementation

Learn about Crochemore's algorithm for efficient repetition detection using fast and space-efficient implementation techniques.

johnfreeman
Download Presentation

Crochemore’s algorithm for repetitions and its fast and space-efficient implementation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Crochemore’s algorithm for repetitions and its fast and space-efficient implementation F. Franek, W.F. Smyth Algorithms Research GroupComputing and Software McMaster University slide 1/9

  2. for(i = 0; i < N-2; i++) {for(k = 1; k <= (N-i)/2; k++) { s = 1;for(j = 0; j < k; j++) if (x[i+j] != x[i+k+j]) {s=0; break; } if (s) printf(“square of length %d at position %d\n”,k,i);}} Trivial, brute force O(n3) algorithm for repetitions. slide 2/9

  3. a b a a b a b a a b a a b a b0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 level 1 {0,2,3,5,7,8,10,11,13}a {1,4,6,9,12,14}b 2 {2,7,10}aa {0,3,5,8,11,13}ab {1,4,6,9,12}ba {14}b$ 3 {2,7,10}aab {0,3,5,8,11}aba {13}ab$ {1,6,9}baa {4,12}bab 4 {2,7,10}aaba {0,5,8}abaa {3,11}abab {1,6,9}baab {4}baba {12}bab$ 5 {7}aabaa {2,10}aabab {0,5,8}abaab {3}ababa {11}abab$ {1,6,9}baaba 6 {2}aababa {10}aabab$ {0,5,8}abaaba {6}baabaa {1,9}baabab 7 {5,8}abaabaa {0}abaabab {1}baababa {9}baabab$ 8 {5}abaabaab {8}abaabaa$ slide 3/9

  4. O O 0 1 2 3 4 5 6 N indexes 4 5 CNext[ ] c1={2,4,5} 2 4 CPrev[ ] 5 CEnd[ ] 2 CStart[ ] 3 CSize[ ] 1 1 1 CMember[] Total this slide 6*Nsubtotal 6*N slide 4/9

  5. 0 1 2 3 4 5 6 N indexes …. 0 1 3 CEmptyStack SelQueue ScQueue RefStack Refine[] Total this slide 5*Nsubtotal 11*N slide 5/9

  6. O O 0 1 2 3 4 5 6 N indexes 5 FNext[ ] f2={3,5} 3 FPrev[ ] 3 FStart[ ] 2 2 FMember[] Total this slide 4*Noverall total 15*N slide 6/9

  7. 0 1 2 3 4 5 6 N indexes 4 5 3 CNext[ ] c1={2,4,5} 5 2 CPrev[ ] Memoryvirtualization CEnd[ ] 2 CStart[ ] CSize[ ] 1 1 1 CMember[] Total this slide 4*Nsubtotal 4*N slide 7/9

  8. 0 1 2 3 4 5 6 N indexes ScQueue CEmptyStack …. 0 1 3 Memorymultiplexing RefStack SelQueue Refine[] Refine[] is virtualized over FNext[], FPrev[], and FStart[] Total this slide 2*Nsubtotal 6*N slide 8/9

  9. 0 1 2 3 4 5 6 N indexes 5 FNext[ ] f2={3,5} 3 FPrev[ ] Memoryvirtualization 3 FStart[ ] 2 2 FMember[] Refine[] is virtualized over Total this slide 4*Noverall total 10*N slide 9/9

More Related