예제 #1
0
        public SafraAlgorithm(NBA nba, Options_Safra options)
        {
            _options      = options;
            _nba_analysis = new NBAAnalysis(nba);
            _nba          = nba;
            _NODES        = 2 * nba.getStateCount();////////////ensure the number of nodes is enough

            stv_reorder = null;
            //{
            //    _next.resize(nba.getStateCount());
            //}
        }
        // -- private member functions
        /** Check that symbol label is stutter insensitive,
         *  using nba and complement_nba */
        public bool is_stutter_insensitive(NBA nba, NBA nba_complement, APElement label)
        {
            NBA stutter_closed_nba = NBAStutterClosure.stutter_closure(nba, label);

            NBA product = NBA.product_automaton(stutter_closed_nba, nba_complement);

            NBAAnalysis analysis_product = new NBAAnalysis(product);
            bool empty = analysis_product.emptinessCheck();
            //  std::cerr << "NBA is " << (empty ? "empty" : "not empty") << std::endl;

            return empty;
        }