Skip to content
Snippets Groups Projects
Commit 45a7b648 authored by Jan Trávníček's avatar Jan Trávníček
Browse files

unify result of DAWG matcher and Naive DAWG matcher construction algo

parent 994c0d4e
No related branches found
No related tags found
1 merge request!66Dev jt
Pipeline #32334 passed
......@@ -9,7 +9,7 @@ namespace stringology {
 
namespace matching {
 
auto NaiveDAWGMatcherConstructionLinearString = registration::AbstractRegister < NaiveDAWGMatcherConstruction, automaton::DFA < DefaultSymbolType, ext::set < unsigned > >, const string::LinearString < > & > ( NaiveDAWGMatcherConstruction::naiveConstruct );
auto NaiveDAWGMatcherConstructionLinearString = registration::AbstractRegister < NaiveDAWGMatcherConstruction, indexes::stringology::SuffixAutomaton < >, const string::LinearString < > & > ( NaiveDAWGMatcherConstruction::naiveConstruct );
 
} /* namespace matching */
 
......
......@@ -10,8 +10,10 @@
 
#include <automaton/determinize/Determinize.h>
#include <automaton/simplify/Minimize.h>
#include <automaton/simplify/Rename.h>
#include <automaton/simplify/EpsilonRemoverIncoming.h>
#include <stringology/indexing/NondeterministicExactSuffixAutomaton.h>
#include <stringology/indexing/ExactSuffixAutomaton.h>
 
namespace stringology {
 
......@@ -24,20 +26,20 @@ public:
* @return minimal suffix automaton for given pattern.
*/
template < class SymbolType >
static automaton::DFA < SymbolType, ext::set < unsigned > > naiveConstruct ( const string::LinearString < SymbolType > & pattern );
static indexes::stringology::SuffixAutomaton < SymbolType > naiveConstruct ( const string::LinearString < SymbolType > & pattern );
 
};
 
template < class SymbolType >
automaton::DFA < SymbolType, ext::set < unsigned > > NaiveDAWGMatcherConstruction::naiveConstruct ( const string::LinearString < SymbolType > & pattern ) {
indexes::stringology::SuffixAutomaton < SymbolType > NaiveDAWGMatcherConstruction::naiveConstruct ( const string::LinearString < SymbolType > & pattern ) {
auto patternData = pattern.getContent ( );
reverse ( patternData.begin ( ), patternData.end ( ) );
string::LinearString < SymbolType > reversedPattern ( pattern.getAlphabet ( ), std::move ( patternData ) );
 
automaton::EpsilonNFA < SymbolType, DefaultEpsilonType, unsigned > nfaSuffixAutomaton = stringology::indexing::NondeterministicExactSuffixAutomaton::construct ( reversedPattern );
automaton::DFA < SymbolType, unsigned > res = automaton::simplify::Rename::rename ( automaton::simplify::Minimize::minimize ( automaton::determinize::Determinize::determinize ( automaton::simplify::EpsilonRemoverIncoming::remove ( nfaSuffixAutomaton ) ) ) );
 
return automaton::simplify::Minimize::minimize ( automaton::determinize::Determinize::determinize ( automaton::simplify::EpsilonRemoverIncoming::remove ( nfaSuffixAutomaton ) ) );
return indexes::stringology::SuffixAutomaton < SymbolType > ( std::move ( res ), pattern.getContent ( ).size ( ) );
}
 
} /* namespace matching */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment