알고리즘의 사전적인 의미는 문제 해결 방법이다. 이를 컴퓨터 시스템에 적용하자면 대략 '컴퓨터를 이용한 문제 해결 방법'이라고 말할 수 있다. 하지만, 이렇게 포괄적인 의미로 전공 분야의 개념을 사용하면 혼란스러울 수 있다. 따라서 알고리즘의 의미를 엄격하게 명시하자면, '특정 문제를 풀기 위한 단계적인 절차', '문제 해결 방법을 추상화하여 단계적 절차를 논리적으로 기술해 놓은 명세서'라고 할 수 있다.
알고리즘은 특정한 일을 수행하는 명령의 유한 순서 집합으로서 여러 특성을 만족시켜야 한다. 첫 번째로 0개 이상의 입력(input)을 가질 수 있어야 한다. 알고리즘 수행에 필요한 자료가 외부에서 입력되면서 제공되어야 한다.
두 번째로 반드시 한 개 이상의 출력(output)을 생성해야 한다. 알고리즘 수행 후, 하나 이상의 결과를 출력해야 한다. 세 번째로 각 명령은 그 의미가 명확해야 한다. 수행할 작업의 내용과 순서를 나타내는 알고리즘의 명령어들은 명확하게 명시돼야 한다.
네 번째로 유한한 횟수의 명령을 수행하고 나면 반드시 종료되어야 한다. 마지막으로 각 명령은 효과적이어야 한다. 알고리즘의 모든 명령어는 기본적이며, 실행이 가능해야 한다.
많은 사람이 잘못 이해하는 것과 달리 알고리즘과 프로그램은 다른 개념이다. 일상에서 두 개념을 혼용하여 사용하기도 하지만, 알고리즘은 특정 문제의 해결 방법 자체를 나타낸 것이다. 그리고, 그 알고리즘을 구현한 것을 프로그램이라고 한다.
한편, 미국의 철학자이자 과학자인 대니얼 데닛은 자신의 저서 『직관 펌프, 생각을 열다』를 통해 알고리즘의 세 가지 핵심 특징에 대해서 이야기 했다.
첫 번째로 알고리즘은 그 절차적 논리에 의해 결과를 도출하며, 재료가 갖는 인과적 힘은 알고리즘의 작동에 어떤 영향을 갖지 않는다는 재료 중립성(substrate neutrality)을 이야기했다.
두 번째로는 알고리즘 절차의 세분화된 일련의 단계는 별다른 의미 해석이 요구되지 않을 만큼 지극히 단순하다고 말하는 마음 없는 토대(underlying mindlessness)를 언급했다.
마지막으로 알고리즘이 각 단계에서 실수나 오류없이 진행된다면, 최종단계에서는 반드시 성공적인 결과를 산출한다는 결과보장(guaranteed result)에 대해서도 이야기 하였다.
[저작권자ⓒ CWN(CHANGE WITH NEWS). 무단전재-재배포 금지]