절차를 명확히 한다는 것
입력으로 무엇을 받고, 어떤 규칙을 따라 처리하며, 무엇을 결과로 내놓는지를 정한다. 컴퓨터 프로그램은 알고리즘을 특정 언어와 실행 환경에 맞게 표현한 것이다. 알고리즘과 프로그램을 언제나 같은 개념으로 보지는 않는다.
간단한 예
정렬된 전화번호부에서 찾을 이름이 앞쪽인지 뒤쪽인지 비교해 범위를 절반씩 줄이는 방식은 이진 탐색의 생각과 닮아 있다. 이 방법은 자료가 정렬되어 있다는 조건이 중요하다. 준비 조건이 맞지 않으면 같은 절차를 그대로 사용할 수 없다.
효율은 어떻게 비교할까?
입력 크기가 커질 때 계산량이 얼마나 늘어나는지 시간 복잡도로 살펴본다. 메모리 사용량은 공간 복잡도로 분석할 수 있다. 실제 속도는 하드웨어와 구현, 입력 특성에도 영향을 받는다.
추천 알고리즘이라는 표현
온라인 추천에서는 정확한 정답 하나가 없는 상황도 많다. 알고리즘이라는 이름 자체가 공정성이나 객관성을 보장하지는 않는다. 어떤 목표와 데이터를 사용했는지를 함께 살펴야 한다.