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

📄 output.c

📁 用c语言编的基于粗糙集理论的属性约简程序
💻 C
📖 第 1 页 / 共 3 页
字号:
 }
 num_class=count;
}
void con_rule()
{
 int i,j,l,same;
 for(i=0;i<k;i++)
  {if(readwab(add(path,"validrow.wab"),(long int)(i))==1)
    {writewab(add(path,"consiste.wab"),(long int)(i),1);}
  }
 for(i=0;i<k;i++)
  if(readwab(add(path,"validrow.wab"),(long int)(i))==1)
  {
   same=0;
   for(j=0;j<k;j++)
    if(readwab(add(path,"validrow.wab"),(long int)(j))==1)
     {
      same=1;
      for(l=0;l<m;l++)
       {
	if(readwab(add(path,"list.wab"),(long int)(i*(m+n)+l))!=
	   readwab(add(path,"list.wab"),(long int)(j*(m+n)+l)))
	 {same=0;break;}
       }
      if(same==1)
       {
	if(readwab(add(path,"declink.wab"),(long int)(j))
           !=readwab(add(path,"declink.wab"),(long int)(i)))
	 {writewab(add(path,"consiste.wab"),(long int)(i),0);
	  writewab(add(path,"consiste.wab"),(long int)(j),0);}
       }
    }
  }
}
void con_core()
{
 int i,j,l,s,same,contin;
 for(i=0;i<m;i++)
  if(readwab(add(path,"validcol.wab"),(long int)(i))==1)
  {
   for(j=0;j<k-1;j++)
    if(readwab(add(path,"validrow.wab"),(long int)(j))==1)
    {
     if(readwab(add(path,"consiste.wab"),(long int)(j))==1)
      {
       contin=1;
       for(l=j+1;l<k;l++)
	if(readwab(add(path,"validrow.wab"),(long int)(l))==1)
	{
	 same=1;
	 for(s=0;s<m;s++)
	  if(readwab(add(path,"validcol.wab"),(long int)(s))==1)
	  {
	   if(s!=i)
	    if(readwab(add(path,"list.wab"),(long int)(j*(m+n)+s))!=
	       readwab(add(path,"list.wab"),(long int)(l*(m+n)+s)))
	     {same=0;break;}
	  }
	 if(same==1)
	  {
	  if(readwab(add(path,"declink.wab"),(long int)(j))!=
	     readwab(add(path,"declink.wab"),(long int)(l)))
	   {writewab(add(path,"core.wab"),(long int)(i),1);
	    num_core++;contin=0;break;}
	  }
	}
       if(contin==0)
	{break;}
      }
    }
  }
}
int check(int *checkflag)
{
 int i,j,l,same,answer=1;
 for(i=0;i<k;i++)
 if((readwab(add(path,"consiste.wab"),(long int)(i))==1)&&(answer==1))
 for(j=0;j<k;j++)
  {
   same=1;
   for(l=0;l<m;l++)
    {
     if(checkflag[l]==1)
      if(readwab(add(path,"list.wab"),(long int)(i*(m+n)+l))!=
	 readwab(add(path,"list.wab"),(long int)(j*(m+n)+l)))
       {same=0;break;}
    }
   if(same==1)
    if(readwab(add(path,"declink.wab"),(long int)(i))!=
       readwab(add(path,"declink.wab"),(long int)(j)))
     {answer=0;break;}
  }
 return answer;
}
#include "c:\source\theme\con_che.c"
con_redu()
{
 int i,j,l,sum,wf,wk,wl;
 int temp[condition]={0};
 int checkflag[condition]={0},checkresult;
 for(i=0;i<=m-num_core;i++)
 {
  sum=0;
  for(j=0;j<m;j++)
   {
    if(readwab(add(path,"core.wab"),(long int)(j))==0)
     {temp[sum]=j;sum++;}
   }
  if(i!=0)
   if(sum==0)
    {break;}
  for(j=0;j<sizeofresult;j++)
   {result[j]=0;}
  head=result;
  p=stack;
  for(j=0;j<sizeofstack;j++)
   {*p=0;}
  p=stack;
  s=0;
  z=0;
  function(1,i,sum);
  if(result[0]==0)
   {
    for(j=0;j<m;j++)
     {
      if(readwab(add(path,"core.wab"),(long int)(j))==1)
       {checkflag[j]=1;}
     }
    checkresult=check(checkflag);
    if(checkresult!=0)
     {
      for(j=0;j<m;j++)
       {writewab(add(path,"reduresu.wab"),(long int)
                  (num_reduct*m+j),checkflag[j]);}
      num_reduct++;
      break;
     }
   }
  else
   {
    l=0;
    while(result[l]!=0)
     {
      for(j=0;j<m;j++)
       {checkflag[j]=0;}
      for(j=0;j<m;j++)
       {
	if(readwab(add(path,"core.wab"),(long int)(j))==1)
	 {checkflag[j]=1;}
       }
      for(j=0;j<i;j++)
       {checkflag[temp[result[l]-1]]=1;l++;}
      for(j=0;j<m;j++)
       {
	if(readwab(add(path,"validcol.wab"),(long int)(j))!=1)
	 {checkflag[j]=0;}
       }
      wf=0;
      for(wl=0;wl<num_reduct;wl++)
       {
	wf=1;
	for(wk=0;wk<m;wk++)
	 {
	  if(readwab(add(path,"reduresu.wab"),(long int)(wl*m+wk))==1)
	   if(checkflag[wk]==0)
	    {wf=0;break;}
	 }
	if(wf==1)
	 {break;}
       }
      if(wf==1)
       {checkresult=0;}
      else
       {checkresult=check(checkflag);}
      if(checkresult!=0)
       {
	for(j=0;j<m;j++)
	 {
	  writewab(add(path,"reduresu.wab"),(long int)(num_reduct*m+j),
                     checkflag[j]);
	  if((checkflag[j]==1)&&(readwab(add(path,"core.wab"),
              (long int)(j))!=1))
	   {writewab(add(path,"core.wab"),(long int)(temp[result[l]-2]),0);}
	 }
        num_reduct++;
       }
     }
   }
 }
}
void re_dupl_row()
{
 int loop,i,j,l,same;
 for(loop=0;loop<kind;loop++)
 {
 if(num_reduct<loop+1){break;}
 for(i=0;i<k;i++)
  {writewab(add(path,"revalidr.wab"),(long int)(loop*k+i),1);}
 for(i=0;i<k;i++)
  {
   if(readwab(add(path,"revalidr.wab"),(long int)(loop*k+i))==1)
    {
     for(j=0;j<k;j++)
      if(i!=j)
      {
       same=1;
       for(l=0;l<m+n;l++)
       if((readwab(add(path,"reduresu.wab"),(long int)(loop*m+l))==1)
           ||(l>=m))
	{
	 if(readwab(add(path,"list.wab"),(long int)(i*(m+n)+l))!=
	    readwab(add(path,"list.wab"),(long int)(j*(m+n)+l)))
	  {same=0;break;}
	}
       if(same==1)
	{writewab(add(path,"revalidr.wab"),(long int)(loop*k+j),-1000-i);}
      }
    }
  }
 }
}
void value_core()
{
 int i,j,l,loop1,loop2,same;
 for(i=0;i<kind;i++)
  {
   if(num_reduct<i+1)
    {break;}
   for(j=0;j<k;j++)
    if((readwab(add(path,"revalidr.wab"),(long int)(i*m+j))==1)&&
       (readwab(add(path,"consiste.wab"),(long int)(j))==1))
    {
     for(l=0;l<m;l++)
      {
       if(readwab(add(path,"reduresu.wab"),(long int)(i*m+l))==1)
	{
	 writewab(add(path,"vc.wab"),(long int)(i*k*m+j*m+l),0);
	 for(loop1=0;loop1<k;loop1++)
	  {
	   if(loop1!=j)
	    {
	     same=1;
	     for(loop2=0;loop2<m;loop2++)
	      {
	       if(loop2!=l)
		if(readwab(add(path,"reduresu.wab"),
                   (long int)(i*m+loop2))==1)
		 {
		  if(readwab(add(path,"list.wab"),(long int)
                      (loop1*(m+n)+loop2))!=readwab(add(path,"list.wab"),
                      (long int)(j*(m+n)+loop2)))
		   {same=0;break;}
		 }
	      }
	     if(same==1)
	      {
	       if(readwab(add(path,"declink.wab"),(long int)(loop1))!=
		  readwab(add(path,"declink.wab"),(long int)(j)))
		{writewab(add(path,"vc.wab"),(long int)(i*k*m+j*m+l),1);
                 break;}
	      }
	    }
	  }
	}
      }
    }
  }
}
int consistencecheck(int x,int *checkflag)
{
 int i,j,same,answer=1;
 for(i=0;i<k;i++)
  {
   if(i!=x)
    {
     same=1;
     for(j=0;j<m;j++)
      {
       if(checkflag[j]==1)
	{
	 if(readwab(add(path,"list.wab"),(long int)(x*(m+n)+j))!=
	    readwab(add(path,"list.wab"),(long int)(i*(m+n)+j)))
	  {same=0;break;}
	}
      }
     if(same==1)
      {
       if(readwab(add(path,"declink.wab"),(long int)(x))!=
	  readwab(add(path,"declink.wab"),(long int)(i)))
	{answer=0;break;}
      }
    }
  }
 return answer;
}

#include "cons_che.c"
void value_reduct()
{
 int i,j,l,count1,consistence,count2,count3,count4,same,loop1,checkresult;
 int wl,wk,wf;
 int checkflag[condition];
 int temp[condition];
 for(loop1=0;loop1<num_reduct;loop1++)
  {
   for(i=0;i<k;i++)
    if((readwab(add(path,"revalidr.wab"),(long int)(loop1*k+i))==1)&&
       (readwab(add(path,"consiste.wab"),(long int)(i))==1))
    {
     count1=0;
     count2=0;
     num_valuereduct[loop1][i]=0;
     for(j=0;j<m;j++)
      {
       if(readwab(add(path,"vc.wab"),(long int)(loop1*k*m+i*m+j))==1)
	{count1++;}
       if(readwab(add(path,"reduresu.wab"),(long int)(loop1*m+j))==1)
	{count2++;}
      }
     if(count1!=0)
      {
       consistence=1;
       for(j=0;j<k;j++)
	if(readwab(add(path,"revalidr.wab"),(long int)(loop1*k+j))==1)
	{
	 if(i!=j)
	  {
	   same=1;
	   for(l=0;l<m;l++)
	    {
	     if(readwab(add(path,"vc.wab"),(long int)(loop1*k*m+i*m+l))==1)
	      {
	       if(readwab(add(path,"list.wab"),(long int)(i*(m+n)+l))!=
		  readwab(add(path,"list.wab"),(long int)(j*(m+n)+l)))
		{same=0;break;}
	      }
	    }
	   if(same==1)
	    {
	     if(readwab(add(path,"declink.wab"),(long int)(i))!=
		readwab(add(path,"declink.wab"),(long int)(j)))
	      {consistence=0;break;}
	    }
	  }
	}
       if(consistence!=0)
	{
	 for(l=0;l<m;l++)
	  {
	   writewab(add(path,"vr.wab"),(long int)
                   (loop1*k*kind*m+i*kind*m+num_valuereduct[loop1][i]*m+l),
		   readwab(add(path,"vc.wab"),(long int)(loop1*k*m+i*m+l)));}
         num_valuereduct[loop1][i]++;
	}
       else
	{
	 for(j=1;j<=count2-count1;j++)
	  {
           for(l=0;l<m;l++)
	    {temp[l]=0;}
	   count3=0;
	   for(l=0;l<m;l++)
	    {
	     if((readwab(add(path,"vc.wab"),(long int)(loop1*k*m+i*m+l))==0)
              &&(readwab(add(path,"reduresu.wab"),(long int)(loop1*m+l))==1))
	      {temp[count3]=l;count3++;}
	    }
	   if(count3==0)
	    {break;}
	   p=stack;
	   for(l=0;l<sizeofstack;l++)
	    {*p=0;p++;}
	   p=stack;
	   for(l=0;l<sizeofresult;l++)
	    {result[l]=0;}
	   head=result;
	   s=0;
	   z=0;
	   function(1,j,count3);
	   count4=0;
	   while(result[count4]!=0)
	    {
             for(l=0;l<m;l++)
	      {checkflag[l]=0;}
	     for(l=0;l<j;l++)
	      {checkflag[temp[result[count4]-1]]=1;count4++;}
	     for(l=0;l<m;l++)
	      {
	       if(readwab(add(path,"vc.wab"),(long int)(loop1*k*m+i*m+l))==1)
		{checkflag[l]=1;}
	      }
             wf=0;
	     for(wl=0;wl<num_valuereduct[loop1][i];wl++)
	      {
	       wf=1;
	       for(wk=0;wk<m;wk++)
		{
		 if(readwab(add(path,"vr.wab"),(long int)
		     (loop1*k*kind*m+i*kind*m+wl*m+wk))==1)
		  if(checkflag[wk]==0)
		    {wf=0;break;}
		}
	       if(wf==1)
		{break;}
	      }
	     if(wf==1)
	      {checkresult=0;}
	     else
	      {checkresult=consistencecheck(i,checkflag);}
	     if(checkresult==1)
	      {
	       for(l=0;l<m;l++)
		{
		 if(checkflag[l]==1)
		  {writewab(add(path,"vr.wab"),(long int)
		  (loop1*k*kind*m+i*kind*m+num_valuereduct[loop1][i]*m+l),1);
                  }
		}
	       num_valuereduct[loop1][i]++;
	      }
	    }
	  }
	}
      }
     if(count1==0)
      {
       for(j=1;j<=count2;j++)
	{
	 for(l=0;l<m;l++)
	  {temp[l]=0;}
	 count3=0;
	 for(l=0;l<m;l++)
	  {
	   if((readwab(add(path,"vc.wab"),(long int)(loop1*k*m+i*m+l))==0)
	     &&(readwab(add(path,"reduresu.wab"),(long int)(loop1*m+l))==1))
	    {temp[count3]=l;count3++;}
	  }
	 if(count3==0)
	  {break;}
	 p=stack;
	 for(l=0;l<sizeofstack;l++)
	  {*p=0;}
	 p=stack;
	 for(l=0;l<sizeofresult;l++)

⌨️ 快捷键说明

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