Ejemplo n.º 1
0
        /// <summary>
        /// expands a given node
        /// </summary>
        /// <param name="toExpand"></param>
        private void Expand(MddMatchAndPruneState toExpand, successorIterator allChildren)
        {
            allChildren.initialize(toExpand);
            MddMatchAndPruneState successor;

            while (allChildren.hasNext)
            {
                successor = allChildren.getNext();
                if (closedList.ContainsKey(successor))
                {
                    ((MddMatchAndPruneState)closedList[successor]).addParent(toExpand);
                }
                else
                {
                    CostTreeNodeSolver.matchCounter++;
                    successor.addParent(toExpand);
                    closedList.Add(successor, successor);
                    openList.Enqueue(successor);
                    if (successor.stateLevel + 1 == this.solutionDepth)
                    {
                        goal = successor;
                    }
                }
            }
        }