广工Anyview离散数学第七章

注:网络资源整理,并非本人代码,离散数学对初学者比较抽象,希望对你有所帮助。请注意对应题目,每年题目可能有小变动。

目录

试设计一算法,对某集合A上的一个二元关系R,判断R是否为等价关系

试设计一算法,对某集合A上的一个二元关系R,求商集A/R

试设计一算法,求某集合A上的模n同余关系

试设计一算法,对某集合A上的一个二元关系R,判断R是否为偏序关系


试设计一算法,对某集合A上的一个二元关系R,判断R是否为等价关系

boolean isEquivalentRelation(pOriginalSet pA, pCartersianSet pBinaryRelationR)

{

    pCartersianSet pC=createNullCartersianSet();

    pC=copyCartersianSet(pBinaryRelationR);

    for(resetOriginalSet(pA);!isEndOfOriginalSet(pA); nextOriginalSetPos(pA))       

            if(!isInCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA))))

                return false;       

    for(resetCartersianSet(pC);!isEndOfCartersianSet(pC);nextCartersianSetPos(pC))       

            for(resetCartersianSet(pBinaryRelationR);!isEndOfCartersianSet(pBinaryRelationR);nextCartersianSetPos(pBinaryRelationR))                

                   if(!isInCartersianSet(pC,createOrderedCouple(getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pC)),getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pBinaryRelationR)))))

                        return false;                           

    if(isEndOfOriginalSet(pC))

        return true;

}

试设计一算法,对某集合A上的一个二元关系R,求商集A/R

pCompoundSet QuotientSet(pOriginalSet pSetA, pCartersianSet pBinaryRelationR)

{

    pOriginalSet pM=createNullCompoundSet();

    if(isNullCartersianSet(pBinaryRelationR))

        return pM;

    for(resetOriginalSet(pSetA);!isEndOfOriginalSet(pSetA);nextOriginalSetPos(pSetA))

        {

            pOriginalSet  pB=createNullOriginalSet();

            for(resetCartersianSet(pBinaryRelationR);!isEndOfCartersianSet(pBinaryRelationR);nextCartersianSetPos(pBinaryRelationR) )        

                if(isEqualOriginalSetElem(getCurrentOriginalSetElem(pSetA),getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pBinaryRelationR))))

                    elemInsertToOriginalSet(pB,getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pBinaryRelationR)));            

            originalSetInsertToCompoundSet(pM,pB);

        }

     return pM;

}

试设计一算法,求某集合A上的模n同余关系

pCartersianSet CongruenceRelation(pOriginalSet pSet, int n)

{

    int i,j;

    pOriginalSet pA=createNullOriginalSet();

    pA=copyOriginalSet(pSet);

    pCartersianSet pC=createNullCartersianSet();

    for(resetOriginalSet(pA);!isEndOfOriginalSet(pA); nextOriginalSetPos(pA))

        { 

            for(resetOriginalSet(pSet);!isEndOfOriginalSet(pSet); nextOriginalSetPos(pSet))

                {

                    i=originalSetElemToInt(getCurrentOriginalSetElem(pA));

                    j=originalSetElemToInt(getCurrentOriginalSetElem(pSet));

                    if((i-j)%n==0)

                    OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pSet)));

                }

        }

  return pC;

}

试设计一算法,对某集合A上的一个二元关系R,判断R是否为偏序关系

boolean isPartialOrderRelation(pOriginalSet pA, pCartersianSet pBinaryRelationR)

{

    pCartersianSet pC=createNullCartersianSet();

    pC=copyCartersianSet(pBinaryRelationR);

    for(resetOriginalSet(pA);!isEndOfOriginalSet(pA); nextOriginalSetPos(pA))//判断是否具有自反性   

        if(!isInCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA))))

            return false;     

    for(resetCartersianSet(pC);!isEndOfCartersianSet(pC);nextCartersianSetPos(pC))//判断是否具有传递性          

        for(resetCartersianSet(pBinaryRelationR);!isEndOfCartersianSet(pBinaryRelationR);nextCartersianSetPos(pBinaryRelationR))               

            if(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pC))==getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pBinaryRelationR)))                  

                if(!isInCartersianSet(pC,createOrderedCouple(getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pC)),getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pBinaryRelationR)))))

                    return false;                                 

    for(resetCartersianSet(pC);!isEndOfCartersianSet(pC);nextCartersianSetPos(pC))//判断是否具有反对称性

        if(getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pC))!=getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pC)))

            if(isInCartersianSet(pC,createOrderedCouple(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pC)),getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pC)))))

                return false;//如果有一组对应的有也在集合pC里面,则不具有反对称性

    return true;

}

你可能感兴趣的:(离散数学,算法,广东工业大学,离散数学,学习)