더북(TheBook)

7.6 알고리즘

알고리즘(algorithm)의 한 예가 뉴턴법이다. 알고리즘은 문제를 해결하기 위한 기계적인 과정이다(여기서는 제곱근 계산이 문제에 해당한다).

알고리즘이 아닌 것부터 시작하는 게 알고리즘이 무엇인지 이해하는 데 도움이 될 것이다. 한 자리 숫자를 곱하는 방법을 배울 때 아마도 곱셈표, 즉 구구단을 암기했을 것이다. 실제로는 100개의 해답을 암기한 것이다. 이런 종류의 지식은 알고리즘이 아니다.

그런데 만일 당신이 게을러서 몇 가지 트릭을 배웠다고 한다면? 예를 들어 n9의 곱을 구하기 위해 첫 번째 숫자에는 n-1을 쓰고, 두 번째 숫자에는 10-n을 쓴다고 하자. 이 트릭은 한 자리 숫자에 9를 곱할 때의 일반적인 해법이다. 이게 알고리즘이다!

마찬가지로 더하기에서 한 자리를 올리기, 빼기에서 빌려오기, 장제법(long division)에서 배운 기법은 모두 알고리즘이다. 알고리즘의 특징 중에 하나는 알고리즘을 수행하기 위해 어떤 지능도 필요하지 않다는 것이다. 알고리즘은 간단한 규칙에 따라 각 단계가 마지막에서부터 시작되는 기계적인 프로세스다.

알고리즘 실행은 지루하지만, 알고리즘 설계는 흥미롭고, 지적인 도전이며, 컴퓨터 과학의 핵심 부분이다.

사람들이 어려움 없이, 의식적인 생각 없이 자연스럽게 행하는 것들이 알고리즘으로 표현하기에 가장 어렵다. 자연어를 이해하는 것이 좋은 예다. 우리는 모두 자연어를 사용하지만, 어느 누구도 우리가 어떻게 자연어를 사용하는지, 적어도 알고리즘 형태로는 설명하지 못했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.