3. 집합의 연산

ActionScript 3 2009. 5. 22. 14:01 |




① 합집합

두개의 집합을 모두 포함한 집합

array ∪ array2 = {o | o ∈ array or o ∈ array2}




② 교집합

두개의 집합에서 같이 포함한 원소만을 모아놓은 집합

array ∩ array2 = {o | o ∈ array and o ∈ array2}




③ 전체집합

모든 집합이 부분집합인 집합

U



④ 여집합

집합 array 에는 속하지만 전체집합 U 에는 속하지 않는 집합을 array 의 여집합이라고 한다

arrayc= {o | o ∈ U and o ∉ array}


      
⑤ 차집합

집합 A 와 B 가 있을 때 A 에서 B 와의 교집합을 뺀 집합

array - array2 = {o | o ∈ array and o ∉ array2}



기존 클래스에 위의 연산메소드를 포함시켰다

package com.minarto.math
{
    public class MathSet
    {
        /**
         * 배열의 중복 원소를 제거
         */
        public static function convertMathSet(a:Array):Array
        {
            if(!a)    return    null;
           
            var mathSet:Array = [];
            var cnt:uint = a.length;
            var i:uint;
            while(i < cnt)
            {
                var n:Number = a[i];
                if(a.indexOf(n, i + 1) == - 1)    mathSet.push(n);
                i++;
            }
           
            return    mathSet;
        }       
       
       
        /**
         * 부분집합
         * a 가 b 의 부분집합인지 판단
         */
        public static function isSubSet(a:Array, b:Array):Boolean
        {
            var same:Boolean = true;
              
            var cnt:uint = a.length;
            var i:uint;
            while(i < cnt)
            {
                var n:Number = a[i];
                if(b.indexOf(n) == - 1)
                {
                    same = false;
                    break;
                }
                i++;
            }
              
            return same;
        }
       
       
        /**
         * 상등
         * 두 집합이 같은지를 판단
         */
        public static function isEqualsSet(a:Array, b:Array):Boolean    {    return    isSubSet(a, b) && isSubSet(b, a);    }
       
       
        /**
         * 진부분집합
         */
        public static function isProperSubSet(a:Array, b:Array):Boolean    {    return    isSubSet(a, b) && !isEqualsSet(a, b);    }
       
       
        /**
         * 합집합
         */
        public static function sumOfSets(a:Array, b:Array):Array    {    return    convertMathSet(a.concat(b));    }
       
       
        /**
         * 여집합
         * @param a:Array - 여집합을 구할 집합
         * @param u:Array - 전체집합
         */
        public static function complementaryMathSet(a:Array, u:Array):Array
        {
            var mathSet:Array = [];
            var cnt:uint = u.length;
            var i:uint;
            while(i < cnt)
            {
                var n:Number = u[i];
                if(a.indexOf(n) == - 1)    mathSet.push(n);
                i++;
            }
           
            return    mathSet;
        }
       
       
        /**
         * 차집합
         * a - b
         * @param a:Array - 차집합을 구할 집합
         * @param b:Array - 뺄 집합
         */
        public static function differenceMathSet(a:Array, b:Array):Array
        {
            var mathSet:Array = [];
            var cnt:uint = a.length;
            var i:uint;
            while(i < cnt)
            {
                var n:Number = a[i];
                if(b.indexOf(n) == - 1)    mathSet.push(n);
                i++;
            }
           
            return    mathSet;
        }
    }
}


⑥ 집합의 연산법칙

다음은 정석 책에 있는 연산법칙을 그대로 옮긴 것이다. 이것은 위의 클래스를 활용하여 직접 확인해 보는 수밖에 없다

교환법칙 : A∪B = B∪A, A∩B = B∩A
결합법칙 : (A∪B)∪C = A∪(B∪C), (A∩B)∩C = A∩(B∩C)
분배법칙 : A∪(B∩C) = (A∪B)∩(A∪C), A∩(B∪C) = (A∩B)∪(A∩C)
흡수법칙 : A∪(A∩B) = A, A∩(A∪B) = A
드모르간의 법칙 : (A∪B)c = Ac∩Bc,  (A∩B)c = Ac∪Bc

'ActionScript 3' 카테고리의 다른 글

수학(상) 1. 집합의 연산  (0) 2009.05.27
4. 유한집합의 원소의 개수  (0) 2009.05.26
3. 집합의 연산  (0) 2009.05.22
2. 집합의 포함관계  (0) 2009.05.22
1. 집합의 뜻과 표시법  (1) 2009.05.20
DisplayObjectContainer.getRect(displayObject) 버그  (0) 2009.05.06
Posted by 미나토

댓글을 달아 주세요