Chapter 3.2 함수의 증가

MoonLight·2021년 6월 3일
0

컴퓨터수학1

목록 보기
7/8
post-thumbnail



Orders of Growth - 개요


  • 우리는 과연 함수가 얼마나 빨리 증가하는 지에 대해서 알 필요가 있다.
  • 만약 f(x)f(x)g(x)g(x)보다 빨리 증가한다면, 궁극적으로 f(x)f(x)의 값이 g(x)g(x)의 값보다 커진다.

order : 거듭제곱(power), 차수


Orders of Growth - 동기


  • 당신이 사용자의 데이터를 처리하기 위한 웹사이트를 구축하고 있다고 가정해보라.
  • Suppose database:
    • 프로그램 A는 n행(records)을 처리하는데 fA(n)=30n+8f_A(n)=30n+8 microseconds의 시간이 걸리고,
    • 프로그램 B는 n행(records)을 처리하는데 fB(n)=n2+1f_B(n)=n^2+1 microseconds의 시간이 걸린다.
  • 당신이 수백만명의 사용자들의 데이터가 있는 웹사이트를 구축한다면, 어느 프로그램을 사용하겠는가?

Visualizing Orders of Growth

  • n이 커질 때, 더 빠른 함수(B)는 결국 함수(A)보다 더 커진다..

Concept of Orders of Growth

  • 우리는 fA(n)=30n+8f_A(n)=30n+8O(n)O(n) 이라고 한다.( Big-O notation )
  • fB(n)=n2+1f_B(n)=n^2+1O(n2)O(n^2)라고 한다.
  • 어느 O(n2)O(n^2)이라도 O(n)O(n)보다 더 빠르게 성장한다.
  • O(n2)O(n^2)이 수백만명의 사용자에 대하여 시간이 더 많이 걸릴 것이다.

Definition: O(g)

  • ggRRR→R인 어떤 함수라고 하자.

  • 그럼 O(g)O(g)는 다음과 같다:

    {f:RRc,k:x>k:f(x)cg(x)}\{f:R→R ∣ ∃c,k: ∀x>k: f(x) ≤ cg(x)\}

    • x>kx>k일 때, 항상 f(x)cg(x)∣f(x)∣ ≤ ∣cg(x)∣를 만족하는 상수 c,kc, k가 존재하면 ffO(g(x))O(g(x))라 정의한다.
  • "ff의 최대차수는 gg" or "ff is O(g)O(g)" , or "ff=O(g)O(g)"는 모두 fO(g)f∈O(g)를 뜻한다.

  • 일반적으로 "오더 gg" 라고 얘기한다.


- Points about the Definition

  • ff is O(g)O(g)라 함은 정의를 만족하는 어떠한 상수 c,kc,k가 존재한다는 가정하에 성립한다.
  • 그러나, 조건을 만족하는 c,kc, k는 여러 개 있을 수 있다.(즉, 유일하지 않다.)
  • 또한, 조건을 만족하는 가장 작은 c,kc, k를 찾을 필요는 없다.
  • 결론적으로, 증명하기 위해서 정의를 만족하는 c,kc, k를 하나는 찾아야 한다.

- "Big-O" 증명의 예

  • 30n+830n+8O(n)O(n)임을 보여라.
    • c,k:n>k:30n+8cn∃c,k: ∀n>k: 30n+8 ≤ cn 임을 보이면 된다.
    • c=31,k=8c=31, k=8로 놓고, n>k(=8)n>k(=8) 이라 가정하자.
    • 그러면, cn=31n=30n+n>30n+8cn = 31n = 30n+n > 30n+8 이므로 30n+8<cn30n+8 < cn이 성립한다.
  • n2+1n^2+1O(n2)O(n^2)임을 보여라.
    • c,k:n>k:n2+1cn2∃c,k: ∀n>k: n^2+1 ≤ cn^2 임을 보이면 된다.
    • c=2,k=1c=2, k=1로 놓고, n>k(=1)n>k(=1) 이라 가정하자.
    • 그러면, cn2=2n2=n2+n2>n2+1cn^2 = 2n^2 = n^2+n^2 > n^2+1 이므로 n2+1<cn2n^2+1 < cn^2이 성립한다.

- Big-O 예 (기하학적)

  • n>0n>0에 대해 30n+830n+8nn보다 크다.
  • 심지어 0<n<80<n<8에 대해 31n31n보다도 크다.
  • 하지만, n=8n=8 오른편에서는 31n31n보다 작다.
  • e.g., c=31,c=31, k=8k=8

- Big-O의 예 (수식)

- Big-O에 대한 유용한 Facts

- 함수 속도 비교

Big-Omega Notation

  • Definition: f,gf,g를 N→R 혹은 R→R인 집합의 함수라고 하고, x>kx > k에 대하여,
    f(x)Cg(x)∣f(x)∣ ≥ C∣g(x)∣를 만족하는 상수 CCkk가 존재하면
    f(x)f(x) is Ω(g(x))Ω(g(x)) 라고 한다.

  • 읽을 때는, "f(x)f(x)g(x)g(x)의 빅-오메가" 라고 읽는다.

  • BigOBig-O는 함수의 상한을 두는 반면에, BigOmegaBig-Omega는 하한을 둔다.

  • f(x)f(x) is Ω(g(x))Ω(g(x))g(x)g(x) is O(f(x))O(f(x))

  • Example:
    f(x)=8x3+5x2+7f(x)=8x^3+5x^2+7 is Ω(g(x))Ω(g(x)) where g(x)=x3g(x)=x^3 임을 보여라

  • Solution: 모든 양의 실수 x에 대하여 f(x)=8x3+5x2+7f(x)=8x^3+5x^2+78x38x^3 이다.


Definition: Θ(g), exactly order g

  • Definition: ffggNRN→R 혹은 RRR→R인 집합의 함수라고 하면,

    f(x)f(x) is Θ(g(x))Θ(g(x)) if f(x)f(x) is O(g(x))O(g(x)) and f(x)f(x) is Ω(g(x)).Ω(g(x)).

  • f(x)=O(g(x))f(x)=O(g(x))이고 g(x)=O(f(x))g(x)=O(f(x))이면, f(x)=Θ(g(x))f(x)=Θ(g(x))이며 g(x)=Θ(f(x))g(x)=Θ(f(x))이다.

  • Θ(g){f:RRΘ(g) ≡ \{f:R→R | c1,c2,k:∃c1,c2,k: x>k:c1g(x)f(x)c2g(x)}∀x>k: |c_1g(x)|≤|f(x)|≤|c_2g(x)| \}

    • c1g(x)f(x)c2g(x)c_1g(x)≤f(x)≤c_2g(x)를 만족하는 c1c2c_1과 c_2가 존재하면
      f(x)=Θ(g(x))f(x)=Θ(g(x))이다.

- Rules for Θ

  • 대부분 빅-오 표기법과 동일하나, 다음과 같은 예외가 있다:

    • b>0b>0에 대해 f,g>0∀f,g>0 & constantsconstants a,bRa,b∈R 일 때,

      똑같은 점차이점
      afΘ(f)af∈Θ(f)g=Θ(1)g=Θ(1)이 아니라면 fΘ(fg)f∉Θ(fg)
      f1b\|f\|^{1-b} Θ(f)∉ Θ(f)
      (logbf)cΘ(f)(log_b\|f\|)^c ∉ Θ(f)

- Examples of Θ

profile
hello world :)

0개의 댓글