더북(TheBook)

4.1 알고리즘 설계의 기본 개념 살펴보기

아메리칸 헤리티지 사전에 따르면 알고리즘의 정의는 다음과 같습니다.

“어떤 초기 조건이 주어졌을 때, 특정 목표를 달성하기 위해 규정된 순서에 따라 수행될 수 있으며, 인식 가능한 최종 조건 집합을 가진 명료한 요구사항으로 구성된 유한한 집합이다.”

알고리즘을 설계한다는 것은 ‘특정 목표’를 가장 효율적으로 달성할 수 있는 ‘명료한 요구사항으로 구성된 유한한 집합’을 고안하는 것입니다. 좋은 알고리즘을 설계하기 위해서는 먼저 우리가 풀려는 문제를 완벽히 이해해야 합니다. 무엇을 완료해야 하는지(요구사항)를 파악한 후에 어떻게 완료할 것인지(알고리즘 설계)를 고민해야 합니다. 문제 이해 단계에서는 문제가 가진 기능적 요구사항과 비기능적 요구사항을 모두 파악해야 합니다.

기능적 요구사항은 우리가 풀려는 문제가 가진 입력과 출력 인터페이스와, 이에 관한 함수를 의미합니다. 기능적 요구사항을 통해 우리는 기대하는 결과를 얻기 위해 구현해야 할 데이터 처리, 가공 및 연산 과정을 이해할 수 있습니다.

비기능적 요구사항은 알고리즘의 성능과 보안에 관한 기대치를 설정합니다. 알고리즘 설계란 결국 실행에 필요한 자원과 제약 조건을 만족하면서 기능적 요구사항과 비기능적 요구사항을 최대로 만족하는 방법을 찾아내는 것이라 할 수 있습니다.

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