liedynamicreduct.h
来自「某个实验事编写粗糙集智能信息处理的程序」· C头文件 代码 · 共 80 行
H
80 行
#if !defined(AFX_LIEDYNAMICREDUCT_H__CB883879_B28E_11D5_A0FF_0080C8E21834__INCLUDED_)
#define AFX_LIEDYNAMICREDUCT_H__CB883879_B28E_11D5_A0FF_0080C8E21834__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// LieDynamicReduct.h : header file
/*-------------------------------------------------------------
动态约简算法1.
算法描述如下:
1.先计算一个约简结果集(使用可辨识矩阵)
2.随机删除若干个记录(records),再次计算约简结果集
3.重复2直到某个条件(剩下的记录数少于40%)为止
4.计算1结果中各约简在2结果中出现的次数(trade).次数多,则表明结果
较优.
作者: Kylin Li
时间: 2000.10
依赖的类:
STL list类 (c++ Standard Template Liaray)
CTable (约简公共基类 table.h)
CLieBitArray (位运算包装类 liebitarray.h)
使用方法:
CTable* table=new CLieDynamicReduct;
//or CLieDynamicReduct *table=new CLieDynamicReduct;
if(table->Perform("inputfilename","outputfilename"))
//ok!
else
// error happened,mostly storage insufficient.
delete table;
其它说明:
构造函数中调用srand()初始化了随机数生成器.
--------------------------------------------------------------*/
#include "../table.h"
#include<list>
#include "liebitarray.h"
typedef std::list<CLieBitArray> Contain;
typedef std::pair<CLieBitArray,int> Result_Node;
typedef std::list<Result_Node> Result_Contain;
class CLieDynamicReduct : public CTable
{
public:
CLieDynamicReduct();
virtual ~CLieDynamicReduct();
protected:
bool Initialize(CString FileName);
bool reduct();
bool WriteFile(CString name);
private:
bool CreateDescMatrix(Contain& table); //创建可辨识矩阵
//从matrix中得到约简结果reducts
bool GetReductsFromMatrix(const Contain& matrix,Contain& reducts);
void ReductMatrix(Contain& matrix); //化简matrix(针对可辨识矩阵)
void RandomDelete(long num); //随机删除num个记录
private:
Result_Contain result;
//下面两个值在约简之前(使用他们之前)确定.
//其中 times_of_del 默认为40.
int num_of_del_every_time;
int times_of_del;
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_LIEDYNAMICREDUCT_H__CB883879_B28E_11D5_A0FF_0080C8E21834__INCLUDED_)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?