⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reducer.h

📁 粗糙集应用软件
💻 H
字号:
//-------------------------------------------------------------------
// Author........: Aleksander 豩rn
// Date..........: 960307
// Description...:
// Revisions.....:
//===================================================================

#ifndef __REDUCER_H__
#define __REDUCER_H__

#include <copyright.h>

#include <kernel/algorithms/algorithm.h>
#include <kernel/algorithms/objectselector.h>

#include <kernel/structures/discernibilityfunction.h>
#include <kernel/structures/booleansopfunction.h>
#include <kernel/structures/reduct.h>
#include <kernel/structures/reducts.h>
#include <kernel/structures/generalizeddecision.h>

//-------------------------------------------------------------------
// Class.........: Reducer
// Author........: Aleksander 豩rn
// Date..........: 960307
// Description...:
// Revisions.....:
//===================================================================

class Reducer : public Algorithm {
protected:

	//- Algorithm parameters...........................................
	Reduct::Discernibility   discernibility_;      // Type of reducts to calculate (full or object related).
	bool                     modulo_decision_;     // Compute reducts modulo decision attribute?
	ObjectSelector           selector_;            // Handles object selection.
	bool                     idg_;                 // Use indiscernibility definition graph (IDG)?
	String                   filename_idg_;        // IDG location, if relevant.
	bool                     precompute_;          // Precompute all disc. matrix entries?
	bool                     brt_;                 // Use boundary region thinning (BRT)?
	float                    precision_brt_;       // BRT precision, if relevant;

protected:

	//- Helper methods.................................................
	virtual bool             CreateFunction(DiscernibilityFunction &function, const DiscernibilityMatrix &matrix, const DecisionTable &table, bool masked, const Discerner &discerner) const;
	virtual bool             CreateFunction(DiscernibilityFunction &function, const DiscernibilityMatrix &matrix, int object_no, const DecisionTable &table, bool masked, const Discerner &discerner, const GeneralizedDecision::Handles *decisions) const;

	virtual bool             AppendReduct(Reducts &reducts) const;
	virtual bool             AppendReducts(const BooleanSOPFunction &primeimplicants, const Vector(int) &supports, Reducts &reducts) const;
	virtual bool             AppendReducts(const BooleanSOPFunction &primeimplicants, const DecisionTable &table, int object_no, bool masked, const Vector(int) &supports, Reducts &reducts) const;

public:

  //- Constructors/destructor........................................
  Reducer();
  virtual ~Reducer();

  //- Methods inherited from Identifier..............................
	DECLAREIDMETHODS()

	//- Methods inherited from Algorithm...............................
	virtual String           GetParameters() const;
	virtual bool             SetParameter(const String &keyword, const String &value);
	virtual bool             IsApplicable(const Structure &structure, bool warn = true) const;
	virtual Structure       *Apply(Structure &structure) const = 0;

	//- New virtual methods............................................
	virtual bool             ComputePrimeImplicants(const DiscernibilityFunction &function, BooleanSOPFunction &primeimplicants, Vector(int) &supports) const;

	//- Parameter methods..............................................
	Reduct::Discernibility   GetDiscernibility() const {return discernibility_;}
	bool                     SetDiscernibility(Reduct::Discernibility discernibility) {discernibility_ = discernibility; return true;}

	bool                     ModuloDecision() const {return modulo_decision_;}
	bool                     ModuloDecision(bool modulo_decision) {modulo_decision_ = modulo_decision; return true;}

	ObjectSelector          &GetObjectSelector() {return selector_;}
	const ObjectSelector    &GetObjectSelector() const {return selector_;}
	bool                     SetObjectSelector(ObjectSelector &selector) {selector_ = selector; return true;}

	virtual bool             UseIDG() const;
	virtual bool             UseIDG(bool idg);

	virtual const String    &GetIDGFilename() const;
	virtual bool             SetIDGFilename(const String &filename);

	virtual bool             PrecomputeMatrix() const;
	virtual bool             PrecomputeMatrix(bool precompute);

	virtual bool             UseBRT() const;
	virtual bool             UseBRT(bool brt);

	virtual float            GetBRTPrecision() const;
	virtual bool             SetBRTPrecision(float precision);

	//- Parameter methods, for internal use only.......................
	virtual bool             IsDynamicComponent() const;
	virtual bool             IsDynamicComponent(bool is_dynamic);

};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -