알고리즘
알고리즘(algorithm)은 주어진 문제를 해결하기 위한 명확하고 체계적인 단계적 절차 또는 명령어의 집합을 의미한다. 특정 입력값을 받아 정해진 단계를 거쳐 원하는 출력값을 생성하는 과정을 기술하며, 컴퓨터 과학뿐만 아니라 수학, 공학, 경제학 등 다양한 분야에서 문제 해결의 핵심적인 도구로 활용된다.
알고리즘은 다음의 주요 특징을 갖는다:
- 명확성 (Definiteness): 각 단계는 모호함 없이 정확하게 정의되어야 한다.
- 유한성 (Finiteness): 유한한 단계를 거쳐 반드시 종료되어야 한다. 무한 루프에 빠지지 않아야 한다.
- 효율성 (Effectiveness): 각 단계는 실행 가능하고 현실적인 시간 내에 완료될 수 있어야 한다.
- 입력 (Input): 0개 이상의 입력을 받을 수 있다.
- 출력 (Output): 최소 1개 이상의 출력을 생성해야 한다.
알고리즘은 문제를 해결하는 방법론을 추상적으로 기술한 것으로, 특정한 프로그래밍 언어에 종속되지 않는다. 따라서 동일한 알고리즘을 다양한 프로그래밍 언어로 구현할 수 있다. 알고리즘의 효율성은 시간 복잡도와 공간 복잡도로 평가되며, 동일한 문제를 해결하는 여러 알고리즘 중 효율성이 높은 알고리즘을 선택하는 것이 중요하다.
알고리즘의 예시로는 정렬 알고리즘 (예: 버블 정렬, 삽입 정렬, 병합 정렬, 퀵 정렬), 탐색 알고리즘 (예: 선형 탐색, 이진 탐색), 그래프 알고리즘 (예: 최단 경로 알고리즘, 최소 신장 트리 알고리즘) 등이 있다.