NAME LCP - Longest common prefix computation SYNOPSIS 0 use LCP::Kasai; use LCP::Karkkainen; my $Kasai = LCP::Kasai->new(); my $Karkkainen = LCP::Karkkainen->new(); my $Manzini = LCP::Manzini->new(); my @strarr = qw(t h i s i s a t e s t t o t e s t t h e c o r r e c t n e s s o f L C P K a s a i a l g o r i t h m $); my @suftab = qw(50 34 36 33 35 39 41 37 6 20 25 19 24 28 14 8 32 43 18 1 48 40 4 2 46 42 49 27 31 44 21 12 23 45 22 38 5 3 30 29 15 9 13 7 17 0 47 26 11 16 10); # ----- Compute lcp array ----- # my $lcpKasai =$Kasai->lcp(suftab => \@suftab, string => \@strarr); my $lcpKarkk =$Karkkainen->lcp(suftab => \@suftab, string => \@strarr); my $lcpManz =$Manzini->lcp(suftab => \@suftab, string => \@strarr); DESCRIPTION The longest common prefix (LCP) array is an auxiliary data struc- ture to the suffix array. The array containes lengths of the longest common prefixes (LCPs) between all pairs of consecutive suffixes in a sorted suffix array. The algorithms presented here are implementations of: Kasai’s linear time LCP construction strategy [1], Karkkainen's PLCP based LCP construction strategy [2], Manzini's space efficient LCP construction strategy [3] SYNOPSIS 1 use LCP::Kasai; my $Kasai = LCP::Kasai->new(); # ----- Compute lcp array ----- # my $LCPArrayRef =$Kasai->lcp(suftab => \@suftab, string => \@strarr); new my $Kasai = LCP::Kasai->new(); Function creates a new longest common prefix object. lcp my $LCPArrayRef =$Kasai->lcp(suftab => \@suftab, string => \@strarr); Function requires lexicograficylly ordered suffix array (suftab) and a string array (string), both as array references. As a result it returns a computed LCP array reference. SYNOPSIS 2 use LCP::Manzini; my $Manzini = LCP::Manzini->new(); # ----- Compute lcp array ----- # my $LCPArrayRef =$Manzini->lcp(suftab => \@suftab, string => \@strarr); new my $Manzini = LCP::Manzini->new(); Creates a new longest common prefix object. lcp my $LCPArrayRef =$Manzini->lcp(suftab => \@suftab, string => \@strarr); Function requires lexicograficylly ordered suffix array (suftab) and a string array (string), both as array references. As a result it returns a computed LCP array reference. SYNOPSIS 3 use LCP::Karkkainen; my $Karkkainen = LCP::Karkkainen->new(); # ----- Compute lcp array ----- # my $lcparray =$Karkkainen->lcp(suftab => \@suftab, string => \@array); my $plcparray =$Karkkainen->plcp(suftab => \@suftab, string => \@array); new my $Karkkainen = LCP::Karkkainen->new(); Creates a new longest common prefix object. lcp my $lcparray =$Karkkainen->lcp(suftab => \@suftab, string => \@array); Function requires a sorted suffix array (suftab) and a string (string) both as array references. As a result it returns computed LCP array. plcp my $plcparray =$Karkkainen->plcp(suftab => \@suftab, string => \@array); Function requires a sorted suffix array (suftab) and a string (string) both as array references. As a result it returns computed PLCP array (an array of permuted LCP values as they appear in the string) AUTHOR Robert Bakaric <rbakaric@irb.hr> LICENSE Copyright 2015 Robert Bakaric <rbakaric@irb.hr> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ACKNOWLEDGEMENTS 1. Kasai et al. Linear-Time Longest-Common-Prefix Computation in Suffix Arrays and Its Applications. 2001. 2. Karkkainen et al. Permuted Longest-Common-Prefix Array. 2009. 3. Manzini, G. and Ferragina, P. Engineering a Lightweight Suffix Array Construction Algorithm. 2002.