일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 관계형 데이터베이스
- ERD
- java
- 기초프로그래밍
- SW
- 예외처리
- CS 기초지식
- 상속
- 모두를 위한 컴퓨터 과학(CS50)
- 데이터베이스 모델링
- WebProgramming
- exception
- CS50
- ssafy
- w3schools
- 모두를 위한 컴퓨터 과학
- Compute Science
- 삼성청년SW아카데미
- Java Programming
- 이진법
- SSAFY 9기
- Computer Science
- 알고리즘
- edwith
- 객체지향
- 면접을 위한 CS 전공지식 노트
- til
- 부스트코스
- CS 기초
- CS기초지식
- Today
- Total
Joslynn의 하루
[자료구조] 복잡성 본문
시간 복잡도
시간 복잡도는 서로 다른 알고리즘의 효율성을 비교할 때 사용
- Rule 1: input \geq≥ 0
- Rule 2: functions do more work
for more input
- Rule 3: drop all constants
- Rule 4: ignore lower order terms
- Rule 5: ignore the base of logs
- 2n = O(n)2n=O(n) => 2n \in O(n)2n∈O(n)
규칙 1. 입력값(n)은 항상 0보다 크다.
: 입력값이 음수일 수는 없다.
: 복잡도는 항상 0보다 크다고 가정하고 계산
규칙 2. 함수는 많은 입력값이 있을 때 더 많은 작업을 하게 된다.
: 더 많은 입력값이 주어지면 어떤 작업을 하는 데 필요한 계산이나 처리 시간이 길어진다.
규칙 3. 시간 복잡도에서는 모든 상수를 삭제한다.
: 만약 어떤 알고리즘의 복잡도가 3n 이라면 3은 고려하지 않고 시간 복잡도는 n이 된다.
: 2n, 3n, 10n 모두 복잡도가 n인 알고리즘이다.
규칙 4. 낮은 차수의 항들은 무시한다.
: 시간 복잡도에서는 n과 n^2을dmf 비교할 때에는 항상 n^2이 더 오래 걸리는 알고리즘이라고 판단한다.
: 여기서 의문이 들 수 있는 점은 그래프에서 (1,1)인 지점 전까지는 n이 더 오래 걸릴 수 있다는 것
: 하지만 알고리즘에서는 입력값( n )이 1보다 작은 값은 고려하지 않고 큰 값에 대해서만 생각을 하므로 n이 무한으로 커진 경우를 가정하고 비교해야 한다.
: 이런 이유로 시간 복잡도에서는 낮은 차수의 항들은 무시
: n^3 + n^2 +n 이라는 함수가 있을 때, n 과 n^2은 알고리즘의 시간 복잡도에 영향을 미치지 않고, 입력값이 무한이 될 때 고려해야 할 부분은 n^3이다.
규칙 5. 시간 복잡도 함수가 log 함수를 포함할 경우 밑은 무시한다.
: 모든 로그는 서로 배수 관계
: 복잡도에 관해서 이야기할 때는 로그의 밑에 대해서는 고려하지 않아도 된다.
: 로그의 밑은 무시하고 로그 ( logn) 알고리즘이라고만 말하면 된다.
: 복잡도가 log 인 알고리즘은 보통 무언가를 반으로 나누거나 2를 곱한 경우에 자주 사용된다.
: 만약 for 반복문을 사용해서 무언가를 탐색하면서 반으로 나누거나 2를 곱할 때 복잡도는 밑이 2인 로그가 된다.
: 10으로 나누거나 10을 곱하게 되면 밑이 10인 로그가 된다.
: 하지만 시간 복잡도를 표시할 때에는 로그의 밑은 무시하고 그냥 log n 복잡도를 가진다고 표현한다.
규칙 6. 등호를 사용하여 표현한다.
: 2n은 O(n)과 같다.
: O(n)은 2n이 어떤 함수의 집합에 속한다는 의미를 가진다.
: 그렇기 때문에 아래와 같은 등호를 활용하여 이 관계를 수학적으로 쓸 수 있다.
2n = O(n), 2n ∈ O(n)
'자료구조' 카테고리의 다른 글
[자료구조] 빅 오 표기법 (0) | 2022.08.23 |
---|