📌 알고리즘
알고리즘 (Algoritmh)은 컴퓨터 과학에서 사용되는 문제 해결을 위한 일련의 계산 절차 또는 처리 순서를 의미한다.
입력을 받아 정해진 규칙에 따라 처리하여 원하는 결과를 도출할 수 있으며, 이러한 절차들은 모호하지 않고, 누구나 동일한 결과를 얻을 수 있도록 정확하고 엄격해야 한다.
💡 조건
- 입력과 출력 : 반드시 0개 이상의 입력과 1개 이상의 출력이 존재해야 한다.
- 유한성 (Finiteness) : 알고리즘의 순서대로 진행했을 때 처리된 후 반드시 종료되어야 한다.
- 명확성 (Definiteness) : 각 단계는 명확하고 애매함이 없는 명령어로 구성되어야 한다.
- 유효성 (Effectiveness) : 모든 명령들은 컴퓨터에서 실행 가능해야 한다.
- 효율성 (Efficiency) : 알고리즘은 효율적인 구조여야 하며, 입력의 크기에 따라 적절한 시간 내에 실행되어야 한다.
💡 표현
- 일상 언어 (자연어)
- 흐름도 / 순서도 (Flowchart)
- 의사코드 (Pseudo-Code)
- 프로그래밍 언어
이 중 일반적으로 의사코드 (Pseudo-Code)를 가장 많이 사용한다.
💡 성능 분석
알고리즘은 효율성과 정확성을 성능의 기준으로 한다.
- 효율성 : 문제의 입력 크기가 증가함에 따라 처리 시간 및 소요 메모리가 얼마나 증가하는가를 분석한다. 즉, 시간 복잡도와 공간 복잡도를 뜻한다.
- 정확성 : 알고리즘이 항상 올바른 결과를 내는지를 수학적으로 분석한다.
흔히 말하는 좋은 알고리즘이란 위 두가지 요소가 높은 알고리즘을 뜻하는 것이다.
💡 분류
알고리즘은 주제별 / 설계 기법별로 분류가 가능하다.
- 알고리즘의 주제별 분류
- 탐색 알고리즘 (선형 검색, 이진 검색 등)
- 정렬 알고리즘 (버블 정렬, 선택 정렬, 삽입 정렬 등)
- 그래프 알고리즘 (그래프 순회, 최단 경로등) 등
- 알고리즘의 설계 기법별 분류
- 분할 정복 (병합 정렬, 퀵 정렬등)
- 그리디 알고리즘 (최소비용 신장트리)
- 다이나믹 프로그래밍
- 백트래킹
Reference
알고리즘 - 위키 백과
Algorithm 알고리즘 - 정보통신기술용어해설
알고리즘이란? - 다빈치코딩 알고리즘
Algorithm - 알고리즘 핵심정리
IT 관련 용어 [알고리즘]이란 무엇일까?
[Algorithm] 알고리즘이란?
알고리즘의 개념과 알고리즘의 조건