#ifndef CONSTANT_NODE_H_
#define CONSTANT_NODE_H_

#include <graph/Node.h>

/**
 * Constant nodes represent the top level parameters in any directed
 * graphical model.  They are always scalar, and should not have
 * parents.  It is not an error to add parents to a constant node, but
 * it does not make any sense either.
 */
class ConstantNode : public Node {
 public:
  /**
   * Construct node and set its value. The value is fixed.
   */
  ConstantNode(double value);
  /**
   * This function does nothing. It exists only so that objects of
   * class ConstantNode can be instantiated.
   */
  void forwardSample();
  std::string name(NodeNameTab const &name_table) const;
  /**
   * Constant nodes are considered stochastic. They are observed
   * random variables whose values we are conditioning on.
   */
  bool isStochastic() const;
};

#endif /* CONSTANT_NODE_H_ */






syntax highlighted by Code2HTML, v. 0.9.1