이산수학
이산수학은 떨어져 있고 셀 수 있는 것들의 수학입니다. 참이냐 거짓이냐, 집합 안이냐 밖이냐, 이 길이냐 저 길이냐. 컴퓨터가 움직이는 바탕이 되는 수학이고, 켜고 끌 수 있는 논리에서 시작합니다.
마지막 업데이트
이산수학은 떨어져 있고 셀 수 있는 것들의 수학입니다. 명제는 참이거나 거짓이고, 원소는 집합에 있거나 없고, 네트워크의 두 지점 사이에는 연결이 있거나 없습니다. 그 사이는 없습니다. 그것이 "이산"의 뜻이고, 컴퓨터가 세상을 보는 방식이 정확히 이렇습니다.
첫 과목은 여섯 가지 주제를 다룹니다. 논리, 집합, 경우의 수, 그래프, 정수론, 증명입니다. 다른 모든 주제가 논리로 쓰이므로 논리가 먼저입니다. 아래에서 논리 연산자를 하나 고르고 p와 q를 바꿔 보세요.
p ∧ q의 진리표
| p | q | p ∧ q |
|---|---|---|
| T | T | T |
| T | F | F |
| F | T | F |
| F | F | F |
p와 q를 바꾸거나 행을 클릭하세요. 강조된 행이 지금 고른 값의 행입니다.
p를 "x는 A에 있다"로, q를 "x는 B에 있다"로 읽으세요. 칠해진 영역이 명제가 참인 곳이고, 점이 지금의 행입니다.
p ∧ q
읽는 법 p 그리고 q
이 값들에서 p ∧ q은(는) 참입니다.
p와 q가 둘 다 참일 때만 참.
집합으로 보면 AND는 교집합입니다. x가 A ∩ B에 있는 것은 x가 A에 있고 B에도 있을 때와 정확히 같습니다.
논리: 명제와 논리 연산자
명제는 "7은 소수이다"나 "비가 온다"처럼 참이거나 거짓인 문장입니다. 논리는 몇 가지 연산자로 작은 명제들을 묶어 큰 명제를 만들고, 진리표는 입력의 모든 조합에 대해 결과가 무엇인지 나열합니다.
| 기호 | 이름 | 읽는 법 | 참이 되는 경우 |
|---|---|---|---|
| ∧ | AND, 논리곱 | "p 그리고 q" | 둘 다 참 |
| ∨ | OR, 논리합 | "p 또는 q" | 적어도 하나가 참 |
| ¬ | NOT, 부정 | "p가 아니다" | p가 거짓 |
| ⊕ | XOR, 배타적 논리합 | "p 또는 q, 둘 다는 아님" | 정확히 하나가 참 |
| → | IMPLIES, 조건문 | "p이면 q이다" | p가 참이고 q가 거짓인 경우를 뺀 모든 경우 |
| ↔ | IFF, 쌍조건문 | "p이면 q이고, q이면 p이다" | p와 q의 값이 같음 |
이 중 둘은 사람들을 놀라게 합니다. 논리의 OR는 포함적입니다. "p 또는 q"는 둘 다 참일 때도 참이고, 일상에서 "차 드실래요, 커피 드실래요?"라고 물을 때와는 다릅니다. 배타적인 쪽에는 XOR라는 따로 된 이름이 있습니다.
다른 하나는 IMPLIES입니다. p → q는 p가 참이고 q가 거짓인 한 행에서만 거짓입니다. 약속으로 생각해 보세요. "비가 오면 우산을 가져올게." 이 약속이 깨지는 것은 비가 오는데 우산이 없을 때뿐입니다. 비가 오지 않는 날에는 무엇을 들고 오든 약속이 깨지지 않았으므로 명제는 참으로 칩니다.
동치인 명제
두 명제의 진리표가 모든 행에서 일치하면 두 명제는 동치입니다. 위젯에서 OR를 고르고 p를 부정해 보세요. ¬p ∨ q의 열이 p → q의 열과 똑같으므로 둘은 같은 말을 합니다.
가장 쓸모 있는 동치는 NOT이 AND와 OR를 어떻게 통과하는지 말해 주는 드모르간의 법칙입니다.
¬(p ∧ q) ≡ ¬p ∨ ¬q
¬(p ∨ q) ≡ ¬p ∧ ¬q
말로 하면, "둘 다는 아니다"는 "하나 또는 다른 하나가 거짓이다"와 같고, "둘 다 아니다"는 "둘 다 거짓이다"와 같습니다. 프로그래머는 "not (로그인했고 인증됨)" 같은 조건을 바꿔 쓸 때 이것을 매일 씁니다.
논리와 집합은 하나의 생각이다
p를 "x는 A에 있다"로, q를 "x는 B에 있다"로 읽으세요. 그러면 AND는 교집합, OR는 합집합, NOT은 여집합이고, 모든 진리표는 칠해진 벤 다이어그램입니다. 위젯이 표 옆에 다이어그램을 그리는 이유가 이것입니다. 드모르간의 법칙은 집합의 규칙이 됩니다.
(A ∩ B)′ = A′ ∪ B′
집합 기호 페이지에서는 이것들을 하나하나 클릭할 수 있는 다이어그램 위에 칠해 볼 수 있습니다.
경우의 수
이산수학에서 센다는 것은 나열하지 않고 세는 것입니다. 두 가지 규칙이 대부분의 일을 합니다.
곱의 법칙. 첫 번째 선택을 m가지로, 두 번째 선택을 n가지로 할 수 있으면, 두 선택의 짝은 m × n가지로 할 수 있습니다. 네 자리 비밀번호는 자리마다 10가지 선택이 있으므로 가능한 비밀번호는 10^4 = 10000개입니다.
조합. 순서를 따지지 않고 n개에서 k개를 고르는 방법의 수를 C(n, k)로 씁니다. 토핑 8가지 중 3가지를 고르면
C(8, 3) = (8 × 7 × 6) / (3 × 2 × 1) = 56
분자는 순서를 따진 선택을 세고, 3 × 2 × 1로 나누면 같은 세 토핑을 고를 수 있었던 6가지 순서가 없어집니다.
답은 6 × 5를 2로 나눈 15입니다. 30이 나왔다면 한 쌍을 두 순서로 한 번씩, 두 번 센 것입니다.
그래프
그래프는 꼭짓점이라고 부르는 점들을 변이라고 부르는 선으로 이은 것입니다. 연결로 이루어진 것이라면 무엇이든 모형화합니다. 도시 사이의 도로, 소셜 네트워크의 친구, 웹 페이지 사이의 링크가 그렇습니다.
첫 번째 결과를 봅시다. 5명이 서로 한 번씩 모두 악수하면 악수는 C(5, 2) = 10번입니다. 한 사람이 4번씩 악수하므로 사람마다 센 악수는 5 × 4 = 20번인데, 악수 한 번에는 두 사람이 참여해 모든 악수가 두 번씩 세어졌으므로 20 / 2 = 10입니다. 이 논증이 악수 보조정리입니다. 모든 꼭짓점의 차수를 더하면 변의 개수의 두 배가 됩니다.
정수론과 증명
모듈러 연산은 시계 위의 산술입니다. 17 mod 5는 17을 5로 나눈 나머지인 2입니다. 8시에서 9시간이 지나면 5시인데, 17 mod 12가 5이기 때문입니다. 같은 생각을 아주 큰 수에 쓰는 것이 보안 웹사이트 뒤에 있는 RSA 암호가 작동하는 방식입니다.
수학적 귀납법은 어떤 명제가 모든 자연수 n에 대해 성립함을 두 단계로 보입니다. n = 1일 때 확인하고, 어떤 n에서 성립하면 n + 1에서도 성립함을 보입니다. 예를 들어 다음 식이
1 + 2 + ... + n = n(n + 1) / 2
시험해 본 값뿐 아니라 모든 n에 대해 성립함을 이렇게 증명합니다.
이산수학은 어디에 쓰이나
- 프로그래밍: 모든 if 문은 논리이고, 드모르간의 법칙으로 조건을 바꿔 씁니다.
- 데이터베이스: 표를 조인하거나 걸러 내는 쿼리는 집합 연산입니다.
- 알고리즘: 경우의 수를 세면 입력이 커질 때 프로그램이 몇 단계를 거치는지 알 수 있습니다.
- 네트워크와 지도: 최단 경로와 소셜 네트워크는 그래프 문제입니다.
- 보안: 암호는 정수론과 모듈러 연산 위에 서 있습니다.
- 하드웨어: 프로세서는 논리 게이트로 만들어지고, 논리 게이트는 실리콘에 새긴 진리표입니다.
이산수학은 어려울까?
대수나 미적분과는 다른 방식으로 어렵습니다. 외울 공식은 적고 계산도 작지만, 많은 문제가 무언가를 계산하라고 하지 않고 증명하라고 하며, 설득력 있는 논증을 쓰는 것은 대부분의 학생에게 새로운 기술입니다.
가장 도움이 되는 것은 패턴을 찾기 전에 작은 경우를 손으로 해 보는 것입니다. 벤 다이어그램을 그리고, 진리표를 쓰고, 모든 경우를 나열하세요. 기호는 처음에는 무거워 보이지만, 대부분은 이 페이지와 집합 기호 페이지에 나온 것들입니다.
자주 묻는 질문
- 이산수학이란 무엇인가요?
- 매끄럽게 변하는 양이 아니라 떨어져 있고 셀 수 있는 대상을 다루는 수학의 한 분야입니다. 주요 주제는 논리, 집합, 경우의 수, 그래프, 정수론, 증명입니다. 미적분은 사물이 연속적으로 어떻게 변하는지를 묻고, 이산수학은 몇 개인지, 어느 것인지, 어떤 명제가 참인지를 묻습니다.
- 이산수학은 어렵나요?
- 미적분과는 다른 방식으로 어렵습니다. 적용할 공식은 적고 세워야 할 논증은 많으며, 많은 학생에게 증명 쓰기를 중심으로 짜인 첫 과목입니다. 대수 계산은 보통 가볍습니다. 어려워하는 학생들은 대부분 증명에 적응하는 중이고, 작은 예로 연습하면 빠르게 나아집니다.
- 이산수학은 어디에 쓰이나요?
- 컴퓨터 과학의 거의 모든 곳에 쓰입니다. 논리는 회로와 if 문이 작동하는 방식이고, 집합은 데이터베이스 쿼리의 바탕이며, 경우의 수는 알고리즘이 얼마나 오래 걸리는지 알려 주고, 그래프는 네트워크와 지도를 모형화하며, 정수론은 온라인 결제를 지키는 암호의 기초입니다.
- 이산수학에서는 어떤 내용을 배우나요?
- 보통의 첫 과목은 명제 논리와 진리표, 집합과 벤 다이어그램, 함수와 관계, 귀납법을 포함한 증명 기법, 순열과 조합을 이용한 경우의 수, 기초 확률, 그래프와 트리, 모듈러 연산을 다룹니다. 점화식과 불 대수를 더하는 과목도 있습니다.
- 컴퓨터 과학을 하려면 이산수학이 필요한가요?
- 그렇습니다. 알고리즘, 자료구조, 계산 이론이 모두 이산수학을 전제로 하므로 거의 모든 컴퓨터 과학 학위 과정이 보통 1학년이나 2학년에 이것을 요구합니다. 프로그래밍만 한다면 이산수학 없이 시작할 수 있지만, 논리, 집합, 경우의 수는 대부분의 사람이 예상하는 것보다 일찍 일상적인 코드에 등장합니다.
- 이산수학과 연속수학은 어떻게 다른가요?
- 이산수학은 정수, 참과 거짓, 네트워크의 노드처럼 하나씩 나열할 수 있는 값을 다룹니다. 미적분 같은 연속수학은 시간, 거리, 온도처럼 어떤 범위 안의 어떤 값이든 가질 수 있는 양을 다룹니다.
- 진리표란 무엇인가요?
- 논리 명제의 입력에 대해 참과 거짓의 모든 조합을 나열하고, 각 조합에서 명제의 값을 적은 표입니다. 입력이 p와 q 두 개면 행이 네 개입니다. 진리표는 두 명제가 동치임을 증명하는 방법입니다. 모든 행에서 두 열이 일치하면 두 명제는 언제나 같은 값을 가집니다.