https://hal.archives-ouvertes.fr/hal-01806286Crochemore, MaximeMaximeCrochemoreinconnu temporaire UPEMLV - InconnuIliopoulos, CostasCostasIliopoulosKing‘s College LondonKociumaka, TomaszTomaszKociumakaInstitute of Informatics [Warsaw] - MIMUW - Faculty of Mathematics, Informatics, and Mechanics [Warsaw] - UW - University of WarsawKundu, RituRituKunduKing‘s College LondonPissis, SolonSolonPissisDepartment of Informatics [King's College London] - King‘s College LondonRadoszewski, JakubJakubRadoszewskiInstitute of Informatics [Warsaw] - MIMUW - Faculty of Mathematics, Informatics, and Mechanics [Warsaw] - UW - University of WarsawRytter, WojciechWojciechRytterInstitute of Informatics [Warsaw] - MIMUW - Faculty of Mathematics, Informatics, and Mechanics [Warsaw] - UW - University of WarsawWaleń, TomaszTomaszWaleńNear-Optimal Computation of Runs over General Alphabet via Non-Crossing LCE QueriesHAL CCSD2016[INFO.INFO-DS] Computer Science [cs]/Data Structures and Algorithms [cs.DS]Crochemore, Maxime2018-06-01 18:42:112022-10-08 03:08:172018-06-06 10:22:51enConference papersapplication/pdf1Longest common extension queries (LCE queries) and runs are ubiquitous in algorithmic stringology. Linear-time algorithms computing runs and preprocessing for constant-time LCE queries have been known for over a decade. However, these algorithms assume a linearly-sortable integer alphabet. A recent breakthrough paper by Bannai et. al. (SODA 2015) showed a link between the two notions: all the runs in a string can be computed via a linear number of LCE queries. The first to consider these problems over a general ordered alphabet was Kosolobov (Inf. Process. Lett., 2016), who presented an O(n(log n) 2/3)-time algorithm for answering O(n) LCE queries. This result was improved by Gawrychowski et. al. (accepted to CPM 2016) to O(n log log n) time. In this work we note a special non-crossing property of LCE queries asked in the runs computation. We show that any n such non-crossing queries can be answered on-line in O(nα(n)) time, which yields an O(nα(n))-time algorithm for computing runs.