2014年广工离散数学Anyview参考答案

上传人:小** 文档编号:159213255 上传时间:2022-10-08 格式:DOC 页数:40 大小:360.50KB
收藏 版权申诉 举报 下载
2014年广工离散数学Anyview参考答案_第1页
第1页 / 共40页
2014年广工离散数学Anyview参考答案_第2页
第2页 / 共40页
2014年广工离散数学Anyview参考答案_第3页
第3页 / 共40页
资源描述:

《2014年广工离散数学Anyview参考答案》由会员分享,可在线阅读,更多相关《2014年广工离散数学Anyview参考答案(40页珍藏版)》请在装配图网上搜索。

1、广东工业大学离散数学Anyview习题答案更新于2014年12月作者Seasand20141.00试设计一算法,判断元素与集合之间的关系。实现下列函数:/*/pSetSetUnion(pSetpA,pSetpB)/Addyourcodehere*判断元素与集合之间的关系。元素和集合之间的关系只有两种。* paramelem:元素* parampA:集合* return:如果elem丘pA,则返回TRUE,否则返回FALSE*/BooleanIsInSet(SetElemelem,pSetpA)/Addyourcodehere/1.00BooleanIsInSet(SetElemelem,pSe

2、tpA)/AddyourcodehereSetElemreturn:将pA和pB进行并运算后得到的集合a=outToBuffer(pA);for(;*a!=n;a+)if(elem=*a)returntrue;returnfalse;1.01试设计一算法,实现集合的并运算。实现下列函数:/*进行两个集合的并运算*parampA:要进行并运算的集合*parampB:要进行并运算的集合/1.01pSetSetUnion(pSetpA,pSetpB)SetElem*a=outToBuffer(pA);SetElem*b=outToBuffer(pB);pSetpC=createNullSet();i

3、nti=0;for(;*b!=n;b+)directInsertSetElem(pC,*b);for(a=outToBuffer(pA);*a!=n;a+)if(isInSet(pB,*a)!=true)directInsertSetElem(pC,*a);returnpC;1.02试设计一算法,实现集合的交运算。实现下列函数:/* 进行两个集合的交运算* parampA:要进行交运算的集合* parampB:要进行交运算的集合* return:将pA和pB进行交运算后得到的集合*/pSetSetIntersection(pSetpA,pSetpB)/Addyourcodehere/1.02p

4、SetSetIntersection(pSetpA,pSetpB)SetElem*a=outToBuffer(pA);SetElem*b=outToBuffer(pB);pSetpC=createNullSet();for(;*b!=n;b+)if(isInSet(pA,*b)=true)directInsertSetElem(pC,*b);returnpC;1.03试设计一算法,实现集合的差运算。实现下列函数:/* 进行两个集合的差运算* parampA:要进行差运算的集合,相当于A-B中的A* parampB:要进行差运算的集合,相当于A-B中的B* return:将pA和pB进行差运算后

5、得到的集合*/pSetSetSubtraction(pSetpA,pSetpB)/Addyourcodehere/1.03pSetSetSubtraction(pSetpA,pSetpB)SetElem*a=outToBuffer(pA);SetElem*b=outToBuffer(pB);pSetpC=createNullSet();for(;*a!=n;a+)if(isInSet(pB,*a)=true)continue;directInsertSetElem(pC,*a);returnpC;1.04试设计一算法,实现集合的求补集运算。实现下列函数:/*进行集合的求补集运算。*paramp

6、A:要进行求补集运算的集合*parampI:全集*return:返回pA相对于pI的补集。注意:有可能存在pA不是PI的子集的情况*在这种情况下pA的补集不存在,应当返回NULL*/pSetSetComplement(pSetpA,pSetpI)/Addyourcodehere/1.04pSetSetComplement(pSetpA,pSetpI)SetElem*a=outToBuffer(pA);SetElem*i=outToBuffer(pI);pSetpC=createNullSet();intb=0,k=0;for(;*i!=n;i+)if(isInSet(pA,*i)=true)b

7、+;continue;directInsertSetElem(pC,*i);for(;*a!=n;a+)if(isInSet(pI,*a)=true)continue;k+;directInsertSetElem(pC,*i);if(b=0&isNullSet(pA)!=true)|(b!=0&k!=0)returnNULL;if(isNullSet(pA)=true&isNullSet(pI)!=true)returnpI;elsereturnpC;1.05试设计一算法,实现集合的对称差运算。实现下列函数:/*进行集合的对称差运算。*parampA:需要进行对称差运算的集合*parampB:

8、需要进行对称差运算的集合*return:返回pA与pB进行对称差运算后得到的集合。*/pSetSetSysmmetricDifference(pSetpA,pSetpB)/Addyourcodehere/1.05pSetSetSysmmetricDifference(pSetpA,pSetpB)/AddyourcodeherepSetpS;pS=createNullSet();SetElem*pAElems;SetElem*pBElems;pAElems=outToBuffer(pA);pBElems=outToBuffer(pB);while(*pAElems!=n)if(!isInSet(

9、pB,*pAElems)directInsertSetElem(pS,*pAElems);pAElems+;while(*pBElems!=n)if(!isInSet(pA,*pBElems)directInsertSetElem(pS,*pBElems);pBElems+;returnpS;1.06试设计一算法,判断两个集合之间的包含关系。实现下列函数:/*判断两个集合之间的包含关系。规定集合之间的包含关系为*真包含,被真包含于,相等。*parampA:需要进行包含关系判断的集合*parampB:需要进行包含关系判断的集合*return:如果pA真包含pB,返回REALINCLUDING;*

10、/如果pA被真包含于pB,返回REALINCLUDED;如果pA等于pB,返回EQUAL;对于其它情况,返回NOT_INCLUSIVE。SetRelationshipStatusSetRelationship(pSetpA,pSetpB)/Addyourcodehere/1.06SetRelationshipStatusSetRelationship(pSetpA,pSetpB)/AddyourcodeherepSetpS;pS=createNullSet();SetElem*pAElems;SetElem*pBElems;pAElems=outToBuffer(pA);pBElems=out

11、ToBuffer(pB);pS=pB;if(isNullSet(pA)&!isNullSet(pB)if(!isNullSet(pA)&isNullSet(pB)if(isNullSet(pA)&isNullSet(pB)if(!isNullSet(pA)&!isNullSet(pB)while(*pAElems!=n)if(isInSet(pS,*pAElems)elsewhile(*pBElems!=n)if(isInSet(pA,*pBElems)elseif(*pBElems=n)if(*pAElems=n)while(*pBElems!=n)pBElems+;returnREALIN

12、CLUDED;returnREALINCLUDING;returnEQUAL;pAElems+;pBElems+;returnNOT_INCLUSIVE;returnREALINCLUDING;if(isInSet(pA,*pBElems)elsereturnREALINCLUDED;if(*pBElems=n)returnEQUAL;1.07试设计一个非递归算法,实现集合的求幂集运算。实现下列函数:/* 求一个集合的幂集。* parampA:需要进行幂集的集合*return:返回pA的幂集*/pSetFamilyPowerSet(pSetpA)/Addyourcodehere/1.07pSe

13、tmiji(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(

14、pSetpA)/Addyourcodehereinti;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)!=NU

15、LL;i+)insertToFamilyOfSet(pF,miji(pK,*(pS+i);pBElems+;returnpF;1.08试设计一个递归算法,实现集合的求幂集运算。实现下列函数:/* 求一个集合的幂集。* parampA:需要进行幂集的集合*return:返回pA的幂集*/pFamilyOfSetPowerSet(pSetpA)/Addyourcodehere/1.08pSetmiji(pSetpB,pSetpC)SetElem*pBElems;SetElem*pCElems;pSetpS;pS=createNullSet();pBElems=outToBuffer(pB);pCE

16、lems=outToBuffer(pC);while(*pBElems!=n)directInsertSetElem(pS,*pBElems);pBElems+;while(*pCElems!=n)if(!isInSet(pB,*pCElems)directInsertSetElem(pS,*pCElems);+pCElems;returnpS;pFamilyOfSetPowerSet(pSetpA)/Addyourcodehereinti;pSetpI=createNullSet();pFamilyOfSetpF=createNullFamilyOfSet();SetElem*pBElems

17、=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;3.01试设计一个非递归算法,验证一个表达式是不是命题公式(statementfor

18、mula)。实现下列函数:/*判断一个表达式是不是命题公式。*parampFormula:要进行判断的表达式。该表达式的最后一个元素为“#”,而且规定#仅用于指示该表达式的结尾,并不属于表达式的一部分。*return:如果pFormula是命题公式,返回TRUE;否则返回FALSE。*/BooleanIsStatementFormula(pStatementFormulapFormula)/AddyourcodehereBooleanIsStatementFormula(pStatementFormulapFormula)/AddyourcodehereStatementFormulaSymb

19、lespreS,currS,nextS;intleftNum=0,rightNum=0;preS=getCurrentSymbleType(pFormula);switch(preS)caseException:returnfalse;caseConjunction:caseDisjunction:caseImplication:caseEquivalence:caseLeftParenthesis:leftNum+;break;caseRightParenthesis:caseEndOfFormula:returntrue;nextPos(pFormula);currS=getCurrent

20、SymbleType(pFormula);switch(currS)caseLeftParenthesis:leftNum+;break;caseRightParenthesis:rightNum+;break;casePropositionalVariable:if(preS=PropositionalVariable)returnfalse;while(nextS!=EndOfFormula)nextPos(pFormula);nextS=getCurrentSymbleType(pFormula);if(nextS=LeftParenthesis)leftNum+;if(nextS=Ri

21、ghtParenthesis)rightNum+;if(preS=Exception|currS=Exception|nextS=Exception)returnfalse;if(currS=PropositionalVariable)if(nextS=PropositionalVariable|preS=PropositionalVariable)returnfalse;if(currS=Conjunction|currS=Disjunction|currS=Implication|currS=Equivalence)if(preS!=PropositionalVariable&preS!=

22、RightParenthesis)|(nextS!=PropositionalVariable&nextS!=LeftParenthesis&nextS!=Negation)returnfalse;if(nextS=Negation)if(currS=PropositionalVariable|currS=RightParenthesis)returnfalse;preS=currS;currS=nextS;if(leftNum!=rightNum)returnfalse;returntrue;3.02试设计一个递归算法,验证一个表达式是不是命题公式(statementformula)。实现下

23、列函数:/*判断一个表达式是不是命题公式。*parampFormula:要进行判断的表达式。该表达式的最后一个元素为“#”,而且规定#仅用于指示该表达式的结尾,并不属于表达式的一部分。*return:如果pFormula是命题公式,返回TRUE;否则返回FALSE。*/BooleanIsStatementFormula(pStatementFormulapFormula)/AddyourcodehereBooleanFunction(intleftNum,intrightNum,StatementFormulaSymblespreS,StatementFormulaSymblescurrS,S

24、tatementFormulaSymblesnextS,pStatementFormulapFormula)nextPos(pFormula);/解释同上题所示nextS=getCurrentSymbleType(pFormula);if(nextS=LeftParenthesis)leftNum+;if(nextS=RightParenthesis)rightNum+;if(preS=Exception|currS=Exception|nextS=Exception)returnfalse;if(currS=PropositionalVariable)if(nextS=Proposition

25、alVariable|preS=PropositionalVariable)returnfalse;if(currS=Conjunction|currS=Disjunction|currS=Implication|currS=Equivalence)if(preS!=PropositionalVariable&preS!=RightParenthesis)|(nextS!=PropositionalVariable&nextS!=LeftParenthesis&nextS!=Negation)returnfalse;if(nextS=Negation)if(currS=Propositiona

26、lVariable|currS=RightParenthesis)returnfalse;preS=currS;currS=nextS;if(nextS!=EndOfFormula)returnFunction(leftNum,rightNum,preS,currS,nextS,pFormula);if(leftNum!=rightNum)returnfalse;returntrue;BooleanIsStatementFormula(pStatementFormulapFormula)/AddyourcodehereStatementFormulaSymblespreS,currS,next

27、S;/intleftNum=0,rightNum=0;preS=getCurrentSymbleType(pFormula);switch(preS)caseException:returnfalse;/若取得了公式外的字符,则不是合法的命题公式Conjunction:returnfalse;caseDisjunction:returnfalse;caseImplication:returnfalse;caseEquivalence:returnfalse;caseLeftParenthesis:leftNum+;break;/若为左括号,则leftNum的值自增一RightParenthes

28、is:returnfalse;caseEndOfFormula:returntrue;/若命题公式只有结束符号#则为合法的命题公式nextPos(pFormula);/指示器指向下一个字符currS=getCurrentSymbleType(pFormula);switch(currS)caseLeftParenthesis:leftNum+;break;/若为左括号,则leftNum的值自增一RightParenthesis:rightNum+;break;若为有括号,贝VRightNum的值自增一casecasecasecasePropositionalVariable:if(preS=P

29、ropositionalVariable)/当currS为命题变元时,若preS也为命题变元returnfalse;returnFunction(leftNum,rightNum,preS,currS,nextS,pFormula);/返回值的真假,同时调用函数Function6.01试设计一算法,实现集合的卡氏积运算。实现下列函数:/* 进行两个集合的卡氏积运算* parampA:要进行卡氏积运算的集合* parampB:要进行卡氏积运算的集合* return:将pA和pB进行卡氏积运算后得到的集合*/pCartersianSetCartesianProduct(pOriginalSetpA

30、,pOriginalSetpB)/AddyourcodehereCH06EX01pCartersianSetCartesianProduct(pOriginalSetpA,pOriginalSetpB)pOriginalSetElempX=NULL;pOriginalSetElempY=NULL;pOrderedCouplepOrder=NULL;pCartersianSetpCarter=createNullCartersianSet();/创建空的卡氏积集合if(!isNullOriginalSet(pA)&!isNullOriginalSet(pB)/判断集合是否为空resetOrigi

31、nalSet(pA);/使A集合指针指向第一个元素while(!isEndOfOriginalSet(pA)pX=getCurrentOriginalSetElem(pA);/取得A集合当前指针指向的元素resetOriginalSet(pB);/使B集合指针指向第一个元素while(!isEndOfOriginalSet(pB)pY=getCurrentOriginalSetElem(pB);/取得B集合当前指针指向的元素pOrder=createOrderedCouple(pX,pY);/构造序偶对OrderedCoupleInsertToCartersianSet(pCarter,pOr

32、der);/将序偶插入到卡氏积集合nextOriginalSetPos(pB);/指针后移nextOriginalSetPos(pA);/指针后移returnpCarter;6.02试设计一算法,给定集合A、集合B和集合C,判断集合C是否为A到B的一个二元关系。实现下列函数:/*给定集合A、集合B和集合C,判断集合C是否为A到B的一个二元关系。* parampA:集合A* parampB:集合B* parampC:集合C* return:如果集合C是A到B的一个二元关系,则返回true,否则返回false。*/booleanisBinaryRelation(pOriginalSetpA,pOr

33、iginalSetpB,pCartersianSetpC)/AddyourcodehereCH06EX02booleanisBinaryRelation(pOriginalSetpA,pOriginalSetpB,pCartersianSetpC)pOriginalSetElempX=NULL;pOriginalSetElempY=NULL;pOrderedCouplepZ=NULL;pOrderedCouplepOrder=NULL;pCartersianSetpCarter=createNullCartersianSet();/创建空的卡氏积集合booleanb=true;if(!isNu

34、llOriginalSet(pA)&!isNullOriginalSet(pB)/判断集合是否为空resetOriginalSet(pA);使A集合指针指向第一个元素while(!isEndOfOriginalSet(pA)pX=getCurrentOriginalSetElem(pA);/取得A集合当前指针指向的元素resetOriginalSet(pB);/使B集合指针指向第一个元素while(!isEndOfOriginalSet(pB)pY=getCurrentOriginalSetElem(pB);/取得B集合当前指针指向的元素pOrder=createOrderedCouple(p

35、X,pY);/构造序偶对OrderedCoupleInsertToCartersianSet(pCarter,pOrder);/将序偶插入到卡氏积集合nextOriginalSetPos(pB);/指针后移nextOriginalSetPos(pA);/指针后移resetCartersianSet(pC);/使C集合指针指向第一个元素while(!isNullCartersianSet(pC)&!isEndOfCartersianSet(pC)pZ=getCurrentCartersianSetElem(pC);/取得C集合当前指针指向的元素b=isInCartersianSet(pCarte

36、r,pZ);/判断序偶是否在pCArter集合中if(b=false)break;nextCartersianSetPos(pC);/指针后移returnb;6.03试设计一算法,求集合A上的恒等关系。实现下列函数:/*给定集合A,求集合A上的恒等关系。* parampSet:原始集合* return:集合A上的恒等关系。*/pCartersianSetIdentityRelation(pOriginalSetpSet)/AddyourcodehereCH06EX03pCartersianSetIdentityRelation(pOriginalSetpSet)pOriginalSetElem

37、pX=NULL;pOrderedCouplepOrder=NULL;pCartersianSetpCarter=createNullCartersianSet();/创建空的卡氏积集合if(!isNullOriginalSet(pSet)/判断集合是否为空resetOriginalSet(pSet);/使集合指针指向第一个元素while(!isEndOfOriginalSet(pSet)pX=getCurrentOriginalSetElem(pSet);/取得集合当前指针指向的元素pOrder=createOrderedCouple(pX,pX);/构造序偶对OrderedCoupleIns

38、ertToCartersianSet(pCarter,pOrder);/将序偶插入到卡氏积集合nextOriginalSetPos(pSet);/指针后移returnpCarter;6.04试设计一算法,求两个卡氏积集合的复合运算。实现下列函数:/* 给定两个集合,求该两个集合的复合运算。* parampA:卡氏积集合* parampB:卡氏积集合* return:pA与pB的复合运算结果。*/pCartersianSetCompositeOperation(pCartersianSetpA,pCartersianSetpB)/AddyourcodehereCH06EX04pCartersia

39、nSetCompositeOperation(pCartersianSetpA,pCartersianSetpB)pOriginalSetElempX;pOriginalSetElempY;pOriginalSetElempXX;pOriginalSetElempYY;pOrderedCouplepOrderA=NULL;pOrderedCouplepOrderB=NULL;pOrderedCouplepOrder=NULL;pCartersianSetpCarter=createNullCartersianSet();/创建空的卡氏积集合if(!isNullCartersianSet(pA)

40、&!isNullCartersianSet(pB)resetCartersianSet(pA);/使A集合指针指向第一个元素while(!isEndOfCartersianSet(pA)pOrderA=getCurrentCartersianSetElem(pA);/取得A集合当前指针指向的元素resetCartersianSet(pB);/使B集合指针指向第一个元素while(!isEndOfCartersianSet(pB)pOrderB=getCurrentCartersianSetElem(pB);/取得B集合当前指针指向的元素pX=getFirstElemOfOrderedCoupl

41、e(pOrderA);/取得A序偶的第一元pY=getSecondElemOfOrderedCouple(pOrderA);/取得A序偶的第二元pXX=getFirstElemOfOrderedCouple(pOrderB);/取得B序偶的第一元pYY=getSecondElemOfOrderedCouple(pOrderB);/取得B序偶的第二元if(pY=pXX)pOrder=createOrderedCouple(pX,pYY);/构造序偶对OrderedCoupleInsertToCartersianSet(pCarter,pOrder);/将序偶插入到卡氏积集合nextCarters

42、ianSetPos(pB);/指针后移nextCartersianSetPos(pA);/指针后移returnpCarter;6.05试设计一算法,求一个关系的逆运算。实现下列函数/*求一个关系的逆运算。*parampA:卡氏积集合*return:pA的逆运算结果。*/pCartersianSetInverseOperation(pCartersianSetpA)/AddyourcodehereCH06EX05pCartersianSetInverseOperation(pCartersianSetpA)pOriginalSetElempX;pOriginalSetElempY;pOrdere

43、dCouplepOrderA=NULL;pOrderedCouplepOrder=NULL;pCartersianSetpCarter=createNullCartersianSet();/创建空的卡氏积集合if(!isNullCartersianSet(pA)resetCartersianSet(pA);/使A集合指针指向第一个元素while(!isEndOfCartersianSet(pA)pOrderA=getCurrentCartersianSetElem(pA);/取得A集合当前指针指向的元素pX=getFirstElemOfOrderedCouple(pOrderA);/取得A序偶

44、的第一元pY=getSecondElemOfOrderedCouple(pOrderA);/取得A序偶的第二元pOrder=createOrderedCouple(pY,pX);/构造序偶对OrderedCoupleInsertToCartersianSet(pCarter,pOrder);/将序偶插入到卡氏积集合nextCartersianSetPos(pA);/指针后移returnpCarter;6.06试设计一算法,对某集合A上的一个二元关系,求该关系的幕运算。实现下列函数:*求一个关系的幂运算。*parampA:原始集合*parampBinaryRelationR:pA上的关系R*pa

45、ramn:幂运算的次数,且n=0*return:pBinaryRelationSet的n次幂运算结果。*/pCartersianSetPowOperation(pOriginalSetpA,pCartersianSetpBinaryRelationR,intn)/AddyourcodehereCH06EX06pCartersianSetCompositeOperation(pCartersianSetpA,pCartersianSetpB)pCartersianSetpC=createNullCartersianSet();for(resetCartersianSet(pA);!isEndOf

46、CartersianSet(pA);nextCartersianSetPos(pA)for(resetCartersianSet(pB);!isEndOfCartersianSet(pB);nextCartersianSetPos(pB)if(isEqualOriginalSetElem(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pA),getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pB)/获取A卡氏积中序偶的第二元/获取第二元OrderedCoupleIn

47、sertToCartersianSet(pC,createOrderedCouple(getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pA),getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pB);returnpC;pCartersianSetPowOperation(pOriginalSetpA,pCartersianSetpBinaryRelationR,intn)pCartersianSetpC=createNullCartersianSet();pC=cop

48、yCartersianSet(pBinaryRelationR);if(n=0)for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA)for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA)OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA);

49、returnpC;if(n=1)returnpBinaryRelationR;for(inti=1;in;i+)pC=CompositeOperation(pC,pBinaryRelationR);returnpC;6.07试设计一算法,对某集合A上的一个二元关系R,判断R是否具有自反性。实现下列函数:/* 判断一个关系是否具有自反性。* parampA:原始集合* parampBinaryRelationR:卡氏积集合,该集合是一个pA上的二元关系* return:如果pBinaryRelationSet具有自反性;则返回true,否则返回false。*/booleanIsReflexivi

50、ty(pOriginalSetpA,pCartersianSetpBinaryRelationR)/AddyourcodehereCH06EX07booleanIsReflexivity(pOriginalSetpA,pCartersianSetpBinaryRelationR)pOriginalSetElempX=NULL;pOrderedCouplepOrder=NULL;booleanb=false;if(!isNullOriginalSet(pA)/判断集合是否为空resetOriginalSet(pA);/使集合指针指向第一个元素while(!isEndOfOriginalSet(p

51、A)pX=getCurrentOriginalSetElem(pA);/取得集合当前指针指向的元素pOrder=createOrderedCouple(pX,pX);/构造序偶对b=isInCartersianSet(pBinaryRelationR,pOrder);if(b=false)break;nextOriginalSetPos(pA);/指针后移elsereturntrue;returnb;6.08试设计一算法,对某集合A上的一个二元关系R,判断R是否具有反自反性。实现下列函数:/* 判断一个关系是否具有反自反性。* parampA:原始集合* parampBinaryRelatio

52、nR:卡氏积集合,该集合是一个pA上的二元关系* return:如果pBinaryRelationSet具有反自反性;则返回true,否则返回false。*/booleanIsAntiReflexivity(pOriginalSetpA,pCartersianSetpBinaryRelationR)/AddyourcodehereCH06EX08booleanIsAntiReflexivity(pOriginalSetpA,pCartersianSetpBinaryRelationR)pOriginalSetElempX=NULL;pOrderedCouplepOrder=NULL;boole

53、anb=true;if(!isNullOriginalSet(pA)/判断集合是否为空resetOriginalSet(pA);/使集合指针指向第一个元素while(!isEndOfOriginalSet(pA)pX=getCurrentOriginalSetElem(pA);/取得集合当前指针指向的元素pOrder=createOrderedCouple(pX,pX);/构造序偶对b=isInCartersianSet(pBinaryRelationR,pOrder);if(b=true)break;nextOriginalSetPos(pA);/指针后移elsereturntrue;ret

54、urn!b;6.09试设计一算法,对某集合A上的一个二元关系R,判断R是否具有自反性或者反自反性。在实际运算中,A无需给出。实现下列函数:/* 判断一个关系是否具有自反性或者反自反性。对一个关系R是否具有自反性或者反自反性* 有四种可能:是自反的;是反自反的;既是自反的也是反自反的、既不是自反的也不是反自反的。* parampA:原始集合* parampBinaryRelationR:卡氏积集合,该集合是一个pA上的二元关系如果pBinaryRelationSet具有自反性,则返回REFLEXIVITY;如果pBinaryRelationSet具有反自反性,则返回ANTI_REFLEXIVIT

55、Y;如果pBinaryRelationSet既具有自反性,也具有反自反性,则返回* return:返回一个Reflexivity_Type枚举类型值。*REFLEXIVITY_AND_ANTI_REFLEXIVITY;如果pBinaryRelationSet既不具有自反性,也不具有反自反性,则返回NOT_REFLEXIVITY_AND_NOT_ANTI_REFLEXIVITY;*/Reflexivity_TypeDetermineReflexivity0609(pOriginalSetpA,pCartersianSetpBinaryRelationR)/AddyourcodehereCH06E

56、X09Reflexivity_TypeDetermineReflexivity(pOriginalSetpA,pCartersianSetpBinaryRelationR)pOriginalSetElempX=NULL;pOrderedCouplepOrder=NULL;booleanb;inti=0,j=0;if(!isNullOriginalSet(pA)/判断集合是否为空resetOriginalSet(pA);/使集合指针指向第一个元素while(!isEndOfOriginalSet(pA)i+;pX=getCurrentOriginalSetElem(pA);/取得集合当前指针指向

57、的元素pOrder=createOrderedCouple(pX,pX);/构造序偶对b=isInCartersianSet(pBinaryRelationR,pOrder);if(b=true)j+;nextOriginalSetPos(pA);/指针后移elsereturnREFLEXIVITY_AND_ANTI_REFLEXIVITY;if(i=j)returnREFLEXIVITY;elseif(j=0)returnANTI_REFLEXIVITY;elsereturnNOT_REFLEXIVITY_AND_NOT_ANTI_REFLEXIVITY;returnREFLEXIVITY_

58、AND_ANTI_REFLEXIVITY;6.10试设计一算法,对某集合A上的一个二元关系R,判断R是否具有对称性或者反对称性。实现下列函数:/* 判断一个关系是否具有对称性或者反对称性。对一个关系R是否具有对称性或者反对称性,* 有四种可能:是对称的;是反对称的;既是对称的也是反对称的;既不是对称的也不是*反对称的。*parampBinaryRelationR:卡氏积集合,该集合是一个pA上的二元关系*return:返回一个Symmetry_Type枚举类型值。*如果pBinaryRelationSet具有对称性,则返回SYMMETRY;*如果pBinaryRelationSet具有反对称性,则返回ANTI_SYMMETRY;*如果pBinaryRelationSet既具有对称性,也具有对称性,则返回*SYMMETRY_AND_ANTI_SYMMETRY;*如果pBinaryRelationSet既不具有对称性,也不具有反对称性,则返回*NOT_SYMMETRY_AND_NOT_ANTI_S

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!