$ | S | $: S가 유한 집합일 경우 집합의 크기(cardinality), 즉 집합에 포함되는 원소의 개수를 나타낸다 |
A X B | = $ | A | \cdot | B | =$ $2\times2=4$개의 요소를 가진다 |
예제 1.3.1 D = {1, 2, 3, …}을 가지는 배수 함수(doubling function)
{
(1, 2),
(2, 4),
(3, 6),
(4, 8) ...
}
예제 1.3.2 D = {1,2,3,…} x {1,2,3,…} 가지는 곱셈 함수(multiplication function)
{
((1,1), 1),
((1,2), 2),
...
((2,1), 2),
((2,2), 4),
((2,4), 6),
...
}
매핑하는 함수
의 의미$f : D \longrightarrow F$ = D에서 F로의 함수 = D를 F로 매핑하는 함수
예제 1.3.3 시저의 암호체계. 알파벳 각 문자를 그 다음 세 번째 문자로 대치(마지막 세 문자 X, Y, Z는 wrap-around 적용). MATRIX -> PDWULA 평문의 문자를 암호문의 문자로 매핑하는 함수는 다음과 같다 $A\mapsto D, B\mapsto E, C\mapsto F, D\mapsto G, W\mapsto Z, X\mapsto A, Y\mapsto B, Z\mapsto C$ 이 함수의 정으역과 공역은 둘 다 알파벳 ${A, B, \dotsc, Z}$
예제 1.3.4 코사인 함수 cos는 실수의 집합 $\R$을 실수의 집합으로 매핑하는 함수 $cos: \R \longrightarrow \R$ cos 함수의 함수값은 모든 실수를 포함하는 것이 아니라 -1과 1 사이의 값만 가진다
예제 1.3.5 함수 prod = 1보다 큰 정수 쌍을 입력으로 받아 두 정수의 곱을 출력.
- 정의역: 1보다 큰 정수 쌍
- 공역: 1보다 큰 모든 정수들의 집합
- 치역: 합성수(composite number)들의 집합. 소수(prime number)와 매핑되지 않는다.
예제 1.3.6 프로시저 정의하는 파이썬 문법
def mul(p, q):
return p * q
예제 1.3.7:
예제 1.3.2에 정의된 함수
에 대응하는 계산문제
- 입력: 1보다 큰 정수의 쌍(p, q)
- 출력: 곱 pq
예제 1.3.8
- 입력: 1보다 큰 정수 m
- 출력: 곱이 m인 정수 쌍 (p, q)
def mul(p,q):
는 입력 타입, 리턴 타입이 명시되어 있지 않다Forward 문제 함수 $f$의 정의역에 속하는 원소 $a$에 대해, $a$의 함수값 $f(a)$ 계산
Backward 문제 함수의 공역의 원소 $r$에 대해 임의의 원상을 계산하여라 (원상이 존재하지 않을 경우, 조재하지 않음을 리포트)
함수들의 집합
에 대한 표기법graph LR
A((A)) --> |f|B((0)) --> |g| C((3)) --> |h|D((D))
E((B)) --> |f|F((1)) --> |g| G((4)) --> |h|H((E))
I((C)) --> |f|J((2)) --> |g| K((5)) --> |h|L((F))
예제 1.3.10 함수 $f$와 $g$의 정의역과 공역이 $\Reals$
$f(x) = x + 1$ $g(y) = y^2$ 그렇다면 $g \circ f(x) = (x + 1)^2$(이는 $g(f(x))$와 같다)
예제 1.3.11:
함수 $f$: $f:{A,B,C,\dotsc,Z} \longrightarrow {0,1,2,\dotsc,25}$ 위 함수를 다음을 사용하여 정의해 보자 $A \mapsto 0, B \mapsto 1, C \mapsto 2, \dotsb Z \mapsto 25$
- 함수 $g$:
- 정의역: {0,1,2,…,25}
- 공역: {0,1,2,…,25}
- $g(x) = (x + 3) \mod 26$: 알파벳에 3을 더하고(가령 A는 D가 된다) 이를 알파벳 26자리로 모듈러 연산
- 함수 $h$:
- 정의역: {0,…25}
- 공역: {A,…,Z} 그리고 $0 \mapsto A, 1 \mapsto B, \dotsb$
이때 $h \circ (g \circ f)$는 예제 1.3.3의 시저 암호 구현한 함수
graph LR
subgraph U -> V
U1[U1] --> V1[V1]
U2[U2] --> V2[V2]
U3[U3] --> V3[V3]
V4[V4]
end
x를 $f$의 정의역에 속하는 임의의 원소라 하자
$(h \circ (g \circ f))(x)$는
- $h \circ (g \circ f)$ 정의에 의해
- $h((g \circ f))(x)$
- $h((g \circ f)(x))$
- $g \circ f$ 정의에 의해 $h(g(f(x)))$
- $h \circ g$ 정의에 의해 $(h \circ g)(f(x))$
- $(h \circ g) \circ f$ 정의에 의해 $((h \circ g) \circ f)(x)$, 결합 법칙 성립
- 따라서, $h \circ (g \circ f) = (h \circ g) \circ f = h \circ g \circ f$
정의 1.3.13 다음 조건 만족하면 f와 g는 서로의 역함수
- $f \circ g$가 정의되고, $g$의 정의역에 대해 항등함수
- $g \circ f$가 정의되고, $f$의 정의역에 대해 항등함수
graph LR
subgraph U -> V
U1[U1] --> V1[V1]
U2[U2] --> V2[V2]
U3[U3] --> V3[V3]
U4[U4] --> V3[V3]
end
정의 1.3.14 $f: D \rightarrow F$ 모든 $x,y \in D$에 대해 $f(x) = f(y)$는 $x = y$임을 의미 $\to f$는 단사함수(one-to-one) 모든 $z \in F$에 대해 $f(x) = z$ 만족하는 $x \in D$가 존재 $\to f$는 전사함수(onto)
예제 1.3.15 예제 1.3.5에서 정의된 함수 prod(1보다 큰 정수 쌍을 입력으로 받아 두 정수의 곱을 출력) 생각해 보자 소수는 원상을 가지지 않으므로, 이 함수는 전사함수가 아니다 (2,3)과 (3,2) 같이 동일한 정수에 매핑되는 복수의 정수 쌍이 존재하므로 단사함수도 아니다
부명제(Lemma) 1.3.16: 가역함수는 단사함수 @증명
- 가정:
- $f$는 단사함수 아니다
- $x_1,x_2$는 $f(x_1) = f(x_2)$ 만족하는 정의역 내 서로 다른 원소
- $y = f(x_1)$
- $f$는 가역적
역함수 정의에 의해 $f^{-1}(y) = x_1$이며 동시에 $f^{-1}(y) = x_2$다 된다 하지만 앞서 $x_1,x_2$는 정의역 내 서로 다른 원소라 했으므로 둘 다 참이 되는 것은 불가능, 즉 모순(귀류법)
부명제 1.3.17: 가역함수는 전사함수: @증명
- 가정
- $f$는 전사함수 아니다
- $\hat{y}$는 정의역 내 어떠한 원소의 함수값(image)도 되지 않는 공역의 원소
- $f$는 가역적
$\hat{y}$는 $f^{-1}$에 의한 함수값 $\hat{x}$를 갖게 되며, 역함수 정의에 따라 $f(\hat{x}) = \hat{y}$ 되지만 함수값이 되지 않는 공역의 원소라 가정했으므로 모순이다(귀류법)
정리(Theorem) 1.3.18 (Function Invertibility Theorem):
- 함수가 가역적이 될 필요충분조건은 전단사함수
- 단사함수이며
- 동시에 전사함수
@증명 부명제 1.3.16과 1.3.17은 가역함수는 단사함수이며 전사함수임을 보여준다.
- 가정1
- $f$: 단사함수이자 전사함수
- $g$: $f$의 공역인 함수
- $\hat{y}$: $f$의 공역의 각 원소
- $f$는 전사함수이므로 $f$의 정의역은 $f(\hat{x}) = \hat{y}$인 어떤 원소 $\hat{x}$를 포함
- 이 경우 $g(\hat{y}) = \hat{x}$라 정의
- $g \circ f$: $f$의 정의역에 대한 항등함수
$f$는 단사함수이므로 $\hat{x}$는 $f$의 함수값이 $\hat{y}$가 되는 $f$의 정의역에 있는 유일한 원소다. 따라서 $g(\hat{y}) = \hat{x}$에서 $\hat{x}$가 여러 값이 될 수 없으며, 이는 $g \circ f$가 항등함수임을 보여준다
- 가정2
- $f \circ g$는 $g$의 정의역에 대해 항등함수
- $\hat{y}$는 $g$의 정의역에 있는 임의의 원소
$g$의 정의에 의해 $f(g(\hat{y})) = \hat{y}$
부명제 1.3.19: 모든 함수는 많아야 하나의 역함수를 가진다 @ 증명
- 가정
- $f: U \rightarrow V$는 가역함수
- $g_1$: $f$의 역함수
- $g_2$: $f$의 역함수
- $v \in V$: $f$의 공역에 있는 임의의 원소
$f$는 단사함수이므로(부명제 1.3.17), $v = f(v)$ 만족하는 어떤 원서 $u \in U$가 존재. 역함수 정의에 의해 $g_1(v) = u$이고 $g_2(v) = u$이며, 따라서 $g_1(v) = g_2(v)$이다. 즉 $g_1$과 $g_2$는 같다.
부명제 1.3.20: if ($f$와 $g$가 가역함수 && $f \circ g$ 존재) $\to$ ($f \circ g$는 가역함수 && $(f \circ g)^{-1} = g^{-1} \circ f^{-1}$)
문제 1.3.21 부명제 1.3.20 증명 @증명
- 가정
- $f: U \to V$는 가역함수
- $v \in V$는 $f$의 공역에 있는 임의의 원소
- $g: X \to Z$는 가역함수
- $z \in Z$는 $g$의 공역에 있는 임의의 원소
- $f \circ g$ 존재
가역함수는 정리 1.3.18에 따라 전단사함수. $f(v)^{-1} = u$, $g(z)^{-1} = x$ $f \circ g = f(g(x)) = f(z) = v$
예제 1.4.1 동전을 던지는 경우를 모델링하면,
\(\varOmega = \lbrace \text{heads(앞면)}, \text{tails(뒷면)}\rbrace\)
두 실험결과가 동일한 가능성을 가지므로, 두 결과에 동일한 확률을 할당
\(Pr(heads) = Pr(tails)\)
확률의 합은 1이 되어야 하므로, $Pr(heads) = Pr(tails) = \frac{1}{2}$
Pr = {
'heads': 1/2,
'tails': 1/2
}
예제 1.4.2 하나의 주사위를 굴리는 경우를 모델링하면,
\(\varOmega = \lbrace1,2,3,4,5,6\rbrace\)
\(Pr(1) = Pr(2) = Pr(3) = \dotsc = Pr(6)\)
Pr = {
1:1/6,
2:1/6,
3:1/6,
4:1/6,
5:1/6,
6:1/6
}
예제 1.4.3 두 개의 동전을 던지는 경우를 모델링하면,
\(\varOmega = \{HH, HT, TH, TT\}\)
각 실험결과는 동일한 확률 1/4 갖는다
Pr = {
('H', 'H'): 1/4,
('H', 'T'): 1/4,
('T', 'H'): 1/4,
('T', 'T'): 1/4
}
예제 1.4.4 스크래블 게임
\(\varOmega = \{A, B, C, \dotsc, Z\}\)
문자를 뽑을(추출할) 가능성에 따라 확률을 할당.
스크래블 타일의 수는
A:9, B:2, C:2, D:4, E:12, F:2, G:3, H:2, I:9, J:1, K:1, L:1, M:2, N:6, O:8, P:2, Q:1, R:6, S:4, T:6, U:4, V:2, W:2, X:1, Y:2, Z:1
- 문자 R:6 뽑을 가능성은
- G:3 뽑을 가능성보다 2배 더 크다
- C:2 뽑을 가능성보다 3배 더 크다
- Z:1 뽑을 가능성보다 6배 더 크다
확률은 이 가능성에 비례하여 할당해야 한다. \(Pr[\text{문자 X 추출}] = c\cdot \text{문자 X가 적힌 타일 수}\) 모든 문자에 대한 확률을 더하면,
\(1 = c\cdot \text{총 타일 수}\)총 타일 수는 95개이므로, $c = \frac{1}{95}$라 정의
Pr = {
'A':9/95,
'B':2/95,
'C':2/95,
'D':4/95,
'E':12/95,
'F':2/95,
'G':3/95,
'H':2/95,
'I':9/95,
'J':1/95,
'K':1/95,
'L':1/95,
'M':2/95,
'N':6/95,
'O':8/95,
'P':2/95,
'Q':1/95,
'R':6/95,
'S':4/95,
'T':6/95,
'U':4/95,
'V':2/95,
'W':2/95,
'X':1/95,
'Y':2/95,
'Z':1/95
}
예제 1.4.4에서 모음(vowel) 뽑을 확률?
Principle 1.4.5(확률이론의 기본 원칙):
어떤 사건에 대한 확률 = 사건 구성하는 실험결과들에 대한 확률의 합
예제 1.4.6
\(f:\lbrace1,2,3,4,5,6\rbrace \longrightarrow \{0,1\}\)
\(f(x) = \begin{cases} 0 &\text{만약 x가 짝수인 경우} \\ 1 &\text{만약 x가 홀수인 경우} \end{cases}\)
주사위 굴려 집합 ${1,2,3,4,5,6}$에서 수 하나를 얻어 $f(\cdot)$ 적용하여 0 또는 1을 얻는다고 할 때, 이러한 실험의 결과에 대한 롹률 함수는 무엇인가?
$\lbrace2,4,6\rbrace$에 대하여 실험 결과는 0이므로, $\frac{1}{6} + \frac{1}{6} + \frac{1}{6} = \frac{1}{2}$ 확률로 0이 된다
$\lbrace 1,3,5\rbrace$에 대하여 실험 결과는 0이므로, $\frac{1}{6} + \frac{1}{6} + \frac{1}{6} = \frac{1}{2}$ 확률로 0이 된다
# 위 함수의 출력의 확률분포
{
0:1/2,
1:1/2
}
퀴즈 1.4.7
예제 1.4.3에 기술된 바와 같이, 두 개의 동전을 던지는 경우를 고려해 보자.
이 실험의 결과는 쌍 (x, y)이며, 여기서 x와 y 각각은 ‘H’ 또는 ‘T’이다.
\(f:\lbrace (\text{'H'}, \text{'H'}) (\text{'H'}, \text{'T'}) (\text{'T'}, \text{'H'}) (\text{'T'}, \text{'T'}) \rbrace\)
위 함수를 $f((x, y)) = \text{H가 나타나는 횟수}$를 사용하여 정의해 보자.
이때 함수의 출력에 대한 확률분포를 구하라
Pr = {
0:1/4
1:2/4
2:1/4
}
예제 1.4.8 (시저의 Scrabble 게임)
예제 1.3.11에 정의된 함수 $f$는 A를 0으로, B를 1로, … 매핑하는 함수
함수 $f$를 예제 1.4.4에 기술된 확률분포에 따라 랜덤하게 선택된 문자에 적용하는 실험을 한다고 할 때, 출력에 대한 확률분포는 무엇인가?
- 함수 $f$
- 가역함수
- 출력이 0이 되는 입력은 오직 하나 존재하며, A
- 출력이 0이 될 확률 = 입력이 A가 될 확률 = $\frac{9}{95}$
- 마찬가지로, 함수 $f$의 공역 $\lbrace 0, 1, \dotsc, 25\rbrace$에 대해
- 정수에 매핑되는 문자는 정확하게 하나이며,
- 출력이 정수가 될 확률 = 입력이 각 문자가 될 확률
# 출력이 정수가 될 확률 = 입력이 각 문자가 될 확률
f_1_4_4 = {
'A':'9/95',
'B':'2/95',
'C':'2/95',
'D':'4/95',
'E':'12/95',
'F':'2/95',
'G':'3/95',
'H':'2/95',
'I':'9/95',
'J':'1/95',
'K':'1/95',
'L':'1/95',
'M':'2/95',
'N':'6/95',
'O':'8/95',
'P':'2/95',
'Q':'1/95',
'R':'6/95',
'S':'4/95',
'T':'6/95',
'U':'4/95',
'V':'2/95',
'W':'2/95',
'X':'1/95',
'Y':'2/95',
'Z':'1/95'
}
# 정수에 매핑되는 문자는 정확하게 하나이며,
f_1_3_11 = {
'A':0,
'B':1,
'C':2,
'D':3,
'E':4,
'F':5,
'G':6,
'H':7,
'I':8,
'J':9,
'K':10,
'L':11,
'M':12,
'N':13,
'O':14,
'P':15,
'Q':16,
'R':17,
'S':18,
'T':19,
'U':20,
'V':21,
'W':22,
'X':23,
'Y':24,
'Z':25
}
f_1_4_8 = {}
for k in f_1_3_11:
if k in f_1_4_4:
f_1_4_8[f_1_3_11[k]] = f_1_4_4[k]
print(f_1_4_8)
{
0: '9/95',
1: '2/95',
2: '2/95',
3: '4/95',
4: '12/95',
5: '2/95',
6: '3/95',
7: '2/95',
8: '9/95',
9: '1/95',
10: '1/95',
11: '1/95',
12: '2/95',
13: '6/95',
14: '8/95',
15: '2/95',
16: '1/95',
17: '6/95',
18: '4/95',
19: '6/95',
20: '4/95',
21: '2/95',
22: '2/95',
23: '1/95',
24: '2/95',
25: '1/95'
}
예제 1.4.9
시저의 암호체계에서 문자를 알파벳 순으로 뒤로 3 알파벳 위치만큼 이동하여 암호화
알파벳 위치는 0에서 25까지으 정수 중 어느 값이라도 상관없다
\(w(k) = h(f(P) + k\mod 26) = f(15 + k\mod 26)\)
- $k$:
- key
- 집합 $\lbrace 0, 1, 2, \dotsc, 25\rbrace$에 대한 균등 분포가 되게 선택
- 이 키를 이용하여 문자 P를 암호화
- 함수 $w$
- 키를 암호문에 매핑하는 함수
- 가역함수
- $\lbrace 0, 1, \dotsc, 25 \rbrace \mapsto \lbrace A, B, \dotsc, Z\rbrace$
- $f(P)$ = f_1_3_11[‘P’] = 15
- 키가 랜덤하게 선택될 때, 암호문은 동일한 확률로 26개 문자 중의 어느 하나가 된다
사용하는 암호체계에 대해 남들이 알지 못하게 해 정보 보안을 지킬 수 있다는 개념
암호체계의 안정성은 암호체계 자체의 비밀유지에 의존해서는 안 되며, 오직 사용된 키값의 비밀 유지에만 의존해야 한다