Big O 표기법에서 Big과 O는 무엇입니까? 나는 정의를 읽었으며 O 가 'oh'로 발음되는 것을 말하지 않습니다 . 예를 들어, 나는 O (n)이 선형 알고리즘의 복잡성이라는 것을 알고 있습니다. 여기서 n은 연산 수입니다. 그러나 O 는 무엇 입니까?
Big O 표기법에서 Big과 O는 무엇입니까? 나는 정의를 읽었으며 O 가 'oh'로 발음되는 것을 말하지 않습니다 . 예를 들어, 나는 O (n)이 선형 알고리즘의 복잡성이라는 것을 알고 있습니다. 여기서 n은 연산 수입니다. 그러나 O 는 무엇 입니까?
답변:
글쎄, 내 추측은 wikipedia와 일치하는 순서 일 것 입니다.
편집 : 독일 위키 백과 기사 에서 (나의 (개선 된 개선 사항)) 번역
(독일어 : "Ordnung von") 순서의 상징으로 사용 된 대문자 O (실제로 대문자 omicron )는 분석 번호 이론에 관한 그의 두 번째 책에서 독일의 수 이론가 Paul Bachman이 처음 사용했습니다. 이 표기법은 다른 독일 수 이론가 인 에드먼드 란도 (Edmund Landau)의 작업으로 인해 인기를 얻었으며,이 명명법은 오늘날 특히 독일 용어에서 널리 사용됩니다.
"큰"은 "자본"을 의미하고 "O"는 "복잡성의 순서"와 같이 순서를 의미합니다. 예를 들어 대문자 'O'또는 'Big O'와 같이 O (f (x))로 "복잡함 순서"를 작성하는 규칙 때문에 이름이 지정됩니다. '모두'가 의미를 이해하고 이해하는 것이 복잡성 분석을 이해하는 데 실제로 도움이되지 않기 때문에 아무도 그것에 대해 많이 이야기하지 않습니다.
복잡성 분석을 이해하기 위해 topgun_ivard에 의해 게시 된 링크가 시작하기에 좋은 장소라고 생각합니다. 데이터 구조 나 알고리즘을 다루는 훌륭한 입문 교과서도 도움이 될 수 있습니다.
O 는 주문을 나타냅니다.
이 책은 원래 1894 년에 출판 된 숫자 이론 Die Analytische Zahlentheorie에 관한 그의 두 번째 책 에서 독일의 수학자 Paul Bachmann에 의해 소개되었다 (p. 401) . 그는 공식을 사용한 후 처음 표기법을 사용합니다.
(...) wenn wir durch das Zeichen O (n) einde Grösse ausdrücken, Dezu Ordnung in Bezug auf n die Ordnung von n nicht überschreitet (...)
내 번역 :
(...) 여기서 O (n) 표기법 으로 n 을 참조 하는 차수가 n 차를 초과하지 않는 크기를 나타냅니다 (...)
다른 사람들의 말과 달리, 그의 본문에는 이것이 그리스의 수도 오 미크론이라는 것을 나타내는 내용이 없습니다. 그는 그리스어와 라틴어 문자를 많이 사용하므로 실제로 말할 방법이 없습니다. 텍스트에서 "Ordnung n log n "등을 계속 사용 하면 어떤 경우에도 "Ordnung"(의심이있는 경우 "주문"에 대한 독일어)을 나타내는 것이 분명하지만, 여전히 멋진 그리스어 O.
그러나, omikron의 기원은 기호를 도입 인해 도널드 크 누스에 retronym은 가능성이 오메가 (Ω)와 세타 (Θ)에서 관련 개념에 대한 자신의 종이 큰 미크론와 빅 오메가와 빅 세타 , 또는 가능 하디와 Littlewood 사람 앞서 오메가 심볼을 도입했습니다.
나는 당신이 그것을 유용하게 사용하길 바라고이 기사를 좋아한다 !
기사에서 섹션 인용 :
큰 그리스 문자
Big O는 종종 오용됩니다. Big O 또는 Big Oh는 실제로 Big Omicron의 약자입니다. 점근 적 복잡성의 상한을 나타냅니다. 따라서 알고리즘이 O (n log n)이면 상한이 cn log n이되도록 상수 c가 있습니다.
Θ (n log n) (Big Theta)는 그보다 더 밀접하게 바인딩되어 있습니다. 이러한 알고리즘은 c1n log n <f (n) <c2n log n이되도록 두 상수 c1 및 c2가 있음을 의미합니다.
Ω (n log n) (Big Omega)에 따르면 알고리즘의 하한은 cn log n입니다.
다른 것들이 있지만 이것들이 가장 일반적이며 Big O가 가장 일반적입니다. 이러한 구별은 일반적으로 중요하지 않지만 주목할 가치가 있습니다. 올바른 표기법은 결국 올바른 표기법입니다.
Big O 란 무엇입니까?
Big O 표기법은 주요 요인이 무한대에 가까워 질 때 성장률을 주요 요인으로 줄임으로써 알고리즘의 상대적 복잡성을 설명하려고합니다. 이러한 이유로 종종 점근 적 복잡성이라는 문구가 들립니다. 그렇게하면 다른 모든 요소는 무시됩니다. 복잡성을 상대적으로 표현한 것입니다.
큰 O는 무엇입니까?
Big O는 알고리즘의 성능 테스트가 아닙니다. 그것은 다른 요소들을 무시하는 경향이 있다는 점에서 명 목적이거나 추상적이다. 정렬 알고리즘의 복잡성은 일반적으로 핵심 요소로 정렬되는 요소 수로 줄어 듭니다. 이것은 좋지만 다음과 같은 문제는 고려하지 않습니다.
메모리 사용 : 한 알고리즘이 다른 알고리즘보다 훨씬 많은 메모리를 사용할 수 있습니다. 상황에 따라 이것은 전혀 관련이없는 것부터 중요 할 수있는 것까지 가능합니다. 비교 비용 : 요소를 비교하는 것은 실제로 비용이 많이 들기 때문에 알고리즘 간의 실제 비교가 잠재적으로 변경 될 수 있습니다. 요소 이동 비용 : 요소를 복사하는 것이 일반적으로 저렴하지만 반드시 그런 것은 아닙니다. 기타
"f (x)는 g (x)의 큰 오입니다"
함수의 성장을 예측하는 수학적 방법입니다.
f와 g가 정수 세트 또는 세트 또는 실수에서 실수 세트까지의 함수가되게하십시오. 상수 C와 k가 있으면 f (x)는 O (g (x))이고 | f (x) | <= C | g (x) | x> k.
"f (x) is g-oh of g (x)"라고 읽습니다.
big-O는 독일 수학자 Edmund Landau의 이름을 따서 Landau 상징이라고도합니다. 나는 그것이 그것을 넘어서는 것을 의미한다고 생각하지 않습니다. 빅 오메가와 빅 세타 표기법도 비슷합니다. 기호는 항상 세타를 사용하여 삼각형의 각도를 나타내는 평면형 고등학교 클래스에있는 것처럼 임의적입니다.
정정 @ back2dos는 순서를 참조하여 O에 대한 만족스러운 설명을 제공했습니다. 잘 했어. 그의 대답을보십시오.
Donald Knuth는 컴퓨터 프로그램의 복잡성을 연구하는 데 적용했습니다.
표기법이 사용 된 이유를 찾으려면 읽어야합니다.
1892 년 Paul Bachmann의 "Analytische Zahlentheorie"
편집 : 내가 틀렸다는 것이 밝혀졌습니다. 그럼에도 불구하고 아마도 누군가가 심볼을 똑바로 유지하는 데 도움이 될 것이므로 삭제하지는 않을 것입니다.
사실, 그것은 라틴 문자 가 아닙니다 . 오 , 그리스 문자 Omicron 입니다. 불행히도 그 두 문자는 똑같은 글리프를 가지므로 시간이 지남에 따라 원래 버전이 손상되었으며 이제는 오 입니다.
기호 선택은 실제로 특별한 의미가 없으며 니모닉 장치 로 선택되었습니다 .
그게 다야. 그것에 의미가 없습니다. 의미론을 더 쉽게 기억할 수 있도록 도와주는 단어에 대한 놀이 일뿐입니다.
업데이트 : 내 대답을 정리하고보다 정확하려고합니다.
Big O 표기법은 성장률에 따라 기능을 특성화하는 방법입니다. O는 차수를 나타냅니다 (1 차 차수 n 차 제곱 차수 등). 그리고 내가 실수하지 않으면 이것은 N 요소가 주어진 런타임 (또는 스토리지) 메소드의 최악의 시나리오 일 것입니다. 순서가 클수록 방법이 수행하는 것이 최악입니다.
예를 들어 배열에서 레코드를 찾는 것은 O (1)입니다 (해시 테이블의 일부 구현도 믿습니다). 링크 목록의 끝에 값을 추가하면 요소 등을 추가하기 전에 목록의 끝에 도달해야하기 때문에 O (N)이됩니다.
이 답변은 첫 번째 시도보다 약간 더 정확해야합니다. :)