1 minute read

1-1 복잡성 소개


알고리즘의 규칙

  1. input >= 0 (입력값은 항상 0보다 크다.)(복잡도는 항상 0보다 크다.)

음의 입력값은 시간 복잡도를 고려했을 때 말이 되지 않는 경우.


  1. function은 많은 input이 있을 때 더 많은 작업을 하게 된다.


  1. 시간 복잡도에서는 모든 상수를 삭제한다.(항상 상수는 무시한다.)

만약 어떤 알고리즘의 복잡도가 3n 이라면 3은 고려하지 않고 복잡도는 n이 된다.

즉, 2n, 3n, 10n 모두 복잡도가 n 인 알고리즘인 것.


  1. 큰 숫자만 고려한다.

알고리즘에서는 1보다 작은 수는 신경쓰지 않는다.

알고리즘의 시간 복잡도에 영향을 미치는(무한히 커진 값들) 값만 주목한다.

ex) n^3+n^2+n+5 라는 함수는 곧 “n^3알고리즘” 이라고 말한다.


  1. 시간 복잡도 함수가 log 함수를 포함할 경우 밑은 무시한다.

모든 로그는 서로 배수 관계이다. 그래서 복잡도에 관해서 이야기할 때는 로그의 밑에 대해서는 고려하지 않아도 된다. 로그의 밑은 무시하고 로그 ( logn ) 알고리즘이라고만 말하면 된다.

로그함수는 지수함수의 역함수.

2^3 = 8 👉 “2를 및으로 하는 8의 로그는 3과 같다.”


  1. 등호를 사용하여 표현한다.(2n=O(n) => 2n \in O(n)2nO(n) )

2n2n 은 O(n)O(n) 과 같다. 여기서 O(n)O(n) 은 2n2n 이 어떤 함수의 집합에 속한다는 의미를 가짐. 그렇기 때문에 아래와 같은 등호를 활용하여 이 관계를 수학적으로 쓸 수 있다.




생각해보기

1)시간 복잡도가 1이거나 n인 것은 각각 무엇을 의미할까요?

시간 복잡도 1 : 입력값(n)의 크기와 관계 없이 수행하는 시간이 일정함.

시간 복잡도 n : 입력값(n)의 크기에 따라 수행 시간이 같은 비율(n만큼)로 증가.




References

자바로 구현하고 배우는 자료구조 -Rob Edwards (boostcourse)

Updated:

Leave a comment