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

📄 attentropyreduce.h

📁 某个实验事编写粗糙集智能信息处理的程序
💻 H
字号:
 // AttEntropyReduce.h: interface for the CAttEntropyReduce class.
//
//////////////////////////////////////////////////////////////////////
#include "stdio.h"
#include "shareclass.h"

#if !defined(AFX_ATTENTROPYREDUCE_H__7086BAE5_2427_11D5_8B35_0080C8E222A1__INCLUDED_)
#define AFX_ATTENTROPYREDUCE_H__7086BAE5_2427_11D5_8B35_0080C8E222A1__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CAttEntropyReduce  
{
public:
	CAttEntropyReduce();
	

	// Implementation
public:
    static int iTempFileNum;	//临时文件的编号
	int pAttReduce;
    bool bBlock;		//是否有block
	int iBlockNum;		//block的数目
	char*** pBlockTable;	//放block的表
	struct WCutRecord* struWCutRecord;	//放置断点的链表的入口
	bool bCuts;		//是否有断点
    bool  bSaveTempResult;		//是否保存临时结果
	static CString strFileName;		//保存的文件名
	int** pIntTable;		//整型表
    char** pAttName;		//属性名
    int iInteger;			//整形数的列数
	int iRecordNum;			//记录数
	int iAttNum;			//条件属性个数
	int iStage;				//处理的阶段
	char cStyle[10];		//文件类型
	char** pDataType;		//数据类型
    bool GetData(char* FileName); 
	//从文件中读取相关信息,包括记录数,属性名,属性类型,断点值以及决策表值
	bool SetCutResult(FILE* fp);//将断点读入到CutRecord结构中
	bool SetIntegerTable(FILE *fp,int column, int row);	
	//将整形值读入到pIntTable中
    bool SetDataType(FILE* fp,int count);//将数据类型读入pDataType中
	bool SetAttName(FILE* fp,int count);//将属性名称读入pAttName中
    void  FreeContent();   //释放所有可能分配了的内存	

public:
     int **info;          //原始表,以转化为int。二维指针
	 int con_num;         //条件属性数
	 int rec_num;         //记录对象数
     int element;         //可辩识(决策)矩阵中的元素个数
     int ** array;        //可辩识(决策)矩阵的指针
     int reduct_num;      //共有几组属性约简结果
	
	 int redu_att_num;    //约简后的核属性数
	 int redu_num;       //约简后的条件属性个数 非核属性数目
	 int red_dec_num;   //决策属性数
	 int result_num;//最终的约简结果属性的数目

	 int *reductset;  //约简核属性集(数字式)
	 int *attreductset;//约简条件属性集
	 int *decreductset; //约简后的决策属性集。
	 int *resultset; //约简结果
	 int *attallreductset;
	 int *attreducttemset;
     int *attreductsetxu;

     int ** result;               //约简结果
     char *** reduct_att;  //属性约简后的条件属性集


//////////////////////////////////
//	 添加的内容
//////////////////////////////////
	 int **IND_Attrb;//决策表进行划分,结果保存在IND_Attrb中
     int IND_Order;//IND_Order表示划分成的集合的个数
	 int IND_MaxNum;//IND_MaxNum表示所有集合中
//元素最多的集合所包含的元素的个数
public:
	void InitTable();     //把字符型表转化为int类型
//建立可辨识矩阵与array中,其中不保存重复的属性组合,也没有
//保存该属性组合是属于哪两个记录的,并且对于每个属性组合只保
//留了前两个使他们不同的属性,因为计算核属性既是只有一个属性
//能区分这两个记录的属性,所以不用全部记录下来
//array[i][0]保存的是第i个属性组合的个数(不是1就是2)
    int  Create_Array();  //建立可辨识矩阵或决策矩阵
	    //根据互信息选择最终的属性集
    bool Reduct_Table();//计算属性组合
      //初步简化决策表,删除多余的行,把简化后的决策表保存在info中
	bool Get_Att(int ** att,int num);//将pAttName 拷贝到reduct_att中
	int  Create_Table();  
  	void SelectSort(int * att);   //用选择法对约简后的属性重新排列,对数组att中的元素按从小到大排序
	bool SaveFile(char* pFileName);//是否要进行存档
// Construction
	////////////////添加的部分内容////////
	//////////////////////////////////////
//根据属性集合b对决策表进行划分,B表示属性集合b的元素个数,rownum表示要划分的记录的个数
//划分结果保存在IND_Attrb中,IND_Order表示划分成的集合的个数,IND_MaxNum表示所有集合中
//元素最多的集合所包含的元素的个数
     void IND(int *b, int B, int rownum);//划分

     //IND_Attrb中的第i个集合与Y中第j个集合交集的元素个数
     int YX_Jiao(int j, int i, int **IND_Y );//Yj与Xi交的个数

  //计算属性集p相对于属性集q的条件熵,Q和P分别保存了集合q和p的元素个数	
     double Entropy(int *q , int Q,int *p ,int P);//H(q|p)


// Attributes
public:

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CReduct)
	//}}AFX_VIRTUAL

// Implementation
public:
   	bool AttEntropyReduce();    //具体执行约简的函数
	int nSelected;

protected:

// Generated message map functions
public:
	//{{AFX_MSG(CRoughsetDoc)
		// NOTE - the ClassWizard will add and remove member functions here.
		//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_MSG
  virtual ~CAttEntropyReduce();
};
#endif // !defined(AFX_ATTENTROPYREDUCE_H__7086BAE5_2427_11D5_8B35_0080C8E222A1__INCLUDED_)

⌨️ 快捷键说明

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