Gecode::Gist::SpaceNode Class Reference
A node of a search tree of Gecode spaces. More...
#include <spacenode.hh>
Public Member Functions | |
| SpaceNode (int p) | |
| Construct node with parent p. | |
| SpaceNode (Space *root) | |
| Construct root node from Space root and branch-and-bound object better. | |
| Space * | getSpace (NodeAllocator &na, BestNode *curBest, int c_d, int a_d) |
| Return working space. Receiver must delete the space. | |
| const Space * | getWorkingSpace (void) const |
| Return working space (if present). | |
| void | purge (const NodeAllocator &na) |
| Clear working space and copy (if present and this is not the root). | |
| void | dispose (void) |
| Free allocated memory. | |
| bool | isCurrentBest (BestNode *curBest) |
| Return whether this node is the currently best solution. | |
| int | getNumberOfChildNodes (NodeAllocator &na, BestNode *curBest, Statistics &stats, int c_d, int a_d) |
| Compute and return the number of children. | |
| NodeStatus | getStatus (void) const |
| Return current status of the node. | |
| bool | isOpen (void) |
| Return whether this node still has open children. | |
| bool | hasFailedChildren (void) |
| Return whether the subtree of this node has any failed children. | |
| bool | hasSolvedChildren (void) |
| Return whether the subtree of this node has any solved children. | |
| bool | hasOpenChildren (void) |
| Return whether the subtree of this node has any open children. | |
| int | getNoOfOpenChildren (const NodeAllocator &na) |
| Return number of open children. | |
| void | setNoOfOpenChildren (int n) |
| Set number of open children to n. | |
| bool | hasCopy (void) |
| Return whether the node has a copy. | |
| bool | hasWorkingSpace (void) |
| Return whether the node has a working space. | |
| int | getAlternative (const NodeAllocator &na) const |
| Return alternative number of this node. | |
| const Choice * | getChoice (void) |
| Return choice of this node. | |
Protected Types | |
| enum | SpaceNodeFlags { HASOPENCHILDREN = FIRSTBIT, HASFAILEDCHILDREN, HASSOLVEDCHILDREN } |
Flags for SpaceNodes. More... | |
Protected Member Functions | |
| void | setDistance (unsigned int d) |
| Set distance from copy. | |
| unsigned int | getDistance (void) const |
| Return distance from copy. | |
| void | setFlag (int flag, bool value) |
| Set status flag. | |
| bool | getFlag (int flag) const |
| Return status flag. | |
| void | setStatus (NodeStatus s) |
| Set status to s. | |
| void | acquireSpace (NodeAllocator &na, BestNode *curBest, int c_d, int a_d) |
| Acquire working space, either from parent or by recomputation. | |
Protected Attributes | |
| Space * | copy |
| A copy used for recomputation, or NULL. | |
| const Choice * | choice |
| unsigned int | nstatus |
| Status of the node. | |
Static Protected Attributes | |
| static const int | LASTBIT = HASSOLVEDCHILDREN |
| Last bit used for SpaceNode flags. | |
Detailed Description
A node of a search tree of Gecode spaces.
Definition at line 89 of file spacenode.hh.
Member Enumeration Documentation
enum Gecode::Gist::SpaceNode::SpaceNodeFlags [protected] |
Flags for SpaceNodes.
Definition at line 121 of file spacenode.hh.
Constructor & Destructor Documentation
| Gecode::Gist::SpaceNode::SpaceNode | ( | int | p | ) | [inline] |
Construct node with parent p.
Definition at line 89 of file spacenode.hpp.
| Gecode::Gist::SpaceNode::SpaceNode | ( | Space * | root | ) |
Construct root node from Space root and branch-and-bound object better.
Definition at line 276 of file spacenode.cpp.
Member Function Documentation
| void Gecode::Gist::SpaceNode::setDistance | ( | unsigned int | d | ) | [inline, protected] |
Set distance from copy.
Definition at line 76 of file spacenode.hpp.
| unsigned int Gecode::Gist::SpaceNode::getDistance | ( | void | ) | const [inline, protected] |
Return distance from copy.
Definition at line 84 of file spacenode.hpp.
| void Gecode::Gist::SpaceNode::setFlag | ( | int | flag, | |
| bool | value | |||
| ) | [inline, protected] |
Set status flag.
Definition at line 37 of file spacenode.hpp.
| bool Gecode::Gist::SpaceNode::getFlag | ( | int | flag | ) | const [inline, protected] |
Return status flag.
Definition at line 45 of file spacenode.hpp.
| void Gecode::Gist::SpaceNode::setStatus | ( | NodeStatus | s | ) | [inline, protected] |
Set status to s.
Definition at line 65 of file spacenode.hpp.
| void Gecode::Gist::SpaceNode::acquireSpace | ( | NodeAllocator & | na, | |
| BestNode * | curBest, | |||
| int | c_d, | |||
| int | a_d | |||
| ) | [protected] |
Acquire working space, either from parent or by recomputation.
Definition at line 156 of file spacenode.cpp.
| Space * Gecode::Gist::SpaceNode::getSpace | ( | NodeAllocator & | na, | |
| BestNode * | curBest, | |||
| int | c_d, | |||
| int | a_d | |||
| ) | [inline] |
Return working space. Receiver must delete the space.
Definition at line 98 of file spacenode.hpp.
| const Space * Gecode::Gist::SpaceNode::getWorkingSpace | ( | void | ) | const [inline] |
Return working space (if present).
Definition at line 112 of file spacenode.hpp.
| void Gecode::Gist::SpaceNode::purge | ( | const NodeAllocator & | na | ) | [inline] |
Clear working space and copy (if present and this is not the root).
Definition at line 120 of file spacenode.hpp.
| void Gecode::Gist::SpaceNode::dispose | ( | void | ) |
Free allocated memory.
Reimplemented in Gecode::Gist::VisualNode.
Definition at line 291 of file spacenode.cpp.
| bool Gecode::Gist::SpaceNode::isCurrentBest | ( | BestNode * | curBest | ) | [inline] |
Return whether this node is the currently best solution.
Definition at line 133 of file spacenode.hpp.
| int Gecode::Gist::SpaceNode::getNumberOfChildNodes | ( | NodeAllocator & | na, | |
| BestNode * | curBest, | |||
| Statistics & | stats, | |||
| int | c_d, | |||
| int | a_d | |||
| ) |
Compute and return the number of children.
On a node whose status is already determined, this function just returns the number of children. On an undetermined node, it first acquires a Space (possibly through recomputation), and then asks for its status. If the space is solved or failed, the node's status will be set accordingly, and 0 will be returned. Otherwise, the status is SS_BRANCH, and as many new children will be created as the branch has alternatives, and the number returned.
Definition at line 298 of file spacenode.cpp.
| NodeStatus Gecode::Gist::SpaceNode::getStatus | ( | void | ) | const [inline] |
Return current status of the node.
Definition at line 71 of file spacenode.hpp.
| bool Gecode::Gist::SpaceNode::isOpen | ( | void | ) | [inline] |
Return whether this node still has open children.
Definition at line 138 of file spacenode.hpp.
| bool Gecode::Gist::SpaceNode::hasFailedChildren | ( | void | ) | [inline] |
Return whether the subtree of this node has any failed children.
Definition at line 144 of file spacenode.hpp.
| bool Gecode::Gist::SpaceNode::hasSolvedChildren | ( | void | ) | [inline] |
Return whether the subtree of this node has any solved children.
Definition at line 149 of file spacenode.hpp.
| bool Gecode::Gist::SpaceNode::hasOpenChildren | ( | void | ) | [inline] |
Return whether the subtree of this node has any open children.
Definition at line 154 of file spacenode.hpp.
| int Gecode::Gist::SpaceNode::getNoOfOpenChildren | ( | const NodeAllocator & | na | ) |
Return number of open children.
Definition at line 369 of file spacenode.cpp.
| void Gecode::Gist::SpaceNode::setNoOfOpenChildren | ( | int | n | ) |
Set number of open children to n.
| bool Gecode::Gist::SpaceNode::hasCopy | ( | void | ) | [inline] |
Return whether the node has a copy.
Definition at line 159 of file spacenode.hpp.
| bool Gecode::Gist::SpaceNode::hasWorkingSpace | ( | void | ) | [inline] |
Return whether the node has a working space.
Definition at line 164 of file spacenode.hpp.
| int Gecode::Gist::SpaceNode::getAlternative | ( | const NodeAllocator & | na | ) | const [inline] |
Return alternative number of this node.
Definition at line 169 of file spacenode.hpp.
| const Choice * Gecode::Gist::SpaceNode::getChoice | ( | void | ) | [inline] |
Return choice of this node.
Definition at line 181 of file spacenode.hpp.
Member Data Documentation
Space* Gecode::Gist::SpaceNode::copy [protected] |
A copy used for recomputation, or NULL.
If the copy is marked, it is a working copy, i.e., it does not have to be kept for recomputation.
Definition at line 96 of file spacenode.hh.
const Choice* Gecode::Gist::SpaceNode::choice [protected] |
Definition at line 98 of file spacenode.hh.
unsigned int Gecode::Gist::SpaceNode::nstatus [protected] |
Status of the node.
If the node has a working copy, the first 20 bits encode the distance to the closest copy. The next 5 bits encode the NodeStatus, and the remaining bits are used by the VisualNode class for further flags.
Definition at line 106 of file spacenode.hh.
const int Gecode::Gist::SpaceNode::LASTBIT = HASSOLVEDCHILDREN [static, protected] |
Last bit used for SpaceNode flags.
Definition at line 127 of file spacenode.hh.
The documentation for this class was generated from the following files:
- gecode/gist/spacenode.hh
- gecode/gist/spacenode.cpp
- gecode/gist/spacenode.hpp
