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
- autodesk
- watch
- GDC
- Chart
- Document Class
- 스케일폼
- addChild
- as3.0
- scaleform
- ApplicationDomain
- as3
- 샌프란시스코
- CLIK
- scaleform4
- flash cs3
- 클릭
- flash
- 애드온
- KGC 2013
- DataBinding
- 형변환
- flash player 10
- MMOKit
- 플래시
- as2
- 집합의 연산
- scaleform3
- 강좌
- 태그클라우드
- 수학정석
Archives
- Today
- Total
scaleform.minarto.com
2. 집합의 포함관계 본문
① 부분집합
1번 강좌에서 원소가 집합에 포함되었는지를 다음과 같이 표현한다고 했다
n ∈ array, n ∉ array
n ∈ array 이면 n ∉ array2 일때 array 를 array2 의 부분집합 이라 한다.
집합 array 원소가 집합 array2 에도 포함되어 있다는 것을 표현하는 것이다.
array ⊂ array2, array2 ⊃ array
상등 (array2 는 array 를 포함하고 array 는 array2 를 포함한다) 은 다음과 같이 표현한다.
array ⊂ array2 이고 array ⊃ array2 면 array = array2
② 진부분집합
array ⊂ array2 이고 array ≠ array2
③ 유한집합
array = {-2, 1, 2, 3} 와 같이 원소갯수가 유한한 집합
var array:Vector = new Vector.<Number>();
array[0] = -2;
array[1] = 1;
array[2] = 2;
array[3] = 3;
array[0] = -2;
array[1] = 1;
array[2] = 2;
array[3] = 3;
④ 무한집합
array = {n | n은 정수} 와 같이 원소갯수가 무한한 집합
var array:Vector = new Vector.<Number>();
var n:Number = - Infinity;
var count = Infinity;
while(n < count)
{
array.push(int(n));
n ++;
}
var n:Number = - Infinity;
var count = Infinity;
while(n < count)
{
array.push(int(n));
n ++;
}
단, 위의 코드는 실제 실행시키면 무한루프에 빠져 플래시가 다운될 것이다. 원리만 설명하는 것이니 우를 범하지 말자
⑤ 공집합array = {}, ∅ 원소가 하나도 없는 집합
var array:Vector.<Number> = new Vector.<Number>();
or
array.length = 0;
or
var array:Vector.<Number> = new Vector.<Number>(0, true);
or
array.length = 0;
or
var array:Vector.<Number> = new Vector.<Number>(0, true);
위의 의미들을 이용하여 다음과 같은 클래스가 만들어졌다
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)); }
}
}
{
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)); }
}
}