Skip to main content

A Taxonomy of Some Right-to-Left String-Matching Algorithms

  • Conference paper
Functional and Constraint Logic Programming (WFLP 2009)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 5979))

Included in the following conference series:

Abstract

This paper presents a taxonomy of some exact, right-to-left, string-matching algorithms. The taxonomy is based on results obtained by using logic program transformation over a naive and nondeterministic specification. A derivation of the search part and some notes about the preprocessing part of each algorithm is presented. The derivations show several design decisions behind each algorithm, and allow us to organize the algorithms within a taxonomic tree, giving us a better understanding of these algorithms and possible mechanical procedures to derive them.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Apostolico, A., Giancarlo, R.: The Boyer–Moore–Galil string searching strategies revisited. SIAM J. Comput. 15(1), 98–105 (1986)

    Article  MathSciNet  Google Scholar 

  2. Bird, R., de Moor, O.: Algebra of Programming. Prentice Hall, Englewood Cliffs (1997)

    Google Scholar 

  3. Bird, R.: Polymorphic string matching. In: Haskell 2005, Tallinn, Estonia. Association for Computing Machinery, ACM (September 2005)

    Google Scholar 

  4. Boyer, R.S., Strother Moore, J.: A Fast String Searching Algorithm. Communications of the ACM 20(10) (October 1977)

    Google Scholar 

  5. Clark, K.L., Darlington, J.: Algorithm classification through synthesis. The Computer Journal 23(1), 61–65 (1978)

    Article  MathSciNet  Google Scholar 

  6. Consel, C., Danvy, O.: Partial Evaluation of Pattern Matching in Strings. Information Processing Letters 30(2), 79–86 (1989)

    Article  Google Scholar 

  7. Clark, K.L.: Negation as Failure. In: Gallaire, H., Minker, J. (eds.) Logic and Databases, pp. 293–322. Plenum Press, New York (1978)

    Google Scholar 

  8. Crochemore, M., Perrin, D.: Two-way string-matching. Journal of the Association for Computing Machinery 38(3) (July 1991)

    Google Scholar 

  9. Crochemore, M., Rytter, W.: Text Algorithms. Oxford University Press, Oxford (1994)

    Google Scholar 

  10. Crochemore, M., Rytter, W.: Jewels of Stringology. World Scientific Publishing, Singapore (2002)

    Google Scholar 

  11. Darlington, J.: A synthesis of several sorting algorithms. Acta Informatica 11, 1–30 (1978)

    Article  MathSciNet  Google Scholar 

  12. Danvy, O., Korsholm, H.R.: On obtaining the boyer–moore string-matching algorithm by partial evaluation. Information Processing Letters 99(4) (August 2006)

    Google Scholar 

  13. Fioravanti, F., Pettorossi, A., Proietti, M.: Specialization with clause splitting for deriving deterministic constraint logic programs. In: Proceedings of the IEEE International Conference on Systems, Man, and Cybernetics (SMC 2002), Hammamet, Tunisia. IEEE Computer Society Press, Los Alamitos (2002)

    Google Scholar 

  14. Gergatsoulis, M., Katzouraki, M.: Unfold/fold Transformations for Definite Clause Programs. In: Hermenegildo, M., Penjam, J. (eds.) PLILP 1994. LNCS, vol. 844. Springer, Heidelberg (1994)

    Google Scholar 

  15. Nigel Horspool, R.: Practical Fast Searching in Strings. Software—Practice and experience 10(6), 501–506 (1980)

    Article  Google Scholar 

  16. Hernández, M., Rosenblueth, D.: Development Reuse and the Logic Program Derivation of Two String-Matching Algorithms. In: Proceedings of the 3rd International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP 2001), September 2001, Florence, Italy, pp. 38–48 (2001)

    Google Scholar 

  17. Hernández, M., Rosenblueth, D.: A Disjunctive Partial Deduction of a Right-to-Left String-Matching Algorithm. Information Proceesing Letters 87(5), 235–241 (2003)

    Article  Google Scholar 

  18. Knuth, D.E., Morris, J.H., Pratt, V.R.: Fast Pattern Matching in Strings. SIAM Journal of Computation 6(2), 323–350 (1977)

    Article  MathSciNet  Google Scholar 

  19. Lau, K.-K.: A Note on Synthesis and Classification of Sorting Algorithms. Acta Informatica 27, 73–80 (1989)

    Article  Google Scholar 

  20. Lloyd, J.W.: Foundations of Logic Programming, 2nd edn. Springer, Heidelberg (1987)

    Google Scholar 

  21. Malmkjr, K., Amtoft, T., Consel, C., Danvy, O.: The abstraction and instantiation of string-matching programs. In: Mogensen, T.Æ., Schmidt, D.A., Sudborough, I.H. (eds.) The Essence of Computation. LNCS, vol. 2566, pp. 332–357. Springer, Heidelberg (2002)

    Google Scholar 

  22. Parnas, D.L.: On the design and development of program families. IEEE Transactions of Software Engineering SE-2(1), 1–9 (1976)

    Article  Google Scholar 

  23. Pepper, P.: Literate Program Derivation: A Case Study. In: Broy, M., Wirsing, M. (eds.) CIP 1991. LNCS, vol. 544, pp. 101–124. Springer, Heidelberg (1991)

    Chapter  Google Scholar 

  24. Pettorossi, A., Proietti, M.: Transformation of logic programs. In: Gabbay, D.M., Hogger, C.J., Robinson, J.A. (eds.) Handbook of Logic in Artificial Intelligence and Logic Programming, vol. 5, pp. 697–787. Oxford University Press, Oxford (1998)

    Google Scholar 

  25. Pettorossi, A., Proietti, M., Renault, S.: Enhancing Partial Deduction via Unfold/Fold Rules. In: Gallagher, J.P. (ed.) LOPSTR 1996. LNCS, vol. 1207. Springer, Heidelberg (1997)

    Google Scholar 

  26. Partsch, H.A., Stomp, F.A.: A fast pattern matching algorithm derived by transformational and assertional reasoning. Formal Aspects of Computing 2, 109–122 (1990)

    Article  Google Scholar 

  27. Reif, J.H., Scherlis, W.L.: Deriving efficient graphs algorithms. In: Logic of programs (Proceedings 1983). LNCS, vol. 164, pp. 421–441. Springer, Heidelberg (1983)

    Google Scholar 

  28. Sørensen, M.H., Glück, R., Jones, N.D.: A positive supercompiler. Journal of Functional Programming 6(6), 811–838 (1996)

    Article  Google Scholar 

  29. Smith, D.A.: Partial Evaluation of Pattern Matching in Constraint Logic Programming Language. In: Proceedings of the Symposium on Partial Evaluation and Semantics-Based Program Manipulation, PEPM 1991, Connecticut, USA, pp. 62–71. ACM Press, New York (1991)

    Chapter  Google Scholar 

  30. Stephen, G.A.: String Searching Algorithms. Lecture Notes Series on Computing, vol. 3. World Scientific Publishing, Singapore (1994)

    Google Scholar 

  31. Sunday, D.M.: A very fast substring search algorithm. Communications of the ACM 33(8) (August 1990)

    Google Scholar 

  32. Watson, B.W., Zwaan, G.: A taxonomy of sublinear multiple keyword pattern matching algorithms. Science of Computer Programming 27(2), 85–118 (1996)

    Article  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2010 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Hernández, M. (2010). A Taxonomy of Some Right-to-Left String-Matching Algorithms. In: Escobar, S. (eds) Functional and Constraint Logic Programming. WFLP 2009. Lecture Notes in Computer Science, vol 5979. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-11999-6_6

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-11999-6_6

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-11998-9

  • Online ISBN: 978-3-642-11999-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics