Big-oh(O)

f g 각각 양의 정수를 갖는 함수라  , 만일 어떤  양의 상수 a b 존재하고, 모든 n  b 대하여, f(n)  a*g(n)이면 f(n) = O(g(n))이다.


함수 ex1() 소스 코드는 다음과 같이 분석할  있다.

함수 ex1() 경우

실행 빈도수

void ex1(int n) {

-

    int count = 0;

1

    int i;

1

    for (int i = 0; i < n; i++)

n + 1

        count++;

n

}

-

 

따라서 함수 ex1() 프로그램 단계들의  실행 빈도수,

 실행 시간은 2n+3  된다. 그러나  보고서에서 실행 시간은 count값으로 하기 때문에 실행 시간은 n  된다.

여기서

big-oh 표기법으로 나타내면

f(n) = n, g(n) = n 으로 놓으면

nb  모든 n 대하여 n  a*n  a b

a = 2, b = 1  정할  있으므로

함수 ex1() 시간 복잡도는 O(n) 으로   있다.

 


 

함수 ex2() 소스 코드는 다음과 같이 분석할  있다.

함수 ex2() 경우

실행 빈도수

void ex2(int n) {

-

    int count = 0;

1

    int i;

1

    for (int i = 0; i < n; i+=2)

(n / 2) + 1

        count++;

n / 2

}

-

 

따라서 함수 ex2() 실행 시간(count ) n/2  된다.

여기서

big-oh 표기법으로 나타내면

f(n) = n/2, g(n) = n 으로 놓으면

n≥b 인 모든 n에 대하여 n/2 ≤ a*n  a b

a = 1, b = 1 로 정할 수 있으므로

함수 ex2() 시간 복잡도는 O(n) 으로   있다.

 




함수 ex3() 소스 코드는 다음과 같이 분석할  있다.

함수 ex3() 경우

실행 빈도수

void ex3(int n) {

-

    int count = 0;

1

    int i;

1

    for (int i = 0; i < n*n; i+=2)

((n*n) / 2) + 1

        count++;

((n*n) / 2)

}

-

 

따라서 함수 ex3() 실행 시간(count ) (n^2)/2  된다.

여기서

big-oh 표기법으로 나타내면

f(n) = (n^2)/2, g(n) = n^2 으로 놓으면

n≥b 인 모든 n에 대하여 (n^2)/2 ≤ a*(n^2)  a b

a = 1, b = 1 로 정할 수 있으므로

함수 ex3() 시간 복잡도는 O(n^2) 으로   있다.

 

 



함수 ex4() 소스 코드는 다음과 같이 분석할  있다.

함수 ex4() 경우

실행 빈도수

void ex4(int n) {

-

    int count = 0;

1

    int i, j;

1

    for (int i = 0; i < n; i++)

n + 1

        for (int j = 0; j <= i; j++)

((n * (n+1)) / 2) +1

            count++;

(n * (n+1)) / 2

}

-

 

따라서 함수 ex4() 실행 시간(count ) (n^2)/2+n/2  된다.

여기서

big-oh 표기법으로 나타내면

f(n) = (n^2)/2+n/2, g(n) = n^2 으로 놓으면

nb  모든 n 대하여 (n^2)/2+n/2  a*(n^2)  a b

a = 1, b = 1  정할  있으므로

함수 ex4() 시간 복잡도는 O(n^2) 으로   있다.

 

 


 

함수 ex5() 소스 코드는 다음과 같이 분석할  있다.

함수 ex5() 경우

실행 빈도수

void ex5(int n) {

-

    int count = 0;

1

    int i, j;

1

    for (int i = 0; i < n*n; i++)

n*n + 1

        for (int j = 0; j <= i; j++)

((n*n * (n*n+1)) / 2)+1

            count++;

(n*n * (n*n+1)) / 2

}

-

따라서 함수 ex5() 실행 시간(count ) (n^4)/2+(n^2)/2  된다.

여기서

big-oh 표기법으로 나타내면

f(n) = (n^4)/2+(n^2)/2, g(n) = n^4 으로 놓으면

nb  모든 n 대하여 (n^4)/2+(n^2)/2  a*(n^4)  a b

a = 1, b = 1  정할  있으므로

함수 ex5() 시간 복잡도는 O(n^4) 으로   있다.

'ECT' 카테고리의 다른 글

연결리스트  (0) 2015.06.25
markdown  (0) 2015.05.01
Github master branch 삭제하기  (0) 2014.08.06
Github error : needs merge  (1) 2014.08.05
github error : 'commit' is not possible because you have unmerged files.  (0) 2014.08.05

+ Recent posts