GithubHelp home page GithubHelp logo

lcs-bv's Introduction

NAME

LCS::BV - Bit Vector (BV) implementation of the Longest Common Subsequence (LCS) Algorithm

LCS-BV Coverage Status Kwalitee Score CPAN version

SYNOPSIS

use LCS::BV;

$object = LCS::BV->new;
@lcs    = $object->LCS(\@a,\@b);

$llcs   = $object->LLCS(\@a,\@b);

$positions = $object->prepare(\@a);
$llcs      = $object->LLCS_prepared($positions,\@b);

ABSTRACT

LCS::BV implements Algorithm::Diff using bit vectors and is faster in most cases, especially on strings with a length shorter than the used wordsize of the hardware (32 or 64 bits).

DESCRIPTION

CONSTRUCTOR

  • new()

    Creates a new object which maintains internal storage areas for the LCS computation. Use one of these per concurrent LCS() call.

METHODS

  • LLCS(\@a,\@b)

    Return the length of a Longest Common Subsequence, taking two arrayrefs as method arguments. It returns an integer.

  • LCS(\@a,\@b)

    Finds a Longest Common Subsequence, taking two arrayrefs as method arguments. It returns an array reference of corresponding indices, which are represented by 2-element array refs.

  • prepare(\@a)

    For comparison of the same sequence @a many times against different sequences @b it can be faster to prepare @a. It returns a hashref of positions. This works only on object mode.

  • LLCS_prepared($positions,\@b)

    Return the length of a Longest Common Subsequence, with one side prepared. It returns an integer. It is two times faster than LLCS().

EXPORT

None by design.

STABILITY

Until release of version 1.00 the included methods, names of methods and their interfaces are subject to change.

Beginning with version 1.00 the specification will be stable, i.e. not changed between major versions.

REFERENCES

H. Hyyroe. A Note on Bit-Parallel Alignment Computation. In M. Simanek and J. Holub, editors, Stringology, pages 79-87. Department of Computer Science and Engineering, Faculty of Electrical Engineering, Czech Technical University, 2004.

SPEED COMPARISON

Intel Core i7-4770HQ Processor
Intel® SSE4.1, Intel® SSE4.2, Intel® AVX2
4 Cores, 8 Threads
2.20 - 3.40 GHz
6 MB Cache
16 GB DDR3 RAM

LCS-BV/xt$ perl 50_diff_bench.t

LCS: Algorithm::Diff, Algorithm::Diff::XS, LCS, LCS::BV

LCS: [Chrerrplzon] [Choerephon]

            Rate      LCS:LCS    AD:LCSidx AD:XS:LCSidx   LCS:BV:LCS

LCS:LCS 9225/s -- -72% -87% -88% AD:LCSidx 33185/s 260% -- -53% -58% AD:XS:LCSidx 70447/s 664% 112% -- -12% LCS:BV:LCS 79644/s 763% 140% 13% --

LCS: [qw/a b d/ x 50], [qw/b a d c/ x 50]

           Rate      LCS:LCS    AD:LCSidx   LCS:BV:LCS AD:XS:LCSidx

LCS:LCS 49.5/s -- -37% -96% -99% AD:LCSidx 79.0/s 60% -- -94% -98% LCS:BV:LCS 1255/s 2434% 1488% -- -69% AD:XS:LCSidx 4073/s 8124% 5052% 224% --

LLCS: [Chrerrplzon] [Choerephon]

                 Rate    LCS:LLCS AD:LCS_length AD:XS:LCS_length LCS:BV:LLCS

LCS:LLCS 11270/s -- -70% -70% -92% AD:LCS_length 37594/s 234% -- -1% -75% AD:XS:LCS_length 38059/s 238% 1% -- -74% LCS:BV:LLCS 148945/s 1222% 296% 291% --

LLCS: [qw/a b d/ x 50], [qw/b a d c/ x 50]

               Rate     LCS:LLCS AD:LCS_length AD:XS:LCS_length  LCS:BV:LLCS

LCS:LLCS 50.0/s -- -37% -37% -98% AD:LCS_length 79.2/s 58% -- -1% -97% AD:XS:LCS_length 79.8/s 60% 1% -- -97% LCS:BV:LLCS 2357/s 4614% 2874% 2853% --

SOURCE REPOSITORY

http://github.com/wollmers/LCS-BV

SEE ALSO

Algorithm::Diff LCS LCS::Tiny

AUTHOR

Helmut Wollmersdorfer [email protected]

Kwalitee Score

COPYRIGHT AND LICENSE

Copyright 2014-2020 by Helmut Wollmersdorfer

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

lcs-bv's People

Contributors

adeishs avatar wollmers avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

rns adeishs

lcs-bv's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.