알고리즘이란 이름은 페르시아 수학자 알라콰즈미(al-Khwarizmi 서기 780 ~ 850년)로부터 유래되었다.
알고리즘은 문제를 해결하는 단계적 절차 또는 방법이다.
입력이 주어지고, 수행 결과인 해(또는 답)을 출력한다.
알고리즘의 특성
- 정확성
알고리즘은 주어진 입력에 대해 올바른 해를 주어야 한다.
- 수행성
알고리즘의 각 단계는 컴퓨터에서 수행이 가능하여야 한다.
- 유한성
알고리즘은 유한 시간 내에 종료되어야 한다.
- 효율성
효율적일수록 그 가치가 높아진다.
알고리즘은 항상 시간적, 공간효율성을 갖도록 고안되어야한다.
알고리즘의 분류
- 분할 정복
- 그리디
- 동적 계획
- 근사
- 백트래킹
- 분기 한정
그 외에도 확률 개념이 사용되는 랜덤, 병렬, 분산, 양자 알고리즘 등이 있다.