• 大小: 17KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: C/C++
  • 标签: C++  算法  粗糙集  

资源简介

C++语言编写的关于属性重要度的算法实现,对粗糙集初学者来说主要很好的指导价值

资源截图

代码片段和文件信息

#include“DecisionTable.h“

//决策表DT=(U CUD V f)类实现------------------------------------------------
int DecisionTable::iNo = 0;

DecisionTable::DecisionTable()
{
this->SerialNumberOfElement = 0;
}

vector DecisionTable::SetToiVector(Set &s)
{
 vector temp;
 for(int i=0; i  {
temp.push_back(s.KeyAt(i));
 }
 return temp;
}

DecisionTable::DecisionTable(std::vector &ConditionSet  //条件属性集,如{abc}
 std::vector &DecisionSet  //决策属性集,如{def}
 std::vector  &ConditionValueSet  //由各样本的条件属性值(看成本文的集合)构成的向量
 std::vector  &DecisionValueSet) //由各样本的决策属性值(看成本文的集合)构成的向量
{
 this->SerialNumberOfElement = 0;
 this->ConditionSet = ConditionSet;
 this->DecisionSet = DecisionSet;
 if(ConditionValueSet.size() != DecisionValueSet.size())
 {
cout<<“条件值集样本数与决策值集样本数不同!“<  }
 else
 {
  vector::iterator it1 = ConditionValueSet.begin();
  vector::iterator it2 = DecisionValueSet.begin();
  Element temp;

  for( ; it1   {
   temp.SetCondition((*it1).ToIntVector());
   temp.SetDecision((*it2).ToIntVector());
   SerialNumberOfElement++;
   temp.SetU(SerialNumberOfElement);
   DT.push_back(temp);
  }
 }
 iNo++;
}

DecisionTable::DecisionTable(std::vector   &ConditionSet  //条件属性集,如{abc}
 std::vector   &DecisionSet  //决策属性集,如{def}
 std::vector> &ConditionValueSet //由各样本的条件属性值(看成本文的集合)构成的向量
 std::vector> &DecisionValueSet) //由各样本的决策属性值(看成本文的集合)构成的向量
{
 this->SerialNumberOfElement = 0;
 this->ConditionSet = ConditionSet;
 this->DecisionSet = DecisionSet;
 if(ConditionValueSet.size() != DecisionValueSet.size())
 {
cout<<“条件值集样本数与决策值集样本数不同!“<  }
 else
 {
  vector>::iterator it1 = ConditionValueSet.begin();
  vector>::iterator it2 = DecisionValueSet.begin();
  Element temp;

  for( ; it1   {
   temp.SetCondition(*it1);
   temp.SetDecision(*it2);
   SerialNumberOfElement++;
   temp.SetU(SerialNumberOfElement);
   DT.push_back(temp);
  }
 }
 iNo++;
}

const DecisionTable& DecisionTable::operator=(DecisionTable &DT)
{
 if(this != &DT)
 {
  this->ConditionSet = DT.GetConditionSet();
  this->DecisionSet = DT.GetDecisionSet();
  this->DT = DT.GetDT();
 }
 return *this;
}

DecisionTable::DecisionTable(const char* FileName)
{
 this->SerialNumberOfElement = 0;
 string str;
 ifstream in(FileName);
 
 if(! in)
 {
  cerr<<“不能打开“<   exit(-1);
 }
 while(getline(in str))
 {
  istringstream line(str);
  line>>str;
  if(str == “@ConditionAttribute“)
  {
   char ch;
   line>>ch;
   ConditionSet.push_back(ch);
  }
  if(str == “@DecisionAt

评论

共有 条评论