수학과 컴퓨터과학, 언어학 또는 엮인 분야에서 어떠한 문제를 풀어내기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차를 의미
출처 : 위키백과
- 간단하게 다시 말하면 어떠한 문제를 해결하기 위한 절차라고 볼 수 있다.
알고리즘이 생소한가?
우리는 이미 흔하게 일상에 알고리즘을 적용하고있다.
지하철 또는 버스를 탈 때를 생각해보자.
먼저 출발지와 도착지를 정한다. 그리고 고민하기 시작한다. 최대한 빠른 노선을 택할 것인가, 앉아서 갈 수 있는 노선을 택할 것인가, 또는 환승을 가장 적게하는 노선을 택할 것인가
어떤 노선을 택하든지 우리는 도착지에 무사히 도착할 수 있을 것이다. 하지만 도착하는 과정은 분명 달리질 것이다.
따라서 우리는 원하는 효율에 따라 적정한 노선을 선택할 것이다
이처럼 코드를 작성할 때 알고리즘에 정답은 없다 -> 다만 효율이 다를 뿐이다
알고리즘의 조건은 무엇인가?
- 입력 : 외부에서 제공되는 자료가 0개 이상 존재
- 출력 : 적어도 2개 이상의 서로 다른 결과(모든 입력에 출력이 같으면 안됨)
- 명확성 : 수행 과정은 명확하고 모호하지 않은 명령어로 구성
- 유한성 : 유한 번의 명령어를 수행 후 종료
- 효율성 : 모든 과정은 명백하게 실행 가능한 것
알고리즘의 효율은 어떻게 측정하는가?
- 우리는 알고리즘의 성능을 다음과 같은 5가지를 통하여 측정할 수 있다.
- 정확성 : 얼마나 정확하게 동작하는가?
- 작업량 : 얼마나 적은 연산으로 원하는 결과를 얻어내는가?
- 메모리 사용량 : 얼마나 적은 메모리를 사용하는가?
- 단순성 : 얼마나 단순한가?
- 최적성 : 더이상 개선할 여지 없이 최적화되었는가?