Example #1
0
        private void achieve(int flag)
        {
            if (!(flag == SORTED_BY_INPUT ||
                  flag == SORTED_BY_OUTPUT ||
                  flag == HAS_HEURISTICS))
            {
                throw new Exception("CHECK_ARG: flag == SORTED_BY_INPUT || flag == SORTED_BY_OUTPUT || flag == HAS_HEURISTICS");
            }

            if (flags > 0 & flag > 0)
            {
                return;
            }

            if (flag == HAS_HEURISTICS)
            {
                AStarUtil.a_star_backwards(m_heuristics, this);
                return;
            }

            for (int node = 0; node < nStates(); node++)
            {
                Intarray permutation = new Intarray();
                if (flag == OcroFST.SORTED_BY_INPUT)
                {
                    NarrayUtil.Quicksort(permutation, m_inputs[node]);
                }
                else
                {
                    NarrayUtil.Quicksort(permutation, m_outputs[node]);
                }
                NarrayUtil.Permute(m_inputs[node], permutation);
                NarrayUtil.Permute(m_outputs[node], permutation);
                NarrayUtil.Permute(m_targets[node], permutation);
                NarrayUtil.Permute(m_costs[node], permutation);
            }
            flags |= flag;
        }
Example #2
0
 public override double BestPath(out string result)
 {
     return(AStarUtil.a_star(out result, this));
 }