함수의 정의역·공역·치역과 단사·전사는 무엇인가요?
함수는 입력 하나에 출력 하나를 대응시킵니다. 넣을 수 있는 값은 정의역, 출력 후보는 공역, 실제 나온 값은 치역이며 단사·전사는 이 대응의 모양을 구분하는 조건입니다.
적용 조건·범위: pairs가 각 정의역 원소를 한 번씩 포함하는 함수라고 주어진 상황에서 출력의 중복을 확인합니다. 코드 자체가 함수 조건이나 전사성을 모두 검사하는 것은 아닙니다.
공식 문서 참고: MIT 함수의 정의역·공역·치역과 단사·전사(4.3·4.4절)
핵심 정의와 기호
함수 f:A→B는 정의역 A의 모든 원소에 공역 B의 원소를 정확히 하나씩 대응하는 관계입니다. 치역 f(A)는 실제 출력의 집합이며 B의 부분집합입니다.
| 기호·성질 | 읽는 법과 조건 |
|---|---|
| f:A→B | A에서 B로 가는 함수 f |
| f(x) | x에 대응한 함수값 |
| 단사 | f(x)=f(y)이면 x=y |
| 전사 | 공역 B의 모든 b에 f(x)=b인 x가 존재 |
| 전단사 | 단사이면서 전사 |
| (g∘f)(x) | 먼저 f, 다음 g: g(f(x)) |
합성은 f의 출력이 g의 정의역에 들어갈 때 가능합니다.
가장 작은 예제
다음 대응에서 A={1,2,3}, B={a,b,c}입니다.
| 입력 x | 출력 f(x) |
|---|---|
| 1 | a |
| 2 | b |
| 3 | c |
각 입력의 출력이 하나이고 서로 겹치지 않으며 B를 모두 사용하므로 전단사입니다. 대응을 그대로 두고 공역만 {a,b,c,d}로 바꾸면 단사이지만 전사는 아닙니다.

헷갈리는 반례
입력 1에 a와 b를 동시에 대응하면 함수가 아닙니다. 반면 1→a,2→a는 함수일 수 있지만 단사는 아닙니다. 서로 다른 입력의 출력 중복은 ‘함수 아님’과 다릅니다.
손으로 풀어보기
f:ℤ→ℤ, f(x)=x²에서는 f(1)=f(−1)=1이므로 단사가 아닙니다. −1은 제곱 결과가 될 수 없어 전사도 아닙니다. 정의역을 0 이상의 정수로, 공역을 {0,1,4,9,…}로 바꾸면 전단사가 됩니다.
합성 연습: f(x)=x+1, g(x)=2x이면 (g∘f)(3)=g(4)=8, (f∘g)(3)=f(6)=7입니다. 적용 순서가 다르면 결과도 달라집니다.
선택: JavaScript로 검산하기
코드 직접 실행
본문 예제를 선택하고 실제 계산 결과를 확인합니다.
예제 크게 보기 (새 탭)손풀이 뒤 선택해서 실행하는 짧은 전체 코드입니다. 브라우저 Console 또는 Node.js가 준비된 환경의 check.mjs에서 실행할 수 있으며 수학 학습에 설치는 필수가 아닙니다.
const pairs = [[1, 'a'], [2, 'b'], [3, 'c']];
const outputs = pairs.map(([, value]) => value);
const injective = new Set(outputs).size === outputs.length;
console.log({ injective });
기대 결과: { injective: true }가 출력됩니다.
pairs가 각 정의역 원소를 한 번씩 포함하는 함수라고 주어진 상황에서 출력의 중복을 확인합니다. 코드 자체가 함수 조건이나 전사성을 모두 검사하는 것은 아닙니다.
자주 발생하는 오해와 교정
두 입력이 같은 출력으로 가도 함수일 수 있습니다. 한 입력의 출력이 둘이면 함수가 아닙니다. 단사라는 이유만으로 전사라 할 수 없고, 공역을 바꾸면 전사성이 달라집니다.
직접 풀어볼 문제와 해설
쉬운 개념
함수는 정의역의 각 입력에 출력이 정확히 하나인 관계입니다. 단사는 서로 다른 입력의 출력이 겹치지 않는지, 전사는 공역의 모든 원소가 실제 출력인지 확인합니다.
단계별 예제
- f:{1,2,3}→{a,b,c,d}를 1→a, 2→b, 3→c로 적습니다.
- 출력이 모두 달라 단사입니다.
- 치역 {a,b,c}가 공역 {a,b,c,d}보다 작고 d가 비어 있으므로 전사는 아닙니다.
직접 풀 문제
g:{1,2,3}→{a,b}, g(1)=a, g(2)=b, g(3)=b는 함수·단사·전사인가요?
정답·해설 보기
- 각 입력의 출력이 하나씩 있어 함수입니다.
- 2와 3의 출력이 b로 겹쳐 단사가 아닙니다.
- 공역의 a와 b가 모두 실제 출력이므로 전사입니다.
다음 학습
6회차에서 함수값을 0·1로 제한하고 논리식을 단순화합니다. 다음 글 읽기
학습 완료 체크리스트
- 정의의 적용 범위와 기호를 말로 설명할 수 있습니다.
- 위 손풀이를 답을 가린 상태에서 다시 계산합니다.
- 반례가 어떤 조건을 어기는지 설명합니다.
알고리즘 수학 노트
누적 이전 체크포인트: discrete-step-04-relation. 아래는 이번 회차의 완성 예시입니다. 자신의 다른 예제 하나를 덧붙여도 좋습니다.
ID를 다른 ID로 변환할 때 두 입력이 같은 출력으로 합쳐지는지 단사 조건으로 질문할 수 있습니다. 허용 출력 타입은 공역, 실제 생성 결과는 치역입니다. 현실 API는 오류·시간·상태도 입력 모델에 포함해야 수학적 함수처럼 설명할 수 있습니다. 대응표와 공역 변경에 따른 전사성 차이를 기록합니다.
완료 체크포인트
discrete-step-05-function
다음 학습
부울대수 쉽게 이해하기: 진리표와 논리게이트 간소화 기준에서 다음 개념을 이어갑니다.
글 소개·학습 준비·전체 목차

이산수학 · 5 / 13
이산수학 함수 쉽게 이해하기: 정의역 공역 치역과 단사 전사
함수는 입력 하나마다 출력 하나를 대응시키는 특별한 관계입니다. 정의역·공역·치역을 구분하고 단사·전사 조건을 읽을 수 있으면 API 입력/출력이나 데이터 변환도 더 정확하게 설명할 수 있습니다.
이번 글에서 배우는 내용
- 모든 입력에 출력 정확히 하나라는 함수 조건을 설명합니다.
- 정의역·공역·치역을 구별합니다.
- 단사·전사와 합성 순서를 작은 표로 판정합니다.
선수 지식
집합·관계·순서쌍을 알아야 합니다.
목차
이 글이 도움이 되었나요?
읽음 기록
읽음 — / 전체 13개 · 필수 13개
새 글 받아보기
RSS 리더에서 BlogFlow의 새 글을 확인할 수 있습니다.