O와 Ω은 최악의 경우와 가장 관련이있는 방법은 무엇입니까?


33

오늘 우리는 이진 검색을 사용하여 정렬 된 배열에서 요소를 찾기위한 매우 간단한 알고리즘을 강의에서 논의했습니다 . n 요소 배열에 대한 점근 적 복잡성을 결정하라는 요청을 받았습니다 .

내 생각은 log 2 n 이 최악의 경우 작업 수 이기 때문에 분명히 O(logn) 또는 O(log2n) 가 더 구체적이라는 것 입니다. 그러나 예를 들어 검색된 요소를 처음으로 누르는 경우 더 나은 작업을 수행 할 수 있습니다. 그러면 하한은 Ω ( 1 ) 입니다.log2nΩ(1)

강사는 일반적으로 알고리즘의 최악의 입력 만 고려하므로 솔루션을 로 표시했습니다 Θ(logn).

그러나 최악의 경우만을 고려할 때 주어진 문제의 모든 최악의 경우가 동일한 복잡성을 가질 때 OΩ 표기법 의 요점은 무엇입니까 ( Θ 가 우리가 필요한 전부입니까?).

내가 여기서 무엇을 놓치고 있습니까?


@Smaji : "하지만 최악의 경우 만 고려할 때 모든 최악의 경우 +-가 동일한 복잡성을 가질 때 큰 O와 큰 오메가 표기법의 요점은 무엇입니까?" 명확히하십시오.
tanmoy

@ Smajl : 귀하의 질문은 알고리즘 분석에서 Big O 및 Big Omega 표기법의 필요성은 무엇입니까? 나 맞아?
tanmoy

5
O(log2n) 보다 구체적이지 않으며O(logn), 동일한 클래스의 기능을 나타냅니다.
Raphael

log2(n)log(b)/log(2)×logb(n) 하므로 2는 단지 제거 할 수있는 요인을 나타냅니다 (다른 요인과 마찬가지로 -O.
ctrl-alt-delor

답변:


39

OΩΘ

n

OΩΘ

Θ(1)Θ(logn)


나를 위해 가장 중요한 것은 점근 적 경계 함수에 대해 최악의 경우를 분석 할 수 있다는 것입니다. 나에게 이것은 Big O와 최악의 사례 분석의 독립성을 보여줍니다. 감사!
Patrick

1
@ 패트릭. 먼저, 최악, 평균 또는 최상의 경우를 분석 할 것인지 결정합니다. 그런 다음 비용 함수 (또는 가능한 한 근사치)를 생각해냅니다. 그런 다음에 만 증상이 나타나지 않습니다.
Raphael

17

다음 알고리즘 (또는 절차 또는 코드 조각 등)을 고려하십시오.

Contrive(n)
1. if n = 0 then do something Theta(n^3)
2. else if n is even then
3.    flip a coin
4.    if heads, do something Theta(n)
5.    else if tails, do something Theta(n^2)
6. else if n is odd then
7.    flip a coin
8.    if heads, do something Theta(n^4)
9.    else if tails, do something Theta(n^5)

이 기능의 점근 적 행동은 무엇입니까?

nΩ(n)O(n2)Θ

nΩ(n4)O(n5)Θ

n=0Θ(n3)

Θ


1
nmod4

4

반드시 그런 것은 아닙니다. 이 경우, 즉 정렬 된 배열에서 이진 검색을 수행 할 수 있습니다. (a) 이진 검색은 최대 단계를 수행합니다. (b) 실제로이 많은 단계를 강제하는 입력이있다. 따라서 이 이진 검색을위한 최악의 입력에서 실행 시간 인 경우 라고 말할 수 있습니다 .T ( N ) T ( N ) = Θ ( 로그 N )[logn+1]T(n)T(n)=Θ(logn)

반면에 다른 알고리즘의 경우 정확하게 계산하지 못할 수 있습니다.이 경우 최악의 입력에서 실행 시간 동안 상한과 하한 사이에 간격이있을 수 있습니다.T(n)

이제 정렬 된 배열 을 검색하려면 정렬 된 배열을 검색하기위한 알고리즘이 을 검사해야합니다 . 그러나 이런 종류의 하한선에서는 문제 자체를 분석해야합니다. (여기서 아이디어는 다음과 같습니다 언제든지 검색 알고리즘이 일부 세트 배제하지 않고있다 은을 찾고 요소가 될 수있는 위치를 신중하게 조작 된 입력이 그를 보장 할 수 있습니다. 입니다 최대 배까지 줄어 듭니다 .)S [ n ] | S | 2[logn+1]S[n]|S|2


1

많은 사람들이 사용해야 할 때 순식간에 사용 합니다 . 예를 들어, 알고리즘 분석가는 시간 함수 끝나고 기술적으로 옳은 라고 즉시 결론을 내릴 수 있습니다. , 그러나 더 강력한 주장은 입니다. 나는이 명백하지 않은 행동을 두 가지 이유에 기인합니다. 첫째, 많은 사람들은 가 오랜 역사로 인해 더 인기 있고 수용 가능하다고 생각합니다. 1 세기 전에 소개 된 반면, (및 )는 1976 년 (도널드 크 누스)에 의해서만 소개되었다. 둘째, 때문일 수 있습니다OΘT(n)=n2+n+2T(n)=O(n2)T(n)=Θ(n2)OΘΩO 는 아니지만 키보드에서 쉽게 사용할 수 있습니다 !Θ

그러나 기술적 인 관점에서, 신중한 분석가가 를 보다 선호하는 주된 이유 는 전자가 후자보다 "더 큰 영역"을 다루기 때문입니다. 이진 검색의 예를 들어 를 사용하려면 두 가지 주장을해야합니다. 하나는 가장 좋은 경우, 하나는 이고 다른 하나는 최악의 경우, . 사용하면 단 하나의 주장, 즉 만듭니다. 수학적으로, 가 다루는 함수 들도 다루어 지지만 그 반대는 반드시 사실이 아닙니다.OΘΘΘ(1)Θ(logn)OO(logn)ΘO


답변을 보내 주셔서 감사합니다. 그러나 나는 당신의 요점이 무엇인지 말할 수 없습니다. 첫 번째 단락에서는 몇 가지 추측을 제공합니다. 두 번째로, "조잡한"자체 관점을 제안합니다. "It is average case"라는 말은 같은 클래스에있는 것을 제외하고 가장 좋은 경우에 대해서는 아무 것도 말하지 않습니다. "그것은 평균 사례" 라고 말하는 것은 같은 상한을 의미 합니다 ! 가장 좋은 경우에 대한 추가 정보를 제공하려면 명시 적으로 두 가지 방법 중 하나를 제공해야합니다. 따라서 O를 Θ보다 높게 사용하는 방법을 모르겠습니다. O(logn)Θ(logn)
Raphael

@Raphael 나는 두 표기법의 정의를 참조합니다. 또한, 다양한 답변과 의견에 의해 전파되는 실행 시간 자체가 아니라 실행 시간의 점근 적 "성장률"을 분류하는 데 사용됩니다.
Hamed Nassar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.