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

📄 rcc8op.c

📁 利用空间表示的rcc8模型进行空间推理
💻 C
字号:
/***************************************************************************//***                                                                     ***//***                    rcc8op.c (Version 1.0)                           ***//***                                                                     ***//***       Ronny Fehling, Bernhard Nebel, Jochen Renz  - March 1998      ***//***                                                                     ***//***         fehling, nebel, renz@informatik.uni-freiburg.de             ***//***                                                                     ***//***          http://www.informatik.uni-freiburg.de/~sppraum             ***//***                                                                     ***//***                      Institut fuer Informatik                       ***//***                     Albert-Ludwigs-Universitaet                     ***//***                           Am Flughafen 17                           ***//***                       79110 Freiburg, Germany                       ***//***                                                                     ***//***************************************************************************/#include "rcc8.h"#include "rcc8op.h"#include <stdio.h>#include <stdlib.h>RELTYPE fcomp[MAXSET][MAXSET];RELTYPE invtab[MAXSET];/* Value table */int vtab[MAXSET]={0, 6, 7, 10, 11, 14, 14, 15, 6, 12, 12, 14, 14, 15, 15, 16, 4, 12, 12, 14, 14, 16, 15, 16, 9, 14, 14, 14, 15, 16, 16, 16, 3, 14, 14, 15, 13, 15, 14, 16, 14, 16, 15, 16, 14, 16, 15, 16, 14, 16, 15, 16, 15, 16, 16, 16, 15, 16, 16, 16, 16, 16, 16, 16, 2, 14, 14, 15, 14, 16, 15, 16, 14, 16, 15, 16, 15, 16, 15, 16, 14, 16, 16, 16, 15, 16, 16, 16, 15, 16, 16, 16, 16, 16, 16, 16, 5, 15, 14, 16, 14, 16, 15, 16, 15, 16, 15, 16, 15, 16, 16, 16, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 11, 11, 13, 13, 15, 14, 16, 8, 14, 13, 14, 14, 16, 15, 16, 9, 14, 14, 14, 15, 16, 16, 16, 10, 14, 14, 15, 16, 16, 16, 16, 5, 15, 14, 16, 14, 16, 15, 16, 14, 16, 15, 16, 15, 16, 15, 16, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 5, 15, 14, 16, 14, 16, 15, 16, 15, 16, 15, 16, 15, 16, 16, 16, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 6, 16, 15, 16, 14, 16, 15, 16, 15, 16, 16, 16, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 };/* Compute the inverse of a relation */RELTYPE inverse(RELTYPE r){  return(((r&DC) ? DC : 0) |	 ((r&EC) ? EC : 0) |	 ((r&PO) ? PO : 0) |	 ((r&TPP)  ? TPPI : 0) |	 ((r&NTPP) ? NTPPI  : 0) |	 ((r&TPPI)  ? TPP : 0) |	 ((r&NTPPI) ? NTPP  : 0) |	 ((r&EQ) ? EQ  : 0));}/* Compute the relation value */int relvalue(RELTYPE r){  register int bytecnt;  register int tempval;  bytecnt = 0;  tempval = 0;  if (r & DC) {     bytecnt++;    tempval += 6;  }  if (r & EC) {    bytecnt++;    tempval += 3;  }  if (r & PO) {    bytecnt++;    tempval += 5;  }  if (r & TPP) {    bytecnt++;    tempval += 4;  }  if (r & NTPP) {    bytecnt++;    tempval += 2;  }  if (r & TPPI) {    bytecnt++;    tempval += 4;  }  if (r & NTPPI) {    bytecnt++;    tempval += 2;  }  if (r & EQ) {    bytecnt++;    tempval += 1;  }  return(tempval);}/*    Computation of the complete composition table of all possible disjunctions   of the base relations.   Table is stored in fcomp.*/void compute_comp_tab(RELTYPE fcomp[MAXSET][MAXSET]){  register RELTYPE hibit=2,i,j;    for(j=3;j<MAXSET;j++)    if (j % hibit)      for(i=1;i<MAXSET;i*=2)	fcomp[i][j] = (fcomp[i][hibit])|(fcomp[i][j^hibit]);    else      hibit*=2;    hibit=2;  for(i=3;i<MAXSET;i++)    if (i % hibit)      for(j=1;j<MAXSET;j++)	fcomp[i][j] = (fcomp[hibit][j])|(fcomp[i^hibit][j]);    else      hibit*=2;  }void initfop(){    void compute_comp_tab(RELTYPE fcomp[MAXSET][MAXSET]);    register RELTYPE r1;    /* Basic composition table */  /*DC*/     fcomp[DC][DC] = DALL;  fcomp[DC][EC] = (DC|EC|PO|TPP|NTPP);     fcomp[DC][PO] = (DC|EC|PO|TPP|NTPP);  fcomp[DC][TPP] = (DC|EC|PO|TPP|NTPP);  fcomp[DC][NTPP] = (DC|EC|PO|TPP|NTPP);  fcomp[DC][TPPI] = DC;  fcomp[DC][NTPPI] = DC;  fcomp[DC][EQ] = DC;    /*EC*/    fcomp[EC][DC] = (DC|EC|PO|TPPI|NTPPI);  fcomp[EC][EC] = (DC|EC|PO|TPP|TPPI|EQ);  fcomp[EC][PO] = (DC|EC|PO|TPP|NTPP);  fcomp[EC][TPP] = (EC|PO|TPP|NTPP);  fcomp[EC][NTPP] = (PO|TPP|NTPP);  fcomp[EC][TPPI] = (DC|EC);  fcomp[EC][NTPPI] = DC;  fcomp[EC][EQ] = EC;  /*PO*/  fcomp[PO][DC] = (DC|EC|PO|TPPI|NTPPI);   fcomp[PO][EC] = (DC|EC|PO|TPPI|NTPPI);  fcomp[PO][PO] = DALL;  fcomp[PO][TPP] = (PO|TPP|NTPP);  fcomp[PO][NTPP] = (PO|TPP|NTPP);  fcomp[PO][TPPI] = (DC|EC|PO|TPPI|NTPPI);  fcomp[PO][NTPPI] = (DC|EC|PO|TPPI|NTPPI);  fcomp[PO][EQ] = PO;    /*TPP*/  fcomp[TPP][DC] = DC;  fcomp[TPP][EC] = (DC|EC);  fcomp[TPP][PO] = (DC|EC|PO|TPP|NTPP);  fcomp[TPP][TPP] = (TPP|NTPP);    fcomp[TPP][NTPP] = NTPP;    fcomp[TPP][TPPI] = (DC|EC|PO|TPP|TPPI|EQ);  fcomp[TPP][NTPPI] = (DC|EC|PO|TPPI|NTPPI);  fcomp[TPP][EQ] = TPP;    /*NTPP*/  fcomp[NTPP][DC] = DC;  fcomp[NTPP][EC] = DC;  fcomp[NTPP][PO] = (DC|EC|PO|TPP|NTPP);  fcomp[NTPP][TPP] = NTPP;  fcomp[NTPP][NTPP] = NTPP;  fcomp[NTPP][TPPI] = (DC|EC|PO|TPP|NTPP);  fcomp[NTPP][NTPPI] = DALL;  fcomp[NTPP][EQ] = NTPP;    /*TPPI*/  fcomp[TPPI][DC] = (DC|EC|PO|TPPI|NTPPI);  fcomp[TPPI][EC] = (EC|PO|TPPI|NTPPI);  fcomp[TPPI][PO] = (PO|TPPI|NTPPI);  fcomp[TPPI][TPP] = (PO|TPP|TPPI|EQ);  fcomp[TPPI][NTPP] = (PO|TPP|NTPP);  fcomp[TPPI][TPPI] = (TPPI|NTPPI);  fcomp[TPPI][NTPPI] = NTPPI;  fcomp[TPPI][EQ] = TPPI;    /*NTPPI*/  fcomp[NTPPI][DC] = (DC|EC|PO|TPPI|NTPPI);  fcomp[NTPPI][EC] = (PO|TPPI|NTPPI);     fcomp[NTPPI][PO] = (PO|TPPI|NTPPI);  fcomp[NTPPI][TPP] = (PO|TPPI|NTPPI);  fcomp[NTPPI][NTPP] = (PO|TPP|TPPI|NTPP|NTPPI|EQ);  fcomp[NTPPI][TPPI] = NTPPI;  fcomp[NTPPI][NTPPI] = NTPPI;  fcomp[NTPPI][EQ] = NTPPI;  /*EQ*/  fcomp[EQ][DC] = DC;  fcomp[EQ][EC] = EC;  fcomp[EQ][PO] = PO;  fcomp[EQ][TPP] = TPP;  fcomp[EQ][NTPP] = NTPP;  fcomp[EQ][TPPI] = TPPI;     fcomp[EQ][NTPPI] = NTPPI;  fcomp[EQ][EQ] = EQ;    compute_comp_tab(fcomp);  for (r1=0;r1 < MAXSET; r1++) {    invtab[r1] = inverse(r1);  }}

⌨️ 快捷键说明

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