Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- as3.0
- flash
- flash player 10
- as3
- MMOKit
- Chart
- 집합의 연산
- 수학정석
- scaleform4
- 스케일폼
- addChild
- Document Class
- scaleform3
- 클릭
- DataBinding
- 형변환
- scaleform
- flash cs3
- CLIK
- as2
- autodesk
- 샌프란시스코
- 태그클라우드
- watch
- GDC
- 강좌
- KGC 2013
- 플래시
- ApplicationDomain
- 애드온
Archives
- Today
- Total
scaleform.minarto.com
3. 집합의 연산 본문
① 합집합
두개의 집합을 모두 포함한 집합
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;
}
}
}
{
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