이산수학은 컴퓨터학부에 입학하면 1, 2학년 과정에는 필수로 들어있는 과목이다.

 

컴퓨터를 배우는데 왜 이산수학이 필요할까라는 의문이 있다? 분명 수학이 필요할 것 같은데 어떤 사람들은 또 수학이 필요없다고도 한다. 도대체 컴퓨터와 수학은 무슨 관계가 있는걸까?

 

대학에서 배우는 수학은 Calculus (미적분학)을 떠올리기 마련이다. Calculus가 연속된 수를 다루는 새로운 시각을 갖게 한다면 이산수학(Discrete Mathematics)은 분리된 수에 대한 개념을 갖는다.

 

컴퓨터는 0과1만 이해할 수 있다는 사실은 이제는 잘 알려진 사실이다. 이 단순한 컴퓨터에서 알파고같은 인공지능이 탄생했고 불과 몇년전에는 세계 최고의 바둑기사 이세돌을 압도했다. AI산업은 나날이 발전하고 예전에는 사람의 일자리로 생각했던 직업이 오늘은 AI시스템에 의해서 대체되고 있다. 무엇이 문제일까? 디지털의 세계가 어째서 아날로그 세계를 뛰어넘으려 하고 있는가?

참, 너무 많은 질문들이다. 이산수학을 정의하는 일은 수학자들에게도 어렵다고 한다. 왜냐하면 수학을 정의하는 일은 어려운 일이기 때문이다.

 

현대의 과학을 과거 시대와 비교해보면 어마어마한 약진을 했다는 사실을 알게된다. 멀리 볼 필요도 없이 20세기 초와 21세기의 아직은 초반인 지금 어떤 차이가 있을까? PC, 스마트폰, 항공기, 인공위성, 우주선 ... 유발하라리는 사피엔스에서 12세기쯤 살던 사람이 타임머신을 타고 15세기로 와서 살아도 별 차이를 못느꼈을 사회였을 것이라 말한다. 그런데 20세기 초에 살던 사람이 타임머신으로 현재에 왔다면 거의 모든 것을 다시 배워야 사회에 적응 할 수 있을 것이다.

 

과학은 발달하고 사회는 진보하는데 여전히 세상의 많은 문제들이 잘 해결되지 않는다.

 

이런 질문들에 대한 답을 얻기 위해서는 이산수학을 배운다. 특히 컴퓨터 공학과 디지털에 대한 이해도를 높일 수 있다.

 

* 디지털은 분리하는 이산적, 분리적 특성이 있고 아날로그는 연속적인 특성이 있다. 이산수학은 주로 디지털의 수를 다루는 분야이다.

 

[디지털, digital]

 

물질·시스템 등의 상태를 이산적(離散的)인 숫자·문자 등의 신호로 표현하는 일. 순화어는 `숫자식'. ▷아날로그(analogue).

 

[아날로그, analogue]

 

물질·시스템 등의 상태를 연속적으로 변화하는 물리량(物理量)으로 나타내는 것. ▷디지털(digital).


* 주: 프로그래밍을 위한 관점에서 해외의 자료와 문서들을 참고하므로 한글 용어와 다를 수도 있음. 가급적 영문을 그대로 사용합니다.

 

수학적 문장 (Mathematical Statements)

수학적 문장은 수학을 일상어와 구분하는 특징이다. 수학적 문장은 논리의 증명에 사용할 수 있어야 하기 때문에 아무 문장이나 인정할 수 없고 특정한 요건을 갖춰야 한다.

 

- statement (문장) 은 참이나 거짓이 될 수 있는 선언적인 문장이다.

 

- statement는 atomic (원자적) 이어야 한다. 더 작은 문장들로 쪼개질 수 없어야 한다. 그렇지 않으면 atomic 이 아니라 molecular (분자적) 이라고 한다.

 

예를 들면 아래는 수학적 문장(statement) 이다.

 

-> 영어로 statement 은 수학적 문장, sentence는 일반 문장을 의미한다.

 

* 한국의 전화번호는 15자리다.

 

* 달은 쌀로 만들어졌다.

 

* 100은 정사각형의 넓이다.

 

* 5 + 3 = 10

 

위의 문장은 거짓이지만 수학의 문장으로 사용할 수 있다.

 

반면 다음의 예는 문장이 아니다.

 

* 그녀는 우리반에서 가장 아름답다.

 

* 5 + x = 7

 

* 집에 돌아가자!

 

* 두 사각형의 합

 

* 1 + 2 + 3 + ... + (n-1) + n

위의 sentence들은 주어진 내용만으로 참과 거짓을 분간할 수 없기 때문에  statement 가 아니다.

 

5 + x = 7 이 Statement 이 아닌 것은 x 가 변수이기 때문이다. 이는 statement이 아니라 sentence 라고 한다. x는 1이 될수도 있고 2가 될 수도 있다. 참과 거짓이 하나만 나오도록 변수 값을 고정하지 않는다면 statement 이 아니다.

 

이런 경우 5 + x  = 7 이고 x = 2 일 때라고 한정하면 이는 statement 이 된다. sentence 와 statement의 차이점은 좀더 명확하게 참과 거짓이 나오도록 조건을 만들면 statement 이 된다. 프로그래밍 언어에서도 한줄의 표현식을 statement 이라고 한다. assignment statement (할당문), if statement (조건문) 처럼 프로그래밍 언어에서도 변수의 구체적인 값을 연산해서 참인지 거짓인지가 명확하게 나온다. (안 그러면 조건문이 진행이 안되니까)

 

statement 를 두개 이상 사용하면 molecular statement 를 만들 수 있는데. 이 때 문장을 연결하기 위해 logical connectives (논리 연결사 - 접속사) 를 사용한다.

 

논리 접속사에는 and, or, if... then, if and only if, not 가 있다.

 

molecular statement(분자적 문장)도 참과 거짓이 있는 statement 이다. not 은 unary connectives (단항 연산자) 이다.

 

statement 을 연결하면 각각의 statement은 propositional variables 이 되는데 보통 알파벳 대문자를 사용한다.

 

P ∧ Q is read “P and Q,”

 

P ∨ Q is read “P or Q,”

 

P → Q is read “if P then Q,”

 

P ↔ Q is read “P if and only ifQ,”

 

¬P is read “not P,”

논리 접속사를 기호로 표기하면 위와 같다.

 

기호가 아닌 statement 을 보면 고수준 프로그래밍 언어의 문법과 매우 흡사하다는 것을 알 수 있다.

 

아래는 루아(Lua) 프로그래밍 언어의 if 문법인데 상당히 닮았다.

 

if 조건식 then do

    실행문장

end

 

이 포스팅은 이산수학의 도입이니 이 정도로 마무리한다. 이산수학을 잘하는 것은 실제로 해보는 것이라고 한다. actually do it.

 

아래 링크의 교재를 참고하였다. [CC 4.0 라이선스] 무료로 열람이 가능한 교재니까 이산수학을 배우려는 사람들이 참고하면 좋을 것이다.

 

영어교재를 구글에서 많이 찾아봤는데 이산수학의 커리큘럼이 미묘하게 교재마다 다르다는 점이 눈에 띄었다. 수학자들은 다들 획일적이라고 생각할 수 있는데 교재를 보면 조금씩 다 다르다. 어릴 때 부터 수학의 정석에 익숙해져서 그런지 은연중에 수학은 획일적이라는 잘못된 사고를 하게된 탓인 듯하다.

 

다음 포스팅에는 이산수학의 첫번째 부분인 집합(sets)부터 다룰 것이다.

 

 

* 링크 - 이산수학 - 열린 개론(Open Introduction)

Discrete Mathematics - An Open Introduction (openmathbooks.org)

 

Discrete Mathematics - An Open Introduction

This is the new 3rd edition of the book. The previous version is available at the 2nd edition's site. Discrete Mathematics: An Open Introduction is a free, open source textbook appropriate for a first or second year undergraduate course for math majors, es

discrete.openmathbooks.org

 

공유하기

facebook twitter kakaoTalk kakaostory naver band