Skip to content
Snippets Groups Projects
Determinize.h 2.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jan Trávníček's avatar
    Jan Trávníček committed
    /*
    
    Jan Trávníček's avatar
    Jan Trávníček committed
     * Determinize.h
    
    Jan Trávníček's avatar
    Jan Trávníček committed
     *
     *  Created on: 16. 1. 2014
     *	  Author: Jan Vesely
     */
    
    
    #ifndef DETERMINIZE_H_
    #define DETERMINIZE_H_
    
    #include <core/multipleDispatch.hpp>
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    #include <set>
    
    
    #include <automaton/Automaton.h>
    
    #include <automaton/AutomatonFeatures.h>
    
    namespace automaton {
    
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    namespace determinize {
    
    /**
     * Class for running determinization algorithm on fsm.
     */
    
    class Determinize : public std::SingleDispatch<Determinize, automaton::Automaton, const automaton::AutomatonBase &> {
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    public:
    
    	/**
    	 * @param nfsm nondeterministic final-state machine given for determinization
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    	 * Runs determinization algorithm on nondeterministic fsm given in constructor.
    	 */
    
    	static automaton::Automaton determinize(const automaton::Automaton& nfa);
    
    	static automaton::DFA<> determinize(const automaton::DFA<>& nfa);
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    	static automaton::DFA<> determinize(const automaton::NFA < > & nfa);
    
    	static automaton::DFA<> determinize(const automaton::MultiInitialStateNFA < > & nfa);
    
    	static automaton::DPDA < > determinize(const automaton::DPDA < > & dpda);
    
    	static automaton::DPDA < > determinize(const automaton::NPDA < > & dpda);
    
    	static automaton::SinglePopDPDA < > determinize(const automaton::SinglePopDPDA < > & dpda);
    
    	static automaton::VisiblyPushdownDPDA < > determinize(const automaton::VisiblyPushdownDPDA < > & nondeterministic);
    
    	static automaton::VisiblyPushdownDPDA < > determinize(const automaton::VisiblyPushdownNPDA < > & nondeterministic);
    
    	static automaton::InputDrivenDPDA < > determinize(const automaton::InputDrivenDPDA < > & nfa);
    
    	static automaton::InputDrivenDPDA < > determinize(const automaton::InputDrivenNPDA < > & nfa);
    
    	static automaton::RealTimeHeightDeterministicDPDA < > determinize(const automaton::RealTimeHeightDeterministicDPDA < > & nondeterministic);
    
    	static automaton::RealTimeHeightDeterministicDPDA < > determinize(const automaton::RealTimeHeightDeterministicNPDA < > & nondeterministic);
    
    	static automaton::DFTA < > determinize(const automaton::DFTA < > & nfta);
    	static automaton::DFTA < > determinize(const automaton::NFTA& nfta);
    
    
    	static automaton::OneTapeDTM<> determinize(const automaton::OneTapeDTM<>& nfta);
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    };
    
    } /* namespace determinize */
    
    
    } /* namespace automaton */
    
    #endif /* DETERMINIZE_H_ */