논리와 집합 - 조건제시법과 원소나열법 with Python

tmkor(55)
Published in
#kr
Words
127
Reading
1 min
Listen
Play
9y

안녕하세요 tmkor@tmkor입니다. 오늘은 조건제시법과 원소나열법에 대하여 간략히 살펴보려 합니다.

조건제시법과 원소나열법은 집합을 정의하는 2가지 방법입니다.

첫번째, 원소나열법(sets defined by a enumeration)으로 집합의 원소를 주르륵 나열하는 것 입니다.

set1 = {1,2,3,4,5} # 자연수 1부터 5까지 집합
set1 = range(1,6) # 자연수 1부터 <6 까지 집합
set2 = {'Alice', 'Bob', 'Charlie'} # 3개의 문자열 집합
set3 = {set1, set2} # 2개 집합의 집합

두번째, 조건제시법을 정의하기 전에 다음의 용어를 살펴봅시다.

  • 대상영역 : 명제함수의 정의역
  • 진리집합 : 참이 나오는 x의 집합

대상영역에서 진리집합을 특정 조건에 의하여 선택하는 방법이 조건제시법입니다. 여기서 조건은 참 혹은 거짓을 가지는 명제입니다. 다시 정의를 내리면

  • 조건제시법(sets defined by a predicate) : 집합 원소 generate 함수로 정의
    • { x ∈ U | p(x)} => 대상영역 U의 원소 중 p(x)의 값이 true인 원소의 집합

Python에서는 조건제시법으로 집합을 초기화 할 수 있습니다. 즉, 대상영역과 조건으로 복잡한 진리 집합을 쉽게 생성할 수 있습니다.

U = {1,2,3,4,5}
evenSet = {x for x in U if x % 2 == 0} # 짝수 집합 { x ∈U | isEven(x) }와 동일
oddSet = {x for x in U if x % 2 == 1} # 홀수 집합 { x ∈U | isOdd(x) }와 동일

다변수에 대한 조건제시법도 가능합니다.

U = {1,2,3,4,5}
V = {100,120,140,160,180}
UxV = {(u,v) for u in U for v in V} # 두 집합의 카르테시안 곱, { u ∈ U, v ∈ V | True(u) ∧ True(v) }와 동일
len(UxV) # 5*5 = 25

위 예제에서는 카르테시안 곱을 1줄의 코드로 표현함을 보실 수 있습니다. 꽤나 많은 경우 훌륭하게 동작하므로 한번 익혀두시면 꽤냐 요긴하게 사용하실 수 있습니다.

논리와 집합 - 조건제시법과 원소나열법 with Python | Ecency