mibark.h
来自「某个实验事编写粗糙集智能信息处理的程序」· C头文件 代码 · 共 129 行
H
129 行
// MIBARK.h: interface for the CMIBARK class.
//
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
#include "stdio.h"
#include "shareclass.h"
#if !defined(AFX_MIBARK_H__9F0EE422_24ED_11D5_8B35_0080C8E222A1__INCLUDED_)
#define AFX_MIBARK_H__9F0EE422_24ED_11D5_8B35_0080C8E222A1__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CMIBARK
{
public:
CMIBARK();
// 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; //数据类型
void 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; //保存对决策表的一个划分
int IND_Order;//保存该划分的集合个数
int IND_MaxNum; //IND_MaxNum表示在上面划分的所有集合中
//元素最多的集合所包含的元素的个数
public:
bool InitTable();//将决策表值从pIntTable复制到info中,把字符型表转化为int类型
int Create_Array(); //建立可辨识矩阵或决策矩阵
//建立可辨识矩阵与array中,其中不保存重复的属性组合,也没有保存该属性组合是属于
//哪两个记录的,并且对于每个属性组合只保留了前两个使他们不同的属性,因为计算核属
//性既是只有一个属性能区分这两个记录的属性,所以只选择个数为一的属性,而不用全部记录下来,
//array[i][0]保存的是第i个属性组合的个数(不是1就是2)
bool Reduct_Table();//计算属性组合//根据互信息选择最终的属性集
//得到属性表,attredu中保存的是属性的编号,reduct_att中保存的是属性的名称
bool Get_Att(int ** att,int num);
//初步简化决策表,删除多余的行,把简化后的决策表保存在info中
int Create_Table();
void SelectSort(int * att); //用选择法对约简后的属性(数组att)按从小到大排序
bool SaveFile(char* pFileName);//是否要进行存档
//根据属性集合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 );
//计算属性集p相对于属性集q的条件熵,Q和P分别保存了集合q和p的元素个数
double Entropy(int *q , int Q,int *p ,int P);//H(q|p)
//计算并返回决策属性的熵值H(D),划分结果保存在IND_Attrb中
double EntropyDec(int *q,int Q);
public:
//计算划分SetX中包含的集合的个数,即Card(U|X)
virtual ~CMIBARK();
bool MIBARK();
int nSelected;
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CReduct)
//}}AFX_VIRTUAL
// Implementation
protected:
};
#endif // !defined(AFX_MIBARK_H__9F0EE422_24ED_11D5_8B35_0080C8E222A1__INCLUDED_)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?