알고리즘4. 점근적 증가율에 따른 함수 분류

2021. 9. 13. 04:46·Computer Science/알고리즘
반응형

1. Analyzing Algorithms and Problems: Principles and Examples

 

1-3. Classifying Functions by Their Asymptotic Growth Rates 점근적 증가율에 따른 함수 분류

 

Clasifying Functions

asymptotic growth rate점근적 증가율, asymptotic order점근적 순서 또는 order of functions함수 순서

  • asymptotic: input size n이 충분히 커짐을 뜻함
  • n이 충분히 커졌을 때 함수의 증가율
  • 상수 인자와 small input을 무시하는 함수 비교 및 분류.

 

The Sets big oh O(g), big thetaθ(g), big omega Ω(g)

f와 g가 음이 아닌 정수에서 음이 아닌 실수까지의 함수라고 하자.

실수 상수 c > 0 이고 음이 아닌 정수 상수는 n0라고 했을 때 다음 두 상수에 대하여

 

O(g)

  • 모든 n ≥ n0 에 대하여, f(n) ≤ c g(n) 인 함수 f의 집합
  • upper bound
  • g의 증가율보다 작거나 같다

 

big omega Ω(g)

  • 모든 n ≥ n0 에 대하여, f(n) ≥ c g(n) 인 함수 f의 집합
  • lower bound
  • g의 증가율보다 크거나 같다

 

big theta θ(g)

  • O(g) ∩ Ω(g)
  • 두 함수의 교집합
  • f, g 증가율 동일

 

f ∈ θ(g) read as 

“f is asymptotic order g” or “f is order g”

 

 

Comparing Asymptotic Growth Rates 점근적 증가율 비교

f(n) : 분석한 알고리즘의 복잡도

g(n) : 기준이 되는 함수

n이 무한하게 커질 때 f(n)과 g(n)을 비교하면 f가 g에 관해 어떤 notation에 포함되는지 알 수 있다. 

 

 

Asymptotic Growth Rates

 

input size n에 따라 필요한 Basic Operation 수를 나타내는 표

  • n의 크기가 커질 수록 필요한 연산 수는 크게 증가한다.
  • 연산 시 시간이 많이 걸리는 2의 n제곱 함수는 암호설계 시에 사용된다.

Runtime = 필요 연산 수 = 수행 시간

  • n이 충분히 커졌을 때, 1차식 함수가 2차식 함수보다 효율이 좋다.
  • input size n < 25일 때 A는 B보다 더 빠른 시간 내에 문제를 해결한다.
  • input size n = 25일 때 A가 B함수의 증가율을 앞지른다.
  • 즉, 입력 크기가 25 아래일 때는 A 알고리즘을, 25 위일 때는 B 알고리즘을 사용하는 것이 효율적이다.

 

Properties of O(g), θ(g), Ω(g) 이런 게 있구나 정도만 공부. 강의노트에서 앞으로 안 나옴.

Transitive

  • 이행성
  • 논리학의 삼단논법과 비슷한 구조
  • If f ∈ O(g) and g ∈ O(h), then f ∈ O(h) ☞ O is transitive.
  • Ω, θ, o, ω도 transitive 만족

Reflexive

반사성

  • f ∈ θ(f)
  • 동일 함수 f끼리 자리 바꿔도 만족
  • O, Ω도 Reflexive 만족

Symmetric

  • 대칭성
  • If f ∈ θ(g), then g ∈ θ(f)
  • 두 개 함수 다를 때(f, g) 위치 바꿔도 만족
  • 대칭성은 빅세타만 만족

θ defines an equivalence relation(동치 관계) on the functions. ☞ 빅세타만 유일하게 위의 세 가지 특성을 다 만족.

 

Each set θ(f) is an equivalence class (complexity class). ☞ 동치관계이므로, 같은 증가율을 갖는 함수들의 class를 모두 가지고 있다. 

 

f ∈ O(g) ⇔ g ∈ θ(f)

  • 필요충분 조건(if and only if)
  • 함수 자리 바꾸면 노테이션도 바뀜.

 

O(f + g) = O(max(f, g)) 

  • 두 함수의 sum은 두 함수의 max, 즉 최고차항만 보면 됨

ex.

f = 3n² + 7n + 100

g = 5n³ + 3

O(f + g) = O(n³) ▷최고차항만 따지면 된다.

  • Ω, θ 둘 다 max로 정의 가능(min 아님!)

 

Example: Classification of Functions

  • O(1) = O(c) = O(0) : 상수시간. input size n에 관계없이 항상 일정한 수행시간
  • f ∈ θ(n), f is linear(1차식); f ∈ θ(n²), f is quadratic(2차식); f ∈ θ(n³), f is cubic(3차식)

  • lg n의 증가율이 다항함수보다 작다.
  • 이때 α > 0이며, 분수를 포함한다. 즉, α = 1/2일 때 n의 α제곱은 √n이며 이때도 lg n이 기울기가 더 작다.

  • for any k > 0 and any c > 1
  • k가 양수이므로 n^k는 다항식.
  • c > 1이므로 c^n은 지수함수. n이 커지면 c^n 값도 커진다. ↔ if c < 1, n이 커지면 c^n은 점점 0에 수렴한다.
  • n이 점점 커지면 n^k는 임의의 지수함수 c^n보다 작음(천천히 증가. 즉, 증가율이 작음)

*n! 의 증가율 기억해두기★★★

stirling's approximation

1. n! ∈ o(nⁿ) ☞ nⁿ보다 n!의 증가율이 더 작다.

2. n! ∈ ω(2ⁿ) ☞ 2ⁿ보다 n!의 증가율이 더 크다.

3. log(n!) ∈ θ(log nⁿ) ☞ 1번에 양변 로그→ 증가율 같아짐

             ∈ θ(nlog n)

 

 

 

 


자료 출처

Computer Algorithms

(Sara Baase, Allen Van Gelder저, Addison Wesley, 2000)

반응형
저작자표시 비영리 변경금지 (새창열림)

'Computer Science > 알고리즘' 카테고리의 다른 글

알고리즘: Mergesort 합병 정렬  (0) 2021.11.11
알고리즘6. Searching on Ordered Array(정렬된 배열 탐색)(2) - binary search(이진탐색)  (0) 2021.10.03
알고리즘5. Searching on Ordered Array(정렬된 배열 탐색)(1)  (0) 2021.09.27
알고리즘3. 알고리즘과 문제 분석  (0) 2021.09.07
알고리즘2. 수학적 배경지식  (0) 2021.09.02
알고리즘 1. Problem Solving의 절차  (0) 2021.09.02
'Computer Science/알고리즘' 카테고리의 다른 글
  • 알고리즘6. Searching on Ordered Array(정렬된 배열 탐색)(2) - binary search(이진탐색)
  • 알고리즘5. Searching on Ordered Array(정렬된 배열 탐색)(1)
  • 알고리즘3. 알고리즘과 문제 분석
  • 알고리즘2. 수학적 배경지식
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 프로그래밍
        • Programming
        • C | C++
        • Java
        • Python
      • 웹 프로그래밍
        • HTML | CSS
        • JavaScript | TypeScript
        • React
        • Vue.js
        • Next.js
        • Spring & Spring Boot
        • JSP & Servlet
        • DB
      • 웹 프로젝트
        • 웹 프로젝트
        • 🥨스낵몰
        • 👨‍👨‍👧‍👧소셜 가계부
        • 🌜꿈 일기장
        • 🔮포트폴리오 사이트
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼
        • 😺Just Meow It: 고양이의 조언
      • 앱 프로그래밍
        • Flutter
        • Kotlin
      • Problem Solving
        • 백준
        • 프로그래머스
        • SWEA
      • Computer Science
        • 알고리즘
        • 컴퓨터 네트워크
        • 이산수학
      • Developer
        • 후기
        • 자료정리
        • 취업 | 취준
        • 웹개발 교육 프로그램
        • TIL
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    d3
    자바
    플러터
    React
    AWS
    bfs
    리액트
    Til
    spring boot
    구현
    강의내용정리
    ZeroCho
    클론 프로젝트
    백준
    mysql
    자바스크립트
    Jiraynor Programming
    컴퓨터네트워크
    공식문서
    타입스크립트
    뉴렉처
    파이썬
    알고리즘
    Next.js
    프로젝트
    웹사이트
    블로그 제작
    프로그래머스
    SWEA
    포트폴리오
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
알고리즘4. 점근적 증가율에 따른 함수 분류
상단으로

티스토리툴바