#ifndef CONJUGATE_DIRICHLET_H_
#define CONJUGATE_DIRICHLET_H_

#include <sampler/ConjugateSampler.h>

/**
 * @short Conjugate sampler for Dirichlet distribution.  
 *
 * A conjugate sampler may be created for the stochastic node "snode"
 * if it has a Dirichlet distribution and its marginal stochastic
 * children have either a categorical distribution (dcat) or a
 * multinomial distribution (dmult) with snode as the probability
 * vector.  In the case of a multinomial distribution, the sample size
 * must not depend on snode.  The immediate deterministic children
 * must be either identity functions or mixture nodes.
 */
class ConjugateDirichlet : public ConjugateSampler {
 public:
  ConjugateDirichlet(StochasticNode *snode, Graph const &graph);
  ~ConjugateDirichlet();
  
  static bool canSample(StochasticNode *snode, Graph const &graph);
  void update();
};

#endif /* CONJUGATE_DIRICHLET_H_ */


syntax highlighted by Code2HTML, v. 0.9.1