/* * BorderArrayNaive.h * * Created on: 5. 11. 2014 * Author: Jan Travnicek */ #ifndef _ARBOLOGY_BORDER_ARRAY_NAIVE_H_ #define _ARBOLOGY_BORDER_ARRAY_NAIVE_H_ #include <tree/RankedTreeWrapper.h> #include <tree/TreeFeatures.h> #include <common/multipleDispatch.hpp> #include <vector> namespace arbology { namespace exact { /** * Computation of BCS table for BMH from MI(E+\eps)-EVY course 2014 * To get rid of zeros in BCS table we ignore last haystack character */ class BorderArrayNaive : public std::SingleDispatch < std::vector < size_t >, tree::RankedTreeBase > { static bool matches ( const tree::PrefixRankedBarPattern & pattern, const std::vector < int > & subtreeJumpTable, int stop, int offset ); static bool matches ( const tree::PrefixRankedPattern & pattern, const std::vector < int > & subtreeJumpTable, int stop, int offset ); public: /** * Search for pattern in linear string. * @return set set of occurences */ static std::vector < size_t > ba ( const tree::RankedTreeWrapper & pattern ); /** * Search for pattern in linear string. * @return set set of occurences */ static std::vector < size_t > ba ( const tree::PrefixRankedBarPattern & pattern ); /** * Search for pattern in linear string. * @return set set of occurences */ static std::vector < size_t > ba ( const tree::PrefixRankedPattern & pattern ); static BorderArrayNaive & getInstance ( ) { static BorderArrayNaive res; return res; } }; } /* namespace exact */ } /* namespace arbology */ #endif /* _ARBOLOGY_BORDER_ARRAY_NAIVE_H_ */