Generated on Thu Jan 16 2025 00:00:00 for Gecode by doxygen 1.14.0

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.
SpacegetSpace (NodeAllocator &na, BestNode *curBest, int c_d, int a_d)
 Return working space. Receiver must delete the space.
const SpacegetWorkingSpace (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 ChoicegetChoice (void)
 Return choice of this node.
Public Member Functions inherited from Gecode::Gist::Node
 Node (int p, bool failed=false)
 Construct node with parent p.
int getParent (void) const
 Return the parent.
VisualNodegetParent (const NodeAllocator &na) const
 Return the parent.
VisualNodegetChild (const NodeAllocator &na, int n) const
 Return child no n.
int getIndex (const NodeAllocator &na) const
 Return index of this node.
bool isRoot (void) const
 Check if this node is the root of a tree.
void setNumberOfChildren (unsigned int n, NodeAllocator &na)
 Set the number of children to n and initialize children.
unsigned int getNumberOfChildren (void) const
 Return the number of children.

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 Member Functions inherited from Gecode::Gist::Node
bool isUndetermined (void) const
 Return whether this node is undetermined.
int getChild (int n) const
 Return index of child no n.

Protected Attributes

Spacecopy
 A copy used for recomputation, or NULL.
const Choicechoice
unsigned int nstatus
 Status of the node.

Static Protected Attributes

static const int LASTBIT = HASSOLVEDCHILDREN
 Last bit used for SpaceNode flags.

Additional Inherited Members

Public Types inherited from Gecode::Gist::Node
typedef NodeAllocatorBase< VisualNodeNodeAllocator

Detailed Description

A node of a search tree of Gecode spaces.

Definition at line 89 of file spacenode.hh.

Member Enumeration Documentation

◆ SpaceNodeFlags

Flags for SpaceNodes.

Enumerator
HASOPENCHILDREN 
HASFAILEDCHILDREN 
HASSOLVEDCHILDREN 

Definition at line 121 of file spacenode.hh.

Constructor & Destructor Documentation

◆ SpaceNode() [1/2]

Gecode::Gist::SpaceNode::SpaceNode ( int p)
inline

Construct node with parent p.

Definition at line 89 of file spacenode.hpp.

◆ SpaceNode() [2/2]

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

◆ setDistance()

void Gecode::Gist::SpaceNode::setDistance ( unsigned int d)
inlineprotected

Set distance from copy.

Definition at line 76 of file spacenode.hpp.

◆ getDistance()

unsigned int Gecode::Gist::SpaceNode::getDistance ( void ) const
inlineprotected

Return distance from copy.

Definition at line 84 of file spacenode.hpp.

◆ setFlag()

void Gecode::Gist::SpaceNode::setFlag ( int flag,
bool value )
inlineprotected

Set status flag.

Definition at line 37 of file spacenode.hpp.

◆ getFlag()

bool Gecode::Gist::SpaceNode::getFlag ( int flag) const
inlineprotected

Return status flag.

Definition at line 45 of file spacenode.hpp.

◆ setStatus()

void Gecode::Gist::SpaceNode::setStatus ( NodeStatus s)
inlineprotected

Set status to s.

Definition at line 65 of file spacenode.hpp.

◆ acquireSpace()

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.

◆ getSpace()

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.

◆ getWorkingSpace()

const Space * Gecode::Gist::SpaceNode::getWorkingSpace ( void ) const
inline

Return working space (if present).

Definition at line 112 of file spacenode.hpp.

◆ purge()

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.

◆ dispose()

void Gecode::Gist::SpaceNode::dispose ( void )

Free allocated memory.

Definition at line 291 of file spacenode.cpp.

◆ isCurrentBest()

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.

◆ getNumberOfChildNodes()

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.

◆ getStatus()

NodeStatus Gecode::Gist::SpaceNode::getStatus ( void ) const
inline

Return current status of the node.

Definition at line 71 of file spacenode.hpp.

◆ isOpen()

bool Gecode::Gist::SpaceNode::isOpen ( void )
inline

Return whether this node still has open children.

Definition at line 138 of file spacenode.hpp.

◆ hasFailedChildren()

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.

◆ hasSolvedChildren()

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.

◆ hasOpenChildren()

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.

◆ getNoOfOpenChildren()

int Gecode::Gist::SpaceNode::getNoOfOpenChildren ( const NodeAllocator & na)

Return number of open children.

Definition at line 369 of file spacenode.cpp.

◆ setNoOfOpenChildren()

void Gecode::Gist::SpaceNode::setNoOfOpenChildren ( int n)

Set number of open children to n.

◆ hasCopy()

bool Gecode::Gist::SpaceNode::hasCopy ( void )
inline

Return whether the node has a copy.

Definition at line 159 of file spacenode.hpp.

◆ hasWorkingSpace()

bool Gecode::Gist::SpaceNode::hasWorkingSpace ( void )
inline

Return whether the node has a working space.

Definition at line 164 of file spacenode.hpp.

◆ getAlternative()

int Gecode::Gist::SpaceNode::getAlternative ( const NodeAllocator & na) const
inline

Return alternative number of this node.

Definition at line 169 of file spacenode.hpp.

◆ getChoice()

const Choice * Gecode::Gist::SpaceNode::getChoice ( void )
inline

Return choice of this node.

Definition at line 181 of file spacenode.hpp.

Member Data Documentation

◆ copy

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.

◆ choice

const Choice* Gecode::Gist::SpaceNode::choice
protected

Definition at line 98 of file spacenode.hh.

◆ nstatus

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.

◆ LASTBIT

const int Gecode::Gist::SpaceNode::LASTBIT = HASSOLVEDCHILDREN
staticprotected

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: