브래의 슬기로운 코딩 생활
알고리즘의 이해, 표현 방식, 성능 분석 본문
알고리즘의 이해
알고리즘
알고리즘의 조건
알고리즘 = 자료를 이용하여 절차에 맞게 연산을 하는것
알고리즘의 표현 방법
알고리즘의 표현 방법의 종류
순서도를 이용한 도식화
가상코드를 이용한 추상화
가상코드의 형식
지정문 형식과 예
조건문
다단계 조건문
중첩 if문 사용 예) 평균 점수에 따른 등급 계산하기
case 문
case 문 예) 평균 점수에 따른 등급 계산하기
반복문
for 문 - 형식과 제어흐름
while – do 문 - 형식과 제어흐름
do-while 문 - 형식과 제어흐름
함수문
형식과 예
알고리즘의 성능분석
알고리즘 성능 분석 기준
알고리즘 성능 분석 방법
공간 복잡도
시간 복잡도
− 컴파일 시간 : 프로그램마다 거의 고정적인 시간 소요
− 실행 시간 : 컴퓨터의 성능에 따라 달라질 수 있으므로 실제 실행시간 보다는 명령문의 실행 빈도수에 따라 계산
실행 빈도수의 계산
시간 복잡도 예) 피보나치 수열 알고리즘의 빈도수 구하기
시간 복잡도 n<0, n=0, n=1의 경우에 대한 실행 빈도수
알고리즘 성능 분석 표기법
■ 빅오 표기법 (big-O notation) 이란?
- 빅오 표기법은 알고리즘의 효율성을 표기해주는 표기법이다.
- 알고리즘의 효율성은 데이터 개수(n)가 주어졌을 때 덧셈, 뺄셈, 곱셈 같은 기본 연산의 횟수를 의미한다.
- 빅오 표기법은 보통 알고리즘의 시간 복잡도와 공간 복잡도를 나타내는데 주로 사용함.
- 시간 복잡도는 알고리즘의 시간 효율성을 의미하고, 공간 복잡도는 알고리즘의 공간 (메모리) 효율성을 의미한다.
- 시간과 공간 복잡도를 나타내는 방법으로는 점근 표기법이라고 해서
① 빅오(Big-O) ② 빅오메가(big-Ω) ③ 빅세타(big-Θ) 표기법이 있다.
■ 빅오 표기법(Big-O)은 알고리즘 효율성을 상한선 기준으로 표기한다.
- 알고리즘 효율성은 값이 클수록 즉, 그래프가 위로 향할수록 비효율적임을 의미한다.
■ 빅오메가(big-Ω)는 하한선을 기준으로하고, 빅세타(big-Θ)는 상한선과 하한선의 사이를 기준으로 표기한다.
빅-오 표기법 (Big-O)
수학적 정의
함수의 상한을 나타내기 위한 표기법
먼저 실행 빈도수를 구하여 실행 시간 함수를 찾고, 이 함수 값에 가장 큰 영향을 주는 n에 대한 항을 한 개 선택하여 계수는 생략하고 O의 오른쪽 괄호 안에 표시
[알고리즘 1-1]의 피보나치 수열에서 실행 시간 함수는 4n+2이고, 가장 영향이 큰 항은 4n인데 여기에서 계수 4를 생략하여 O(n)으로 표기
빅-오메가 표기법 (big-Ω)
수학적 정의
함수의 하한을 나타내기 위한 표기법
어떤 알고리즘의 시간 복잡도가 Ω(g(n))으로 분석되었다면, 이 알고리즘 수행에는 적어도 g(n)의 수행 시간이 필요함을 의미
빅-세타 표기법 (big-Θ)
상한과 하한이 같은 정확한 차수를 표현하기 위한 표기법
- f(n)= θ (g(n))이 되려면 f(n)= O(g(n))이면서 f(n)= Ω(g(n))이어야 함
빅 오의 자료구조 적용 예
'Class > 자료구조, 알고리즘' 카테고리의 다른 글
자료구조 구현을 위한 C 프로그래밍 기법 - 포인터 (0) | 2023.02.15 |
---|---|
자료구조 구현을 위한 C 프로그래밍 기법 - 배열 (0) | 2023.02.14 |
자료의 표현(2), 자료의 추상화 (0) | 2023.02.09 |
자료구조 개념, 자료의 표현(1) (0) | 2023.02.07 |
자료구조, 알고리즘 출처 (0) | 2023.02.07 |