#ifndef _pyp_hh #define _pyp_hh #include #include #include //#include #include #include #include #include "pyp.h" #include "log_add.h" #include "slice-sampler.h" #include "mt19937ar.h" // // Pitman-Yor process with customer and table tracking // template > class MPIPYP : public PYP { public: MPIPYP(double a, double b, Hash hash=Hash()); virtual int increment(Dish d, double p0); virtual int decrement(Dish d); void clear(); void reset_deltas() { m_count_delta.clear(); } private: typedef std::map dish_delta_type; typedef std::map table_delta_type; dish_delta_type m_count_delta; table_delta_type m_table_delta; }; template MPIPYP::MPIPYP(double a, double b, Hash) : PYP(a, b, Hash) {} template int MPIPYP::increment(Dish dish, double p0) { int delta = PYP::increment(dish, p0); return delta; } template int MPIPYP::decrement(Dish dish) { int delta = PYP::decrement(dish); return delta; } template void MPIPYP::clear() { PYP::clear(); } #endif