diff --git a/alib2algo/src/string/properties/GoodSuffixShiftTable.h b/alib2algo/src/string/properties/GoodSuffixShiftTable.h index 90fb04c9b67bc692f5e4f7c3e9c88a2321ebb470..d1901424677823d50ca0a8a426906e3d04d2f8f3 100644 --- a/alib2algo/src/string/properties/GoodSuffixShiftTable.h +++ b/alib2algo/src/string/properties/GoodSuffixShiftTable.h @@ -19,7 +19,7 @@ #include <string/properties/BorderArray.h> #include <automaton/determinize/Determinize.h> #include <automaton/simplify/EpsilonRemoverIncoming.h> -#include <stringology/exact/ExactFactorAutomaton.h> +#include <stringology/indexing/NondeterministicExactFactorAutomaton.h> namespace string { @@ -50,7 +50,7 @@ std::vector < size_t > GoodSuffixShiftTable::gss ( const string::LinearString < std::vector < unsigned > borderArray = string::properties::BorderArray::construct ( reversed ); size_t max = reversed.getContent ( ).size ( ) - borderArray.back ( ); - automaton::DFA < DefaultSymbolType, std::set < unsigned > > factorAutomaton = automaton::determinize::Determinize::determinize ( automaton::simplify::EpsilonRemoverIncoming::remove ( stringology::exact::ExactFactorAutomaton::construct ( reversed ) ) ); + automaton::DFA < DefaultSymbolType, std::set < unsigned > > factorAutomaton = automaton::determinize::Determinize::determinize ( automaton::simplify::EpsilonRemoverIncoming::remove ( stringology::indexing::NondeterministicExactFactorAutomaton::construct ( reversed ) ) ); std::vector < size_t > result; diff --git a/alib2algo/src/stringology/exact/ExactFactorAutomaton.cpp b/alib2algo/src/stringology/exact/ExactFactorAutomaton.cpp deleted file mode 100644 index 0193777efc121c1d74ad72252c628fe1510ddb02..0000000000000000000000000000000000000000 --- a/alib2algo/src/stringology/exact/ExactFactorAutomaton.cpp +++ /dev/null @@ -1,26 +0,0 @@ -/* - * ExactFactorAutomaton.cpp - * - * Created on: 7. 4. 2015 - * Author: Jan Travnicek - */ - -#include "ExactFactorAutomaton.h" -#include <string/LinearString.h> -#include <string/Epsilon.h> - -#include <deque> - -namespace stringology { - -namespace exact { - -automaton::Automaton ExactFactorAutomaton::construct(const string::String& text) { - return dispatch(text.getData()); -} - -auto ExactFactorAutomatonLinearString = ExactFactorAutomaton::RegistratorWrapper<automaton::EpsilonNFA < DefaultSymbolType, DefaultEpsilonType, unsigned >, string::LinearString < > >(ExactFactorAutomaton::construct); - -} /* namespace exact */ - -} /* namespace stringology */ diff --git a/alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.cpp b/alib2algo/src/stringology/indexing/ExactMultiNondeterministicSubsequenceAutomaton.cpp similarity index 93% rename from alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.cpp rename to alib2algo/src/stringology/indexing/ExactMultiNondeterministicSubsequenceAutomaton.cpp index 4ef32e4c6757675630821e17b9bd60842c77217f..6fbfed0d6915a969bf674cb9d9a760ef2956de51 100644 --- a/alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.cpp +++ b/alib2algo/src/stringology/indexing/ExactMultiNondeterministicSubsequenceAutomaton.cpp @@ -10,12 +10,12 @@ namespace stringology { -namespace exact { +namespace indexing { automaton::Automaton ExactMultiNondeterministicSubsequenceAutomaton::construct ( const std::set < string::String > & texts ) { return automaton::Automaton ( ExactMultiNondeterministicSubsequenceAutomaton::construct ( common::ContainerConverter < std::set < string::LinearString < > >, std::set < string::String >, string::LinearString < > >::convert ( texts ) ) ); } -} /* namespace exact */ +} /* namespace indexing */ } /* namespace stringology */ diff --git a/alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.h b/alib2algo/src/stringology/indexing/ExactMultiNondeterministicSubsequenceAutomaton.h similarity index 97% rename from alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.h rename to alib2algo/src/stringology/indexing/ExactMultiNondeterministicSubsequenceAutomaton.h index cd61e16f2a1588eab50964dc86a8fec80966181f..e8adc807f203625d17feeafb6e01140c9ddaea6e 100644 --- a/alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.h +++ b/alib2algo/src/stringology/indexing/ExactMultiNondeterministicSubsequenceAutomaton.h @@ -17,7 +17,7 @@ namespace stringology { -namespace exact { +namespace indexing { class ExactMultiNondeterministicSubsequenceAutomaton { public: @@ -59,7 +59,7 @@ automaton::EpsilonNFA < SymbolType, DefaultEpsilonType, std::pair < unsigned, un return res; } -} /* namespace exact */ +} /* namespace indexing */ } /* namespace stringology */ diff --git a/alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.cpp b/alib2algo/src/stringology/indexing/ExactNondeterministicSubsequenceAutomaton.cpp similarity index 93% rename from alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.cpp rename to alib2algo/src/stringology/indexing/ExactNondeterministicSubsequenceAutomaton.cpp index d479520957d5bcb3ceef86dd22d97fe5cf6fbf5f..feb46bf22cba7bd4d06b4ac22ec8222d30a7b29b 100644 --- a/alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.cpp +++ b/alib2algo/src/stringology/indexing/ExactNondeterministicSubsequenceAutomaton.cpp @@ -9,7 +9,7 @@ namespace stringology { -namespace exact { +namespace indexing { automaton::Automaton ExactNondeterministicSubsequenceAutomaton::construct(const string::String& text) { return dispatch(text.getData()); @@ -17,6 +17,6 @@ automaton::Automaton ExactNondeterministicSubsequenceAutomaton::construct(const auto ExactNondeterministicSubsequenceAutomatonLinearString = ExactNondeterministicSubsequenceAutomaton::RegistratorWrapper < automaton::EpsilonNFA < DefaultSymbolType, DefaultEpsilonType, unsigned >, string::LinearString < > > ( ExactNondeterministicSubsequenceAutomaton::construct ); -} /* namespace exact */ +} /* namespace indexing */ } /* namespace stringology */ diff --git a/alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.h b/alib2algo/src/stringology/indexing/ExactNondeterministicSubsequenceAutomaton.h similarity index 97% rename from alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.h rename to alib2algo/src/stringology/indexing/ExactNondeterministicSubsequenceAutomaton.h index 952da5cae87c0a380c2f1944dbbf18e251024511..8419b763755814115036969bd1f5089675c626d4 100644 --- a/alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.h +++ b/alib2algo/src/stringology/indexing/ExactNondeterministicSubsequenceAutomaton.h @@ -16,7 +16,7 @@ namespace stringology { -namespace exact { +namespace indexing { class ExactNondeterministicSubsequenceAutomaton : public std::SingleDispatch<ExactNondeterministicSubsequenceAutomaton, automaton::Automaton, const string::StringBase & > { public: @@ -48,7 +48,7 @@ automaton::EpsilonNFA < SymbolType, DefaultEpsilonType, unsigned > ExactNondeter return res; } -} /* namespace exact */ +} /* namespace indexing */ } /* namespace stringology */ diff --git a/alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.cpp b/alib2algo/src/stringology/indexing/ExactSubsequenceAutomaton.cpp similarity index 91% rename from alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.cpp rename to alib2algo/src/stringology/indexing/ExactSubsequenceAutomaton.cpp index 46cb28c63c82bd8ab4754c4cb53f34c670997dde..3da7a3dcd37ef017ed80cd3749abc8ee3b548e6e 100644 --- a/alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.cpp +++ b/alib2algo/src/stringology/indexing/ExactSubsequenceAutomaton.cpp @@ -9,7 +9,7 @@ namespace stringology { -namespace exact { +namespace indexing { automaton::Automaton ExactSubsequenceAutomaton::construct(const string::String& text) { return dispatch(text.getData()); @@ -17,6 +17,6 @@ automaton::Automaton ExactSubsequenceAutomaton::construct(const string::String& auto ExactSubsequenceAutomatonLinearString = ExactSubsequenceAutomaton::RegistratorWrapper < automaton::DFA < DefaultSymbolType, unsigned >, string::LinearString < > > ( ExactSubsequenceAutomaton::construct ); -} /* namespace exact */ +} /* namespace indexing */ } /* namespace stringology */ diff --git a/alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.h b/alib2algo/src/stringology/indexing/ExactSubsequenceAutomaton.h similarity index 97% rename from alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.h rename to alib2algo/src/stringology/indexing/ExactSubsequenceAutomaton.h index c7cd07cb056055a10bc0178845653d0c979e3809..9e52895cdf9737daf0409a3f62e2269cf813a111 100644 --- a/alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.h +++ b/alib2algo/src/stringology/indexing/ExactSubsequenceAutomaton.h @@ -16,7 +16,7 @@ namespace stringology { -namespace exact { +namespace indexing { class ExactSubsequenceAutomaton : public std::SingleDispatch<ExactSubsequenceAutomaton, automaton::Automaton, const string::StringBase & > { public: @@ -56,7 +56,7 @@ automaton::DFA < SymbolType, unsigned > ExactSubsequenceAutomaton::construct ( c return res; } -} /* namespace exact */ +} /* namespace indexing */ } /* namespace stringology */ diff --git a/alib2algo/src/stringology/indexing/NondeterministicExactFactorAutomaton.cpp b/alib2algo/src/stringology/indexing/NondeterministicExactFactorAutomaton.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0fa8a91dc28fc924db31b40bd0bb4534294457f4 --- /dev/null +++ b/alib2algo/src/stringology/indexing/NondeterministicExactFactorAutomaton.cpp @@ -0,0 +1,26 @@ +/* + * NondeterministicExactFactorAutomaton.cpp + * + * Created on: 7. 4. 2015 + * Author: Jan Travnicek + */ + +#include "NondeterministicExactFactorAutomaton.h" +#include <string/LinearString.h> +#include <string/Epsilon.h> + +#include <deque> + +namespace stringology { + +namespace indexing { + +automaton::Automaton NondeterministicExactFactorAutomaton::construct(const string::String& text) { + return dispatch(text.getData()); +} + +auto ExactFactorAutomatonLinearString = NondeterministicExactFactorAutomaton::RegistratorWrapper<automaton::EpsilonNFA < DefaultSymbolType, DefaultEpsilonType, unsigned >, string::LinearString < > >(NondeterministicExactFactorAutomaton::construct); + +} /* namespace indexing */ + +} /* namespace stringology */ diff --git a/alib2algo/src/stringology/exact/ExactFactorAutomaton.h b/alib2algo/src/stringology/indexing/NondeterministicExactFactorAutomaton.h similarity index 68% rename from alib2algo/src/stringology/exact/ExactFactorAutomaton.h rename to alib2algo/src/stringology/indexing/NondeterministicExactFactorAutomaton.h index db5c71caefd19463e9b0941ec763ff68afeb768a..84930fefb117246d019abb5b69067fa1e32f7328 100644 --- a/alib2algo/src/stringology/exact/ExactFactorAutomaton.h +++ b/alib2algo/src/stringology/indexing/NondeterministicExactFactorAutomaton.h @@ -1,12 +1,12 @@ /* - * ExactFactorAutomaton.h + * NondeterministicExactFactorAutomaton.h * * Created on: 7. 4. 2015 * Author: Jan Travnicek */ -#ifndef _EXACT_FACTOR_AUTOMATON__H_ -#define _EXACT_FACTOR_AUTOMATON__H_ +#ifndef NONDETERMINISTIC_EXACT_FACTOR_AUTOMATON_H_ +#define NONDETERMINISTIC_EXACT_FACTOR_AUTOMATON_H_ #include <automaton/Automaton.h> #include <automaton/FSM/EpsilonNFA.h> @@ -17,9 +17,9 @@ namespace stringology { -namespace exact { +namespace indexing { -class ExactFactorAutomaton : public std::SingleDispatch<ExactFactorAutomaton, automaton::Automaton, const string::StringBase & > { +class NondeterministicExactFactorAutomaton : public std::SingleDispatch<NondeterministicExactFactorAutomaton, automaton::Automaton, const string::StringBase & > { public: /** * Performs conversion. @@ -32,7 +32,7 @@ public: }; template < class SymbolType > -automaton::EpsilonNFA < SymbolType, DefaultEpsilonType, unsigned > ExactFactorAutomaton::construct(const string::LinearString < SymbolType > & text) { +automaton::EpsilonNFA < SymbolType, DefaultEpsilonType, unsigned > NondeterministicExactFactorAutomaton::construct(const string::LinearString < SymbolType > & text) { automaton::EpsilonNFA < SymbolType, DefaultEpsilonType, unsigned > res ( 0 ); res.addFinalState ( 0 ); res.setInputAlphabet(text.getAlphabet()); @@ -47,8 +47,8 @@ automaton::EpsilonNFA < SymbolType, DefaultEpsilonType, unsigned > ExactFactorAu return res; } -} /* namespace exact */ +} /* namespace indexing */ } /* namespace stringology */ -#endif /* _EXACT_FACTOR_AUTOMATON__H_ */ +#endif /* NONDETERMINISTIC_EXACT_FACTOR_AUTOMATON_H_ */ diff --git a/alib2algo/src/stringology/exact/ExactMatchingAutomaton.cpp b/alib2algo/src/stringology/matching/ExactMatchingAutomaton.cpp similarity index 92% rename from alib2algo/src/stringology/exact/ExactMatchingAutomaton.cpp rename to alib2algo/src/stringology/matching/ExactMatchingAutomaton.cpp index ab84e7dac5b163a2c5bde7d89c6b831295dd0fec..f7114e25c5b8a146d57338d429aab1556a58c4ea 100644 --- a/alib2algo/src/stringology/exact/ExactMatchingAutomaton.cpp +++ b/alib2algo/src/stringology/matching/ExactMatchingAutomaton.cpp @@ -13,7 +13,7 @@ namespace stringology { -namespace exact { +namespace matching { automaton::Automaton ExactMatchingAutomaton::construct(const string::String& pattern) { return dispatch(pattern.getData()); @@ -21,6 +21,6 @@ automaton::Automaton ExactMatchingAutomaton::construct(const string::String& pat auto ExactMatchingAutomatonLinearString = ExactMatchingAutomaton::RegistratorWrapper<automaton::NFA < DefaultSymbolType, unsigned > , string::LinearString < > >(ExactMatchingAutomaton::construct); -} /* namespace exact */ +} /* namespace matching */ } /* namespace stringology */ diff --git a/alib2algo/src/stringology/exact/ExactMatchingAutomaton.h b/alib2algo/src/stringology/matching/ExactMatchingAutomaton.h similarity index 96% rename from alib2algo/src/stringology/exact/ExactMatchingAutomaton.h rename to alib2algo/src/stringology/matching/ExactMatchingAutomaton.h index 3df4f87bc0573aa8cc8fa291be1753d7442fe787..da23f3913a213355da6dfd7ad2084685f404ed84 100644 --- a/alib2algo/src/stringology/exact/ExactMatchingAutomaton.h +++ b/alib2algo/src/stringology/matching/ExactMatchingAutomaton.h @@ -16,7 +16,7 @@ namespace stringology { -namespace exact { +namespace matching { class ExactMatchingAutomaton : public std::SingleDispatch<ExactMatchingAutomaton, automaton::Automaton, const string::StringBase & > { public: @@ -47,7 +47,7 @@ automaton::NFA < SymbolType, unsigned > ExactMatchingAutomaton::construct(const return res; } -} /* namespace exact */ +} /* namespace matching */ } /* namespace stringology */ diff --git a/astringology2/src/astringology.cpp b/astringology2/src/astringology.cpp index 4c770213afdf87ba0522e32138ba478e9294cd47..9100d2acfbc74d51f4c31c822fb97d5971c98f6c 100644 --- a/astringology2/src/astringology.cpp +++ b/astringology2/src/astringology.cpp @@ -27,11 +27,11 @@ #include <stringology/query/BNDMOccurrences.h> #include <stringology/exact/BackwardOracleMatching.h> #include <stringology/exact/BackwardDAWGMatching.h> -#include <stringology/exact/ExactMatchingAutomaton.h> -#include <stringology/exact/ExactFactorAutomaton.h> -#include <stringology/exact/ExactSubsequenceAutomaton.h> -#include <stringology/exact/ExactNondeterministicSubsequenceAutomaton.h> -#include <stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.h> +#include <stringology/matching/ExactMatchingAutomaton.h> +#include <stringology/indexing/NondeterministicExactFactorAutomaton.h> +#include <stringology/indexing/ExactSubsequenceAutomaton.h> +#include <stringology/indexing/ExactNondeterministicSubsequenceAutomaton.h> +#include <stringology/indexing/ExactMultiNondeterministicSubsequenceAutomaton.h> #include <stringology/exact/FactorOracleAutomaton.h> #include <stringology/exact/SuffixAutomaton.h> #include <string/properties/BorderArray.h> @@ -51,7 +51,7 @@ int main ( int argc, char * argv[] ) { std::vector < std::string > allowed; allowed.push_back ( "exactMatchingAutomaton" ); - allowed.push_back ( "exactFactorAutomaton" ); + allowed.push_back ( "exactNondeterministicFactorAutomaton" ); allowed.push_back ( "exactSubsequenceAutomaton" ); allowed.push_back ( "exactNondeterministicSubsequenceAutomaton" ); allowed.push_back ( "exactMultiNondeterministicSubsequenceAutomaton" ); @@ -212,19 +212,19 @@ int main ( int argc, char * argv[] ) { measurements::end ( ); measurements::start ( "Algorithm", measurements::Type::MAIN ); - automaton::Automaton automaton = stringology::exact::ExactMatchingAutomaton::construct ( pattern ); + automaton::Automaton automaton = stringology::matching::ExactMatchingAutomaton::construct ( pattern ); measurements::end ( ); measurements::start ( "Output write", measurements::Type::AUXILIARY ); alib::XmlDataFactory::toStdout ( automaton ); - } else if ( algorithm.getValue ( ) == "exactFactorAutomaton" ) { + } else if ( algorithm.getValue ( ) == "exactNondeterministicFactorAutomaton" ) { string::String subject = alib::XmlDataFactory::fromTokens ( std::move ( sax::FromXMLParserHelper::parseInput(true, subjectInput).front ( ) ) ); measurements::end ( ); measurements::start ( "Algorithm", measurements::Type::MAIN ); - automaton::Automaton automaton = stringology::exact::ExactFactorAutomaton::construct ( subject ); + automaton::Automaton automaton = stringology::indexing::NondeterministicExactFactorAutomaton::construct ( subject ); measurements::end ( ); measurements::start ( "Output write", measurements::Type::AUXILIARY ); @@ -236,7 +236,7 @@ int main ( int argc, char * argv[] ) { measurements::end ( ); measurements::start ( "Algorithm", measurements::Type::MAIN ); - automaton::Automaton automaton = stringology::exact::ExactSubsequenceAutomaton::construct ( subject ); + automaton::Automaton automaton = stringology::indexing::ExactSubsequenceAutomaton::construct ( subject ); measurements::end ( ); measurements::start ( "Output write", measurements::Type::AUXILIARY ); @@ -248,7 +248,7 @@ int main ( int argc, char * argv[] ) { measurements::end ( ); measurements::start ( "Algorithm", measurements::Type::MAIN ); - automaton::Automaton automaton = stringology::exact::ExactNondeterministicSubsequenceAutomaton::construct ( subject ); + automaton::Automaton automaton = stringology::indexing::ExactNondeterministicSubsequenceAutomaton::construct ( subject ); measurements::end ( ); measurements::start ( "Output write", measurements::Type::AUXILIARY ); @@ -265,7 +265,7 @@ int main ( int argc, char * argv[] ) { measurements::end ( ); measurements::start ( "Algorithm", measurements::Type::MAIN ); - automaton::Automaton automaton = stringology::exact::ExactMultiNondeterministicSubsequenceAutomaton::construct ( subjects ); + automaton::Automaton automaton = stringology::indexing::ExactMultiNondeterministicSubsequenceAutomaton::construct ( subjects ); measurements::end ( ); measurements::start ( "Output write", measurements::Type::AUXILIARY );