알고리즘 설계

알고리즘 설계는 문제를 해결하는 수학적인 과정을 만들어내는 특정한 방법이다.  알고리즘 설계는 알고리즘 공학에 적용된다.

알고리즘 설계는 동적 계획법이나 분할 정복 알고리즘과 같은, 운용 과학의 많은 해법에서 확인되고, 통합되어 있다.  알고리즘 설계의 기술에는 템플릿 메소드 패턴이나 데코레이터 패턴과 같은 알고리즘 설계 패턴과 자료 구조, 이름 및 정렬 리스트를 사용하는 것이 있다.  최근에는 웹 크롤링의 인터넷 검색 과정, 패킷 라우팅 및 캐싱 등에서 알고리즘 설계가 사용된다.

알고리즘 설계를 위한 컴퓨팅 도구에는 ALGOL (Algorithmic language에서 유래), FORTRAN, COBOL, PL/I, SAIL, 혹은 SNOBOL과 같은 메인프레임 프로그래밍 언어가 있지만, "알고리즘 설계"는 언어가 아니다. 알고리즘 설계는 수작업을 통한 과정이다. 이를테면, 방정식들의 집합, 손으로 하는 기계적 과정의 연속, 아날로그 장비, 혹은 디지털 과정 및 프로세서 같은 것이다.

알고리즘 설계의 가장 중요한 측면 중 하나는, 점근 표기법으로도 알 수 있는 효율적인 실행 시간을 갖는 알고리즘을 만드는 것이다.

알고리즘을 개발하는 단계 
 문제 정의
 모달(modal) 개발
 알고리즘의 구체화
 알고리즘 설계
 알고리즘의 타당성 검증
 알고리즘 분석
 알고리즘 구현
 프로그램 테스팅
 문서화 준비

유명한 알고리즘 설계 기법들 
 분할 정복 알고리즘
 동적 계획법
 탐욕 알고리즘
 백트래킹

참고 문헌

더 읽을거리 
   Algorithm Design Paradigms - Overview by Paul Dunne at the University of Liverpool
  Stony Brook Algorithm Repository by Steven S. Skiena, Department of Computer Science, State University of New York

알고리즘
운용 과학