广工离散anyview上机.docx
- 文档编号:8263119
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:25
- 大小:19.68KB
广工离散anyview上机.docx
《广工离散anyview上机.docx》由会员分享,可在线阅读,更多相关《广工离散anyview上机.docx(25页珍藏版)》请在冰豆网上搜索。
广工离散anyview上机
1、判断元素与集和的关系
BooleanIsInSet(SetElemelem,pSetpA){
//Addyourcodehere
SetElem*pAElems;
pAElems=outToBuffer(pA);
while(*pAElems!
='\n')
{if(elem==*pAElems)
returntrue;
else
pAElems++;
}
returnfalse;
}
2、集和的并运算
pSetSetUnion(pSetpA,pSetpB){
pSetpS;
pS=createNullSet();
SetElem*pBElems;
SetElem*pAElems;
pBElems=outToBuffer(pB);
pAElems=outToBuffer(pA);
while(*pAElems!
='\n')
{directInsertSetElem(pS,*pAElems);
pAElems++;
}
while(*pBElems!
='\n')
{if(!
isInSet(pA,*pBElems))
{
directInsertSetElem(pS,*pBElems);
}
++pBElems;
}
returnpS;
}
3、集和的交集
pSetSetIntersection(pSetpA,pSetpB){
pSetpS;
pS=createNullSet();
SetElem*pBElems;
pBElems=outToBuffer(pB);
while(*pBElems!
='\n')
{if(isInSet(pA,*pBElems))
{
directInsertSetElem(pS,*pBElems);
}
++pBElems;
}
returnpS;
}
4、集和的差运算
pSetSetSubtraction(pSetpA,pSetpB){
pSetpS;
pS=createNullSet();
SetElem*pAElems;
pAElems=outToBuffer(pA);
while(*pAElems!
='\n')
{
if(!
isInSet(pB,*pAElems))
{
directInsertSetElem(pS,*pAElems);
}
pAElems++;
}
returnpS;
}
6、集和的对称差运算
pSetSetSysmmetricDifference(pSetpA,pSetpB){
//Addyourcodehere
pSetpS;
pS=createNullSet();
SetElem*pAElems;
SetElem*pBElems;
pAElems=outToBuffer(pA);
pBElems=outToBuffer(pB);
while(*pAElems!
='\n')
{
if(!
isInSet(pB,*pAElems))
{
directInsertSetElem(pS,*pAElems);
}
pAElems++;
}
while(*pBElems!
='\n')
{
if(!
isInSet(pA,*pBElems))
{
directInsertSetElem(pS,*pBElems);
}
pBElems++;
}
returnpS;
}
7、两个集和的包含关系
SetRelationshipStatusSetRelationship(pSetpA,pSetpB){
//Addyourcodehere
pSetpS;
pS=createNullSet();
SetElem*pAElems;
SetElem*pBElems;
pAElems=outToBuffer(pA);
pBElems=outToBuffer(pB);
pS=pB;
if(isNullSet(pA)&&!
isNullSet(pB))
returnREALINCLUDED;
if(!
isNullSet(pA)&&isNullSet(pB))
returnREALINCLUDING;
if(isNullSet(pA)&&isNullSet(pB))
returnEQUAL;
if(!
isNullSet(pA)&&!
isNullSet(pB))
{while(*pAElems!
='\n')
{
if(isInSet(pS,*pAElems))
pAElems++;
else
{
while(*pBElems!
='\n')
{
if(isInSet(pA,*pBElems))
pBElems++;
else
returnNOT_INCLUSIVE;
if(*pBElems=='\n')
returnREALINCLUDING;
}
}
}
if(*pAElems=='\n')
{while(*pBElems!
='\n')
if(isInSet(pA,*pBElems))
pBElems++;
else
returnREALINCLUDED;
if(*pBElems=='\n')
returnEQUAL;
}
}
}
8、求集和的幂集
pSetmiji(pSetpB,pSetpC)
{
SetElem*pBElems;
SetElem*pCElems;
pSetpS;
pS=createNullSet();
pBElems=outToBuffer(pB);
pCElems=outToBuffer(pC);
while(*pBElems!
='\n')
{directInsertSetElem(pS,*pBElems);
pBElems++;
}
while(*pCElems!
='\n')
{if(!
isInSet(pB,*pCElems))
{
directInsertSetElem(pS,*pCElems);
}
++pCElems;
}
returnpS;
}
pFamilyOfSetPowerSet(pSetpA){
//Addyourcodehere
inti;
pSetpI=createNullSet();
pFamilyOfSetpF=createNullFamilyOfSet();
SetElem*pBElems=outToBuffer(pA);
insertToFamilyOfSet(pF,pI);
if(isNullSet(pA)==FALSE)
while(*pBElems!
='\n')
{
pSetpK=createNullSet();
directInsertSetElem(pK,*pBElems);
pSet*pS=outFamilyOfSetToBuffer(pF);
for(i=0;*(pS+i)!
=NULL;i++)
insertToFamilyOfSet(pF,miji(pK,*(pS+i)));
pBElems++;
}
returnpF;
}
递归法求幂集
void myFunction(long k, SetElem *pAElems,pFamilyOfSet pFamSetA,pSet pB)
{
SetElem *a=pAElems;
long i=k;
pB=createNullSet();
while(*a!
='\n')
{
if(i%2==1) //表示二进制最后一位是1
directInsertSetElem(pB,*a);
a++;
i>>=1;
}
insertToFamilyOfSet(pFamSetA,pB); //把集和加入到集族
k--;
if(k>=0) //2~n-1个子集
myFunction(k,pAElems,pFamSetA,pB);
}
pFamilyOfSet PowerSet(pSet pA)
{
//Add your code here
pFamilyOfSet pFamSetA=createNullFamilyOfSet();
long i,k=1;
//设置循环变量
SetElem *pAElems=outToBuffer(pA);
pSet pB=createNullSet();
for(i=0;*(pAElems+i)!
='\n';)
i++;
k<<=i ;
myFunction(k,pAElems,pFamSetA,pB);
return pFamSetA;
}
卡氏积运算
pCartersianSetCartesianProduct(pOriginalSetpA,pOriginalSetpB)
{
pCartersianSetpC=createNullCartersianSet();
for(resetOriginalSet(pA);!
isEndOfOriginalSet(pA);nextOriginalSetPos(pA))
{
for(resetOriginalSet(pB);!
isEndOfOriginalSet(pB);nextOriginalSetPos(pB))
OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pB)));
}
returnpC;
}
集和A到B的二元关系
booleanisBinaryRelation(pOriginalSetpA,pOriginalSetpB,pCartersianSetpC)
{
pCartersianSetpD=createNullCartersianSet();
for(resetOriginalSet(pA);!
isEndOfOriginalSet(pA);nextOriginalSetPos(pA))
{
for(resetOriginalSet(pB);!
isEndOfOriginalSet(pB);nextOriginalSetPos(pB))
OrderedCoupleInsertToCartersianSet(pD,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pB)));
}
for(getCurrentCartersianSetElem(pC);!
isEndOfCartersianSet(pC);nextCartersianSetPos(pC))
{
while(!
isEndOfCartersianSet(pD))
{if(getCurrentCartersianSetElem(pD)==getCurrentCartersianSetElem(pC))
nextCartersianSetPos(pD);
else
returnfalse;
}
}
if(isEndOfCartersianSet(pC))
returntrue;
}
集和A的恒等关系
pCartersianSetIdentityRelation(pOriginalSetpSet)
{
pCartersianSetpC=createNullCartersianSet();
for(resetOriginalSet(pSet);!
isEndOfOriginalSet(pSet);nextOriginalSetPos(pSet))
{
OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pSet),getCurrentOriginalSetElem(pSet)));
}
returnpC;
}
两个卡氏积的复合运算
pCartersianSetCompositeOperation(pCartersianSetpA,pCartersianSetpB)
{
pCartersianSetpC=createNullCartersianSet();
for(resetCartersianSet(pA);!
isEndOfCartersianSet(pA);nextCartersianSetPos(pA))
{for(resetCartersianSet(pB);!
isEndOfCartersianSet(pB);nextCartersianSetPos(pB))
{
if(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pA))==getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pB)));
OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pA)),getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pB))));
}
}
returnpC;
}
求一个关系的逆运算
pCartersianSetInverseOperation(pCartersianSetpA)
{
pCartersianSetpC=createNullCartersianSet();
for(resetCartersianSet(pA);!
isEndOfCartersianSet(pA);nextCartersianSetPos(pA))
{
OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pA)),getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pA))));
}
returnpC;
}
求集和A二元关系上的逆运算
pCartersianSetPowOperation(pCartersianSetpA,
pCartersianSetpBinaryRelationR,
intn)
{
pCartersianSetpC=createNullCartersianSet();
pC=copyCartersianSet(pBinaryRelationR);
if(n==0)
{for(resetOriginalSet(pA);!
isEndOfOriginalSet(pA);nextOriginalSetPos(pA))
{
OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA)));
}
}
if(n==1)
returnpC;
pCartersianSetpD=createNullCartersianSet();
inti;
for(i=2;i<=n;i++)
{pD=copyCartersianSet(pC);
pC=compositeOperation(pD,pBinaryRelationR);
}
returnpC;
}
判断集和A上二元关系的自反性
booleanIsReflexivity(pOriginalSetpA,pCartersianSetpBinaryRelationR)
{
pCartersianSetpC=createNullCartersianSet();
pC=copyCartersianSet(pBinaryRelationR);
if(isNullOriginalSet(pA))
returntrue;
else
{for(resetOriginalSet(pA);!
isEndOfOriginalSet(pA);)
{if(isInCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA))))
nextOriginalSetPos(pA);
else
break;}
}
if(isEndOfOriginalSet(pA))
returntrue;
else
returnfalse;
}
判断集和A上二元关系的反自反性
booleanIsAntiReflexivity(pOriginalSetpA,pCartersianSetpBinaryRelationR)
{
pCartersianSetpC=createNullCartersianSet();
pC=copyCartersianSet(pBinaryRelationR);
if(isNullOriginalSet(pA))
returntrue;
else
{for(resetOriginalSet(pA);!
isEndOfOriginalSet(pA);)
{if(!
isInCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA))))
nextOriginalSetPos(pA);
else
break;}
}
if(isEndOfOriginalSet(pA))
returntrue;
else
returnfalse;
}
判断集和A上二元关系的反自反性或自反性
Reflexivity_TypeDetermineReflexivity(pOriginalSetpA,
pCartersianSetpBinaryRelationR)
{
pCartersianSetpC=createNullCartersianSet();
pC=copyCartersianSet(pBinaryRelationR);
if(isNullOriginalSet(pA))
returnREFLEXIVITY_AND_ANTI_REFLEXIVITY;
else
{for(resetOriginalSet(pA);!
isEndOfOriginalSet(pA);)
{if(isInCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA))))
nextOriginalSetPos(pA);
else
break;}
}
if(isEndOfOriginalSet(pA))
returnREFLEXIVITY;
else
{
for(resetOriginalSet(pA);!
isEndOfOriginalSet(pA);)
{
if(!
isInCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA))))
nextOriginalSetPos(pA);
else
break;}
}
if(isEndOfOriginalSet(pA))
returnANTI_REFLEXIVITY;
else
returnNOT_REFLEXIVITY_AND_NOT_ANTI_REFLEXIVITY;
}
判断集和A上二元关系的对称性或反对称性
Symmetry_TypeDetermineSymmetry(pCartersianSetpBinaryRelationR)
{
pCartersianSetpC=createNullCartersianSet();
pC=copyCartersianSet(pBinaryRelationR);
for(resetCartersianSet(pC);!
isEndOfCartersianSet(pC);)
{
if(getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pC))!
=getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pC)))
{
if(isInCartersianSet(pC,createOrderedCouple(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pC)),getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pC)))))
nextCartersianSetPos(pC);
else
returnANTI_SYMMETRY;
if(isEndOfOriginalSet(pC))
returnSYMMETRY;
}
else
nextCartersianSetPos(pC);
}
if(isEndOfOriginalSet(pC))
returnSYMMETRY_AND_ANTI_SYMMETRY;
else
returnNOT_SYMMETRY_AND_NOT_ANTI_SYMMETR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 离散 anyview 上机