Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
OracleMatcherConstruction.h
Go to the documentation of this file.
1
6/*
7 * Author: Radovan Cerveny
8 */
9
10#pragma once
11
12#include <automaton/FSM/DFA.h>
13#include <string/LinearString.h>
14
16
17namespace stringology {
18
19namespace matching {
20
22public:
27 template < class SymbolType >
29
30};
31
32template < class SymbolType >
34 auto patternData = pattern.getContent ( );
35 reverse ( patternData.begin ( ), patternData.end ( ) );
36 string::LinearString < SymbolType > reversedPattern ( pattern.getAlphabet ( ), std::move ( patternData ) );
37
38 return stringology::indexing::ExactSuffixAutomaton::construct ( reversedPattern ).getAutomaton ( ); // FIXME this is not oracle automaton
39}
40
41} /* namespace matching */
42
43} /* namespace stringology */
44
Deterministic finite automaton. Accepts regular languages.
Definition: DFA.h:71
Linear string.
Definition: LinearString.h:57
const ext::set< SymbolType > & getAlphabet() const &
Definition: LinearString.h:103
const ext::vector< SymbolType > & getContent() const &
Definition: LinearString.h:238
static indexes::stringology::SuffixAutomaton< SymbolType > construct(const string::LinearString< SymbolType > &pattern)
Definition: ExactSuffixAutomaton.h:37
Definition: OracleMatcherConstruction.h:21
static automaton::DFA< SymbolType, unsigned > construct(const string::LinearString< SymbolType > &pattern)
Definition: OracleMatcherConstruction.h:33
Definition: ArithmeticCompression.h:18