어떻게합니까 평균?


15

어떻게합니까 평균?logO(1)n

big-O 표기법을 알고 있지만이 표기법은 의미가 없습니다. 검색 엔진이 이것을 올바르게 해석하는 방법이 없기 때문에 그것에 대해 아무것도 찾을 수 없습니다.

약간의 맥락에서, 내가 찾은 문장은 "[...]라고 읽습니다. 공간을 사용하고 최대 시간 사용하면 [효율적] 함수를 호출합니다. 품목 당."로그 O ( 1 ) nO(logn)logO(1)n


1
나는 그것이 의미하는 바가 무엇인지에 대해 명확하지 않고 독자에게 그것이 무엇인지 알려주지 않고 동일한 규칙을 일관되게 사용하지 않는 한 이와 같은 것을 쓰면 안된다는 데 동의합니다.
Raphael

1
예, 대신 다음과 같이 작성해야합니다. (log(n))O(1).

1
@RickyDemer Raphael이하는 것은 아닙니다. 은 정확히 ( log n ) b l a h를 의미 합니다. logblahn(logn)blah
David Richerby

4
@Raphael 이것은 현장에서 표준 표기법입니다. 아는 사람은 그것이 무엇을 의미하는지 알게 될 것입니다.
Yuval Filmus

1
@YuvalFilmus 다양한 의견이 맞지 않는 답변은 귀하의 주장이 허위이며 실제로 그러한 표기법을 사용하지 않아야한다는 결정적인 증거라고 생각합니다.
Raphael

답변:


16

" "가 잘못된 위치에 있다는 강한 느낌을 잠시 무시 하고 정의에 관계없이 쟁기질을해야합니다. f ( n ) = log O ( 1 ) n 은 모든 n n 0 에 대해 f ( n ) log k 1 n = log k n 인 상수 kn 0 이 존재 함을 의미합니다 .Of(n)=logO(1)nkn0nn0f(n)logk1n=logkn

참고 수단 ( 로그 N ) 케이 . log O ( 1 ) n 형식의 함수를 종종 다항식 이라고하며 사람들이 " f 는  폴리 로그 n "이라고 말하는 것을들을 수 있습니다 .logkn(logn)klogO(1)nfn

당신은 그것을 증명하기 쉬운 것을 알 수 있습니다 그 , 이후 2 N K n은 모든 N 0 , 여기서 K = 2 . 2 log n = log O ( 1 ) n 인지 궁금 할 것 입니다. 충분히 큰 n 에 대해 log n 2 이므로 충분히 큰 경우  2 log n log 2 n 이므로 답은 예입니다.2n=O(n)2nknn0k=22logn=logO(1)nnlogn22lognlog2n .n

관련 메모에서 다항식은 종종 : 같은 생각으로 표시됩니다.nO(1)


일반적인 자리 표시 자 규칙에서는 지원되지 않습니다.
Raphael

나는 나의 의견을 철회한다 : 당신 은 모든 중요한 곳에서 를 쓰면 충분하다.
Raphael

@Raphael OK. 아직 확인할 시간이 없었지만 내 감정은 내가있는 방식과 다른 방식으로 수량자를 주문할 수 있다는 느낌이었습니다. 실제로 동일한 함수 클래스를 정의하고 있는지 확실하지 않습니다.
David Richerby

나는 당신이 내 (2)를 정의하고 있다고 생각하고 Tom은 합니다. cR>0{logcn}
Raphael

9

이것은 일반적으로 수용되는 자리 표시 자 규칙 에 의해 이해 될 수있는 표기법의 남용입니다 . Landau 용어 를 찾을 때마다 (마음이나 종이에) 임의의 함수 g O ( f ) .O(f)gO(f)

그래서 당신이 찾으면

f(n)=logO(1)n

너는 읽어야한다

일부 g O ( 1 )에 대해 f ( n ) = log g ( n ) n .f(n)=logg(n)ngO(1).(1)

" 일부 상수의 거듭 제곱에 대한 " 와의 차이점에 유의하십시오 . g = n 1 / n 은 분명한 가능성입니다.logg=n1/n

경고 : 작성자가 더 많은 표기법 남용을 사용 중이고 읽기를 원할 수 있습니다.

일부 g O ( 1 ) .f(n)O(logg(n)n)gO(1).(2)

(1)과 (2)의 차이점에 유의하십시오. 여기에서 동일한 양수 값 함수 집합을 정의하는 것이 좋지만 항상 작동하는 것은 아닙니다. 주의를 기울이지 않고 표현에서 를 움직이지 마십시오 !O


3
나는 그것이 이 고정 된 각 n 에 대해 단조롭고 충분히 예측 가능 하다고 생각한다 . 단조는 O 의 위치를 동일하게 만들고 (2) ⇒ (1); 다른 방법으로 가려면 f ( n ) 이 함수 범위를 벗어나 면 실패 할 수있는 g 가 있어야 합니다. O 를 옮기는 것이 위험하고 "야생"기능을 다루지 않는다는 것을 지적하고 싶다면 이 특정 경우에는 비용을 나타내는 기능이 적합합니다. xlogx(n)nOgf(n)O
Gilles 'SO- 악마 중지

@Gilles 나는 일반적인 경고에 대한 진술을 약화시켰다.
Raphael

1
이 답변은 크게 편집되었으며 이제 혼란스러워합니다. 이제 (1)과 (2)가 실제로 동일하다고 주장합니까?
Oebele

@Oebele 내가 알 수있는 한, 그들은 일반적으로 있지 않지만 여기 있습니다.
Raphael

그러나 과 같은 것은 (1)과 일치하지 않지만 (2)는 맞습니까? 아니면 지금 그냥 바보인가? 3log2n
Oebele

6

이는 함수가 최대 상수의 로그 , 즉 log 2 ( n ) 또는 log 5 ( n ) 또는 log 99999 ( n ) 만큼 가 커짐을 의미합니다 .loglog2(n)log5(n)log99999(n)


This can be used when the function growth is known to be bounded by some constant power of the log, but the particular constant is unknown or left unspecified.
Yves Daoust

This is not supported by the common placeholder convention.
Raphael

2

"At most logO(1)n" means that there is a constant c such that what is being measured is O(logcn).

In a more general context, f(n)logO(1)n is equivalent to the statement that there exists (possibly negative) constants a and b such that f(n)O(logan) and f(n)Ω(logbn).

It is easy to overlook the Ω(logbn) lower bound. In a setting where that would matter (which would be very uncommon if you're exclusively interested in studying asymptotic growth), you shouldn't have complete confidence that the author actually meant the lower bound, and would have to rely on the context to make sure.


The literal meaning of the notation logO(1)n is doing arithmetic on the family of functions, resulting in the family of all functions logg(n)n, where g(n)O(1). This works in pretty much the same as how multiplying O(g(n)) by h(n) results in O(g(n)h(n))


g(n)O(1) is bounded in magnitude; that there is a constant c such that for all sufficiently large n, |g(n)|<c.

When looking at asymptotic growth, usually only the upper bound g(n)<c matters, since, e.g., you already know the function is positive. However, in full generality you have to pay attention to the lower bound g(n)>c.

This means, contrary to more typical uses of big-oh notation, functions that decrease too rapidly can fail to be in logO(1)n; for example,

1n=log(logn)/(loglogn)nlogO(1)n
because
lognloglognO(1)
The exponent here grows in magnitude too rapidly to be bounded by O(1).

A counterexample of a somewhat different sort is that 1logO(1)n.


Can't I just take b=0 and make your claimed lower bound go away?
David Richerby

1
@DavidRicherby No, b=0 still says that f is bounded below. Hurkyl: why isn't f(n)=1/n in logO(1)n?
Gilles 'SO- stop being evil'

@Gilles: More content added!

@Gilles OK, sure, it's bounded below by 1. Which is no bound at all for "most" applications of Landau notation in CS.
David Richerby

1) Your "move around O" rule does not always work, and I don't think "at most" usually has that meaning; it's just redundant. 2) Never does O imply a lower bound. That's when you use Θ. 3) If and how negative functions are dealt with by a given definition of O (even without abuse of notation) is not universally clear. Most definitions (in analysis of algorithms) exclude them. You seem to assume a definition that bounds the absolute value, which is fine.
Raphael
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.