粗糙集的属性约简

粗糙集的属性约简规则如下,数据如下所示:

a1 b1 c1 d1
a1 b2 c1 d2
a2 b3 c2 d3
a1 b2 c3 d3
a1 b1 c3 d3
a1 b3 c1 d3
a1 b4 c1 d1

最基本的:即,第一列属性去掉后,随后余下的属性进行查询时,相同的条件属性的决策属性没有冲突,则说明去掉第一列并没有不一致的数据产生,则说明第一列可去掉,如此循环,直到所有的决策属性都被判断完毕

说是很简单,但是实现起来细节问题很多,思路如下:

从第一个属性开始循环,直至最后一个条件属性,用余下的条件属性进行查询,分如下情况:

if(在DB中无相同的条件属性) 则说明根本不可能产生不一致数据的机会,此属性可去掉

if(有相同的条件属性)则找出相应的决策属性,判断是否相等{

    if(决策属性相等) 则说明相同的条件属性并没有产生不同的决策属性,可去掉

    if(决策属性不相等) 则说明相同的条件属性产生了不同的决策,不可去掉(此属性起关键作用)

}

问题:

判断一个Vector中的重复元素,并计算重复次数,并判断重复次数是否过半数以上,如下方法:

 public boolean getSymbol(Vector<String> decisionProperty) {
  boolean isFlag = false;
  int length = decisionProperty.size();
  Vector<String> distinctDecProperty = new Vector<String>();
  Vector<Boolean> flag = new Vector<Boolean>();
  int i = 0;
  while (i < length) {
   flag.add(true);
   i++;
  }
  for (int j = 0; j < length; j++) {
   i = j + 1;
   int n = 1;
   while (i < length) {
    if (flag.get(i) == true) {
     if (decisionProperty.get(j).equals(decisionProperty.get(i))) {
      flag.set(i, false);
      n++;
     } else {
      i++;
     }
    } else {
     i++;
    }
   }
   if (flag.get(j) == true) {
    distinctDecProperty.add(decisionProperty.get(j));
   }
   if (n >= length / 2) {
    isFlag = true;
   }
  }
  if (distinctDecProperty.size() == decisionProperty.size()){
   isFlag = false;
  }
  System.out.println(distinctDecProperty + "  " + decisionProperty);
  return isFlag;
 }

以上代码为实现此功能的原程序,并不单单仅实现了此功能

需要注意的是,多设置了一个VECTOR型flag,用来标志重复的元素,若为flase,则说明已经和之前比较过的数据重复了,可不用比较。这样,用空间来换取了一定的时间复杂度。

还有distinctDecProperty是最后的没有重复的元素的VECTOR,注意语句的位置

今天的时间,一些花在resultset的结果如何判断为空上,还有是VECTOR的去重,属性约简思路的整理,和程序细节上,感觉仅仅写算法比用程序真正实现容易多了,:(

有的时候做多了,自己的脑子就浆糊了,抱怨下,:(

可能还有没有想到的,想起了再补充


 

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值