d라이브러리









2. 실제 실험 뛰어넘는 컴퓨터 시뮬레이션 컴퓨터의 강력한 오른팔 알고리즘

자연과학이나 공학 분야에서 컴퓨터 모의실험은 과거의 이론과 실험 연구의 한계를 벗어나게 해 주고 있다. 여기에는 응용수학의 결실이 녹아 있다는데 …. 과연 무엇일까.

제2차 세계대전에서 포탄의 궤도표를 만들기 위해 미국방성은 펜실베이니아대의 모클리와 에커트에게 연구를 의뢰했다. 그 결과, 1946년 에니악이 탄생했다. 이것은 전자식 자동계산기로, 컴퓨터 역사는 여기에서부터 시작된다. 즉 에니악은 복잡하고 양이 많은 계산을 정확하고 신속하게 하기 위해 고안된 것이었다.

그러나 에니악은 계산해야 될 프로그램이 바뀔 때마다 6천여개의 스위치를 조절해서 전선을 다시 연결해야 했다. 따라서 스위치 조작과 전선 결합에 많은 시간이 소요돼, 프로그램 변경이 어려웠다.

이러한 문제를 해결하기 위해 수학자 폰 노이만은 프로그램을 컴퓨터에 기억시키는 프로그램 내장방식을 연구했다. 그리고 1951년 프로그램 내장방식의 컴퓨터 에드박을 완성했다.

프로그램 내장방식이란 처리방법과 순서를 먼저 작성해 컴퓨터 기억장치에 기억시키고 저장된 명령에 따라 자동적으로 처리하는 방식이다. 결국 어떤 작업을 하기 위해서는 미리 일의 순서를 정해야 한다는 말이다. 이러한 일의 순서를 ‘알고리듬’이라 부른다. 컴퓨터는 개발 초기에서부터 알고리듬에 의해서 작동됐다. 프로그램을 작성한다는 것은 이러한 알고리듬을 컴퓨터가 이해할 수 있는 언어를 사용해 구현하는 것이다.

컴퓨터 계산에서 발생하는 오차 문제

우리가 하나의 수학문제에 대해 같은 해답을 얻는다 해도 여러가지 답안이 나올 수 있다. 그리고 이 중에는 좋은 답안이 있고 그렇지 않은 것도 있다. 마찬가지로 컴퓨터에게 같은 일을 시키더라도 여러가지 알고리듬이 존재하는데, 좋은 것과 그렇지 않은 것이 있다. 그렇다면 좋은 알고리듬이란 어떤 것일까.

알고리듬을 고안할 때 가장 먼저 고려하는 것은 사용할 컴퓨터다. 먼저 컴퓨터 구조의 특성을 잘 이용해야 한다. 예를 들어 PC를 사용하는 경우와 벡터 컴퓨터를 사용하는 경우, 그리고 수백-수천개의 중앙처리장치(CPU)를 장착한 집적 병렬 컴퓨터를 사용하는 경우에 따라서 운영되는 알고리듬이 달라져야 한다. 현재 그 가능성이 타진되고 있는 양자컴퓨터가 개발되면 이에 맞는 알고리듬이 개발돼야 한다. 즉 새로운 컴퓨터 구조가 등장할 때마다 이에 알맞은 알고리듬의 개발이 활발하게 이뤄진다. 또한 이러한 연구가 새로운 컴퓨터 구조 개발의 견인차 역할을 하고 있다.

그런데 알고리듬 고안에는 컴퓨터 구조 못지 않게 고려해야 할 중요한 문제가 있다. 바로 수학적인 문제가 그것이다. 어떤 이유에서일까.

입력된 알고리듬에 따라 컴퓨터가 명령을 수행할 때 컴퓨터는 실수나 정수를 이용한 계산을 한다. 컴퓨터에서 실수를 표현할 때는 맨 처음 나타나는 0이 아닌 숫자부터 시작해 일정한 자리 수만큼만 저장하는 ‘부동(浮動)소수점’이라는 표현방법을 사용한다.

예를 들어, 만약 x``를 실수라 할 때 fl(x)를 다섯자리만 저장하는 부동소수점 표현이라고 하면 fl(0.002271828)=0.22718×10-2이고 fl(3000527.11059)=0.30005×107이 된다. 이처럼 부동소수점 표현에서는 정해진 자리수를 넘는 수는 버린다. 때문에 오차가 발생할 수밖에 없다. 이 값을 다시 반복해서 계산에 쓰이면 오차가 점점 커진다.

자연현상에서 생기는 대부분 문제는 연속적인 운동을 기술하는 문제이기 때문에 이에 관한 수학문제는 실수로 표현되고 따라서 우리가 아무리 정확한 계산을 하더라도 항상 오차가 존재한다(이와 같은 수학문제를 ‘연속수학의 문제’라고 부른다).

그러나 이와 같은 오차에도 불구하고 알고리듬은 그 계산결과를 믿을 수 있도록 작성돼야 한다. 이를 ‘안정성’이 있는 알고리듬이라 부른다. 안정성은 계산과정에서 발생한 오차가 계산이 계속 진행되면서 증폭되지 않는다는 것을 의미한다. 아무리 뛰어난 사람이 프로그램을 작성하더라도 사소한 실수가 있기 마련이다. 안정적인 알고리듬은 이런 사소한 실수가 있어도 믿을만한 결과를 만들어준다.

만약 제주도 성산 일출봉의 분화구 안에서 축구를 할 때 웬만큼 세게 차도 공이 자기 자신에게 다시 돌아올 것이다. 그러나 설악산 대청봉 위에서는 공을 아주 조심스럽게 다뤄야 한다. 공을 약하게 차더라도 산을 굴러내려 갈 뿐 아니라 약간의 방향 차이에 의해서 공의 종착지가 완전히 달라질 수 있다. 전자를 ‘안정성이 있다’고, 후자를 ‘안정성이 없다’라고 표현한다. 즉 약간의 변화가 예측할 수 없을 정도로 큰 변화를 일으키면 안정성이 없다라고 한다.

약간의 실수는 용납

결국 안정성이 있는 알고리듬이란 하드웨어 결함, 프로그래밍상의 실수, 데이터의 입력 잘못에도 불구하고 어느 정도의 범위 내에서는 언제든지 믿고 쓸 수 있는 알고리듬을 의미한다. 사실 안정성이란 지극히 수학적인 개념이며 이의 분석을 위해 푸리에 해석학과 같은 고급수학이 사용된다.

안정성과 더불어 중요한 수학적인 문제로는 ‘수렴성’이 있다. 연속수학의 문제와 관련된 많은 알고리듬의 고안 과정에서는 원하는 해를 직접 찾기보다는 같은 작업을 반복해 근사해를 찾는 방법을 택한다. 쉽게 말하자면 방정식의 해를 직접 구하지 않고 그 해로 수렴하는 수열을 만들어서 그 해에 가까운 수열의 적당한 항을 근사해로 택하는 것이다.

예를 들어, f(x)=0``이라는 방정식의 해를 구하는데 적당한 x0를 택한 다음 xn+1 = xn - f(xn) /f′(xn)``을 이용해 수열 {xn}n=0∞ = 0을 만든다. 이를 뉴턴(Newton)의 방법이라 부른다. 이는 xn에서 f(x)의 접선이 x축과 만나는 교점을 xn+1로 택하는 알고리듬이다. 만약 f(x)= x2이라면 0이 아닌 x0를 택해 수열 {xn}n=0∞ =0이 0 즉 f(x)=0의 해로 수렴함을 알 수가 있다.

이런 경우에 알고리듬에서 제시된 수열이 해로 수렴함을 수학적으로 보여야 하는데 이것을 알고리듬의 수렴성이라 한다. 물론 이 경우에는 수를 부동소수로 표현하는 것이 아니라 수학적으로 수를(즉, 무한자리 수를 이용해) 표현함을 가정하고 있다. 즉 수렴성이란 어떤 알고리듬을 적용해 구한 해가 옳은지 또는 얼마나 실제 해에 가까운지를 보이는 것이다. 일반적으로 직접해법보다는 이러한 반복해법의 계산량이 훨씬 적으며 또한 병렬컴퓨터에 사용하기도 훨씬 용이하다.

알고리듬의 고안에서 또다른 문제로 ‘복잡성’이 있다. 복잡성은 계산량과 밀접한 관련이 있다. 데이터의 크기가 n``일 때 알고리듬의 계산량이 n이냐, nlogn``이냐, np(p≥2)이냐를 측정하는 것이다.

예를 들어 어떤 지역의 기상예측을 위해 10km 간격으로 점을 찍어서 기후에 관련된 계산을 한다고 가정하자. 그리고 이 계산에 사용된 알고리듬의 복잡성이 n3이고, 계산하는데 10분이 소요된다고 하자. 그런데 좀더 정확한 예측을 하기 위해 5km 간격으로 줄여서 계산을 한다면 어떻게 달라질까. 우선 필요한 데이터의 크기는 4배로 늘어난다. 따라서 계산량은 64배가 돼 계산에는 무려 약 11시간이 소요된다. 이처럼 복잡성의 정도를 통해 데이터의 양이 증가할 때 어느 정도로 알고리듬의 계산량이 증가하는지를 알 수가 있다. 가장 이상적인 알고리듬의 계산량은 n이다.

안정성, 수렴성, 그리고 복잡성이 수학적으로 검증된 알고리듬을 ‘수학적 알고리듬’이라 부른다. 컴퓨터 개발 초창기부터 이러한 수학적 알고리듬이 사용돼 왔다.

실험보다 월등한 역할 수행

이제 컴퓨터를 이용해 문제를 해결하는 과정을 구체적으로 살펴보자. 이 과정은 크게 수학적 모형화, 수학적 분석, 수치적 분석, 수치 실험 등 네단계로 나눌 수 있다. 수학적 모형화는 해결하고자 하는 문제를 물리학, 생물학, 경제학, 심리학 등의 기본 가설이나 법칙을 사용해 여러가지 수학적 문제로 변형하는 단계다. 이때 문제의 발생 근원에 대한 깊은 이해를 필요로 한다.

수학적 분석은 수학적 모형화 과정을 거쳐 생성된 수학적 문제를 수학의 이론을 적용해 분석하는 단계다. 이는 알고리듬 개발의 기초가 된다. 수치적 분석은 수학적 분석에서 이뤄진 결과를 이용해 실제 계산하게 될 계산모형을 만들고 이것의 해를 어떻게 컴퓨터를 이용해 구할 것인지에 대한 알고리듬을 개발하고, 알고리듬의 안정성, 수렴성, 그리고 복잡성 등을 분석하는 단계다.

마지막으로 수치 실험은 가장 효율적인 수학적 알고리듬에 따라 프로그램을 작성해 원래 문제를 해결하는 단계다. 효율성은 경제성과 밀접한 관련이 있다. 단지 빠르게 문제를 푸는 알고리듬이 효율적인 것만은 아니다. 적절한 메모리 사용과 프로그래밍의 난이도, 계산량, 병렬화 가능성 등을 함께 연관지어서 투자액수와 노력 대 성능의 비례값을 최적화시켜야 할 것이다.

지난 30년 동안 컴퓨터의 눈부신 발전과 훨씬 빠르고 안정적인 알고리듬의 개발, 이에 기반을 둔 다양한 소프트웨어의 개발이 이뤄졌다. 이와 함께 컴퓨터 영상기술이 발전했다. 이로 인해 과학과 공학, 전산학 분야에서 보다 복잡한 현상에 대한 컴퓨터 모의실험이 가능해졌다.

이전에는 모의실험이 자연에서 발생하는 물리현상에 대해 정확한 결과를 제공하지 못했기 때문에 실제 실험의 보조역할에 머물렀다. 그러나 이제는 컴퓨터 모의실험이 자연현상의 이해, 우주탐험, 국방, 암호개발, 뇌 이해, 유전자 분석 등 여러 분야에서 활발하게 이용되고 있다. 실제 실험보다는 컴퓨터 모의실험 또는 이와 연계된 실험이 시간, 비용, 그리고 정확성 면에서 보다 효율적이라고 많은 자연과학이나 공학에서 입증됐다. 그리고 실험 자체가 불가능한 경우도 모의실험을 통해 연구되고 있다.

특히 최근 모의실험은 의료장비, 인공장기 개발에 이용되고 있으며 염기배열과 유전자의 표현상태, 유전자형 등의 유전자관련 연구에서 수학과 생물학을 접목시키는 중요한 역할을 하고 있다. 이 분야에서는 분자들의 상호작용을 이해할 수 있는 새로운 이론과 개념의 개발을 위해 복잡한 계산모형을 이용한 대용량의 모의실험이 필요하다
.
한편 컴퓨터 알고리듬은 연속수학의 문제와는 다른 개념의 ‘이산수학의 문제’에서도 중요하다. 이산수학의 문제는 정수로 표현되기 때문에 계산에서 부동소수점의 문제는 없으나 표현할 수 있는 정수의 자리수를 늘리는 문제가 있다. 주로 암호학, 신경망모형과 같은 분야에서 쓰이는 알고리듬의 경우가 이산수학의 문제를 고려해야 한다. 이산수학의 문제는 자연현상보다는 인간의 행위나 사회현상에 대한 이론이 적용되는 분야다.

하드웨어보다 기여도 커

컴퓨터 하드웨어와 수학적 알고리듬의 발달 비교


컴퓨터로 인한 혁명적인 변화 결과로 자연과 공학 분야에서 이론과학과 실험과학을 보완해주는 ‘과학계산’이라는 새로운 분야가 태동했다. 과학계산은 모의실험의 대상을 염두에 두고서 효율적인 수학적 알고리듬을 개발하는 분야다. 바로 응용수학의 주요 분야 중 하나다.

‘누구든지 프로그램을 짤 수 있다’는 것은 ‘누구든지 글을 쓸 수 있다’는 것과 마찬가지 사고다. 누구든지 글을 쓸 수는 있지만 누구든지 글을 잘 쓸 수 있는 것은 아니다. 글을 잘 쓰기 위해서는 많은 시간의 습작이 필요하듯 프로그램을 잘 짜기 위해서는 많은 연습이 요구된다. 수학적인 문제를 컴퓨터 프로그램으로 옮기는 작업은 거기에 사용되는 알고리듬의 구조와 정확성, 수렴성, 안정성, 복잡성에 관한 깊은 이해가 필요하다.

오늘날의 과학과 공학, 전산학은 복잡한 문제를 풀기 위해서 컴퓨터를 사용하고 있다. 이를 위해서는 수학적 분석을 요구하고 이러한 분석은 그 문제의 발생 근원에 대한 깊은 이해를 필요로 한다.

지난 30년간 컴퓨터 하드웨어와 수학적 알고리듬 발달의 비교자료에 따르면, 수학적 알고리듬이 컴퓨터의 계산속도에 얼마나 기여했는지를 알 수 있다. 하드웨어 발전의 기여도보다 수학의 기여도가 더 크다. 그래서 “어제의 컴퓨터에 오늘의 알고리듬은 오늘의 컴퓨터에 어제의 알고리듬보다 더 빠르다”(Today’s algorithm on yesterday’s computer is faster than yesterday’s algorithm on today’s computer)는 말이 있을 정도로 수학적 알고리듬이 얼마나 제대로 구현되는지가 컴퓨터 계산속도의 중요 요인이다.

막강한 처리능력을 자랑하는 고가의 최신 기종 슈퍼컴퓨터는 아주 특수한 위치에 있는 사람들만 사용할 수 있다. 하지만 좋은 알고리듬은 공개 프로그램으로 제작돼 PC에서도 누구나 사용할 수 있도록 보급되고 있다.
 

2001년 07월 과학동아 정보

  • 이창옥 교수

🎓️ 진로 추천

  • 컴퓨터공학
  • 수학
  • 물리학
이 기사를 읽은 분이 본
다른 인기기사는?