Reversible Programming: A Case Study of Two String-Matching Algorithms

Robert Glück
(Copenhagen University)
Tetsuo Yokoyama
(Nanzan University)

String matching is a fundamental problem in algorithm. This study examines the development and construction of two reversible string-matching algorithms: a naive string-matching algorithm and the Rabin-Karp algorithm. The algorithms are used to introduce reversible computing concepts, beginning from basic reversible programming techniques to more advanced considerations about the injectivization of the polynomial hash-update function employed by the Rabin-Karp algorithm. The results are two clean input-preserving reversible algorithms that require no additional space and have the same asymptotic time complexity as their classic irreversible originals. This study aims to contribute to the body of reversible algorithms and to the discipline of reversible programming.

In Geoffrey W. Hamilton, Temesghen Kahsai and Maurizio Proietti: Proceedings 9th Workshop on Horn Clauses for Verification and Synthesis and 10th International Workshop on Verification and Program Transformation (HCVS/VPT 2022), Munich, Germany, 3rd April 2022, Electronic Proceedings in Theoretical Computer Science 373, pp. 1–13.
Published: 22nd November 2022.

ArXived at: https://dx.doi.org/10.4204/EPTCS.373.1 bibtex PDF
References in reconstructed bibtex, XML and HTML format (approximated).
Comments and questions to: eptcs@eptcs.org
For website issues: webmaster@eptcs.org