#ifndef VLCANDDESCRIM_HEADER #define VLCANDDESCRIM_HEADER 1 ////////////////////////////////////////////////////////////////// //! rcsid="$Id: CandDescrim.hh,v 1.6 2000/08/17 15:18:09 ees1cg Exp $" //! file="amma/Logic/Learn/CandDescrim.hh" //! lib=VLLearn //! author="Charles Galambos" //! date="29/03/99" //! docentry="Logic.Learn" #include "amma/Logic2/LMinTerm.hh" #include "amma/Logic2/SpaceSet.hh" #include "amma/RCHandle.hh" /////////////////////////////////////////////////// //! userlevel=Develop //: candidate descrimination term body. // See handle for details. class VLCandidateDescrimBodyC : public BodyRefCounterC { public: VLCandidateDescrimBodyC(const VLMinTermC &nterm,VLSpaceSetC &nexam); //: Constructor. VLCandidateDescrimBodyC() {} //: Default constructor. const VLMinTermC &Term(void) const { return term; } //: Candidate term. const VLSpaceSetC &Examples(void) const { return examples; } //: Example set. int Covers(void) const { return covers; } //: Get the number of examples this covers. protected: VLMinTermC term; // Condition VLSpaceSetC examples; // Examples that it descriminates IntT covers; // Number of examples its covers. (cache of examples.Size()) }; ////////////////////////////////////////////////// //! userlevel=Normal //: candidate descrimination term. // This holds a single min-term that can be used // to distinguise between two sets. class VLCandidateDescrimC : public RCHandleC { public: VLCandidateDescrimC(const VLMinTermC &nterm,VLSpaceSetC &nexam) : RCHandleC (*new VLCandidateDescrimBodyC(nterm,nexam)) {} //: Constructor. VLCandidateDescrimC() {} //: Default constructor. const VLMinTermC &Term(void) const { return Body().Term(); } //: Candidate term. const VLSpaceSetC &Examples(void) const { return Body().Examples(); } //: Example set. int Covers(void) const { return Body().Covers(); } //: Get the number of examples this covers. private: void Dummy(); }; ostream &operator<<(ostream &out,const VLCandidateDescrimC &obj); //: Output to stream. #endif