본문으로 건너뛰기
김신건의 로그

집합, 관계, 함수 (Sets, Relations, Functions)

· 수정 · 📖 약 2분 · 867자/단어 #discrete-math #sets #relations #functions
Sets Relations Functions, 집합, 관계, 함수, 동치 관계, 부분 순서, 전단사

정의

  • 집합 (set): 서로 다른 원소들의 모음
  • 관계 (relation): 두 집합 사이의 원소들의 대응 규칙
  • 함수 (function): 정의역의 각 원소를 치역의 유일한 원소로 대응시키는 관계

이 세 개념은 이산수학과 컴퓨터 과학의 근본. 자료구조, 데이터베이스, 타입 시스템, 함수형 프로그래밍의 이론적 배경.

집합 (Sets)

표기

나열: ,

조건 제시: = 양의 정수

중요한 집합:

  • : 자연수 (또는 )
  • : 정수
  • : 유리수
  • : 실수
  • : 복소수
  • 또는 : 공집합

기본 연산

주어진 에 대해:

연산정의
합집합 또는 의 원소
교집합 그리고 의 원소
차집합 이고 가 아닌 원소
대칭차 또는 이지만 둘 다는 아닌 원소
여집합 전체집합 에서 아닌 원소
부분집합 의 모든 원소가
진부분집합 부분집합이면서 같지 않음
곱집합 순서쌍
멱집합 의 모든 부분집합

시각화: 벤 다이어그램

flowchart LR
  subgraph "합집합 A ∪ B"
    A1(("A")):::a
    B1(("B")):::b
  end

  subgraph "교집합 A ∩ B"
    A2(("A")):::a
    B2(("B")):::b
    I2["교집합"]:::i
  end

  classDef a fill:#fee2e2
  classDef b fill:#dbeafe
  classDef i fill:#a7f3d0

집합의 크기 (기수)

  • 유한 집합: = 원소 개수. .
  • 무한 집합: 셀 수 있는 무한 (예: , ) 과 셀 수 없는 무한 (예: ) 이 있음.

집합의 크기 공식

  • (부분집합의 수)

포함배제 원리로 3개 이상으로 확장. 조합론 참조.

집합 항등식 (드모르간 등)

법칙등식
결합
교환
분배
드모르간
흡수

명제 논리와 완전히 대응 (isomorphic to Boolean algebra).

관계 (Relations)

정의

이항 관계 (binary relation) 의 부분집합. 즉 순서쌍 들의 모임.

표기: 또는 .

:

  • = 정수의 “미만” 관계
  • = 부모-자식 관계

관계의 성질

위의 관계 에 대해:

성질정의
반사 (reflexive)모든 에 대해
대칭 (symmetric)
반대칭 (antisymmetric)
추이 (transitive)

동치 관계

반사 + 대칭 + 추이 를 모두 만족하는 관계. 집합을 동치 클래스 로 나눔.

:

  • “같다” ()
  • 정수 mod :
  • 그래프의 “연결됨” 관계

부분 순서 (Partial Order)

반사 + 반대칭 + 추이 를 만족.

:

  • (정수, 실수)
  • (집합)
  • 정수의 나눗셈 관계
  • 그래프의 위상 정렬

Hasse Diagram

부분 순서를 시각화:

flowchart TD
  E["12"]
  D["6"]
  C["4"]
  B["3"]
  A["2"]
  Z["1"]
  E --- D
  E --- C
  D --- B
  D --- A
  C --- A
  B --- Z
  A --- Z

정수 12 의 약수 집합 의 나눗셈 관계.

함수 (Functions)

정의

함수 의 각 원소를 유일한 원소에 대응시키는 관계.

  • : 정의역 (domain)
  • : 공역 (codomain)
  • : 치역 (range) (공역의 부분집합)

함수의 종류

단사 (injective, one-to-one): . 서로 다른 입력은 서로 다른 출력.

전사 (surjective, onto): 모든 에 대해 존재. 치역 = 공역.

전단사 (bijective): 단사 + 전사. 역함수 존재.

시각화

flowchart LR
  subgraph "단사 (injective)"
    A1["1"] -->|f| B1["a"]
    A2["2"] -->|f| B2["b"]
    A3["3"] -->|f| B3["c"]
    B4["d"]
    B5["e"]
  end

  subgraph "전사 (surjective)"
    C1["1"] -->|f| D1["a"]
    C2["2"] -->|f| D1
    C3["3"] -->|f| D2["b"]
    C4["4"] -->|f| D3["c"]
  end

  subgraph "전단사 (bijective)"
    E1["1"] -->|f| F1["a"]
    E2["2"] -->|f| F2["b"]
    E3["3"] -->|f| F3["c"]
  end
  • 단사: 안 쓰인 공역 원소 OK, 하지만 중복 대응 안 됨
  • 전사: 공역 다 커버, 하지만 여러 정의역이 같은 곳으로 OK
  • 전단사: 위 둘 다

함수의 합성

, 이면 정의.

성질:

  • 결합:
  • 교환 X: 일반적으로

역함수

가 전단사이면 역함수 존재.

,

컴퓨터 과학 응용

자료구조

  • 집합: HashSet, TreeSet, set (Python)
  • 관계: 데이터베이스의 테이블 = 의 부분집합
  • 함수: Map, Dict, HashMap

함수형 프로그래밍

  • First-class function: 함수를 값으로
  • 함수 합성:
  • 불변성: 수학적 함수처럼

타입 시스템

  • 타입 = 집합: int = 정수 집합, bool =
  • 함수 타입:
  • 곱 타입: (int, string) =
  • 합 타입: Result<T, E> = (disjoint union)

관계형 데이터베이스

  • 관계 (테이블):
  • 정규화: 함수 종속성 (functional dependency) 이론
  • 결합 (JOIN): 관계의 곱

그래프

그래프 는 정점 집합 와 간선 관계 .

함정

1. 집합의 원소 개수 vs 순서

집합은 순서 없음: 순서쌍은 순서 있음:

2. vs

(원소) (부분집합)

오류 (숫자 1 은 집합이 아님).

3. 함수의 well-defined

, 는 함수가 아님. 왜? 지만 . Well-defined 하지 않음.

4. 관계 vs 함수

관계는 한 입력에 여러 출력 가능. 함수는 유일.

관련 위키

이 글의 용어 (6개)
그래프 이론 기초 (Graph Theory)discrete-math
정의 그래프 (Graph) $G = (V, E)$ 는 정점 (vertex) 의 집합 $V$ 와 간선 (edge) 의 집합 $E$ 로 이루어진 이산 구조입니다. 간선은 정점의 쌍 …
명제 논리 (Propositional Logic)discrete-math
정의 명제 (Proposition) 는 참 (T) 또는 거짓 (F) 값을 가지는 서술문입니다. 참/거짓을 판단할 수 없는 문장 (질문, 명령, 감탄) 은 명제가 아닙니다. 예 (…
부울 대수 (Boolean Algebra)discrete-math
정의 부울 대수 (Boolean Algebra) 는 두 값 (참/거짓, 1/0) 과 세 연산 (AND, OR, NOT) 을 다루는 대수 시스템입니다. 1854년 George Bo…
이산수학 (Discrete Mathematics)discrete-math
정의 이산수학 (Discrete Mathematics) 은 이산 (discrete, 셀 수 있는) 대상을 다루는 수학의 분야입니다. 연속 (continuous) 대상 을 다루는 …
조합론 기초 (Combinatorics)discrete-math
정의 조합론 (Combinatorics) 은 유한 집합의 원소를 세거나 배열하는 방법을 다루는 수학 분야입니다. "경우의 수 계산" 과 "구조의 존재/구성" 이 핵심 주제. 컴퓨…
증명 기법 (Proof Techniques)discrete-math
정의 증명 (proof) 은 명제가 참임을 논리적으로 확립하는 절차입니다. 컴퓨터 과학에서는 알고리즘 정확성, 자료구조 불변식, 암호 안전성, 형식 검증 등에 필수. 이 문서는 …

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기