대수 실행 시간 O (log (n) 는 무엇입니까?
9392 단어 programmingalgorithms
처음에 thedukh에 썼습니다.
In mathematics, the logarithm is the inverse function to exponentiation. That means the logarithm of a given number x is the exponent to which another fixed number, the base b, must be raised, to produce that number x.
-Wikipedia
소개하다.
원래의 댓글을 보고 큰 O 기호에 대한 지식을 업데이트하려면 클릭하세요.
마지막 부분에서, 우리는 코드의 속도와 성능을 알려주는 큰 O 기호를 설명하고 해독했다.우리는 이미 O(1), O(n)와 O(n2) 등 서로 다른 기호의 예를 보고 탐색했다.
큰 O가 운행할 때 또 다른 흔히 볼 수 있는 변체가 있다.다음 그림을 보십시오. 빨간색은 대수 시간의 복잡도를 나타냅니다.잠깐만, 로건.뭐?그래, 자모의 동일한 점을 소개하다가 수학을 잃어버리면 절망하지 마라!😕 😕
처음에는 잘 몰랐을 수도 있지만, 이 글은 그것을 더욱 분명하고 이해하기 쉽게 하기를 바란다.
우리 시작합시다!
이전 문장과 다른 주석
대수
만약 우리가 임의의 b가 있다면 b>0과 b를≠ 1, 우리는 x>0이 있다. 그러면 우리는'x의 대수기 b'는
y=logbx
{y=log_bx}
y=logbx
이것은
by=x
{b^y=x}
by=x
.
이렇게!만약 네가 처음에 이해하지 못한다면, 대수와 지수는 반함수이다.
**
y=logbx ⟺ by=x
{y=log_bx\iff b^y=x}
y=logbx⟺by=x
. 📐 📐
B는 기초이고 x는 매개 변수이며 y는 방정식의 해이다.
상술한 상황 하에서
y=logbx
{y=log_bx}
y=logbx
대수 형식으로 불리다
by=x
{b^y=x}
by=x
지수 형식이에요.
Log (알파벳 조합) 는 아무런 의미가 없습니다. 대수 연산을 나타내는 함수 이름일 뿐입니다.그래서 만약 우리가 수학 문제의 어느 곳에서든 대수를 보게 된다면 우리는 우리가 대수를 처리하고 있다고 확신할 것이다.
아래에 표시된 매개 변수 b는 조작의 기초를 알려 줍니다. x는 매개 변수입니다.
우리는 단지 어떤 숫자를 b의 지수로 해야만 x를 최종 결과로 얻을 수 있느냐고 묻고 있을 뿐이다.관련 대수와 지수가 무엇인지 기억해야 한다. 간단한 기억 방법은 b의'성장'을 상상하고 x는 항상'등호부터 운행한다'는 것이다. 이렇게 하면 방정식을 맞출 수 있다.🚀
우리는 두 가지 예를 통해 이 문제들을 어떻게 해결하는지 이해합시다.
만약 우리가 임의의 b가 있다면 b>0과 b를≠ 1, 우리는 x>0이 있다. 그러면 우리는'x의 대수기 b'는
y=logbx
{y=log_bx}
y=logbx
이것은
by=x
{b^y=x}
by=x
.
이렇게!만약 네가 처음에 이해하지 못한다면, 대수와 지수는 반함수이다.
**
y=logbx ⟺ by=x
{y=log_bx\iff b^y=x}
y=logbx⟺by=x
. 📐 📐
B는 기초이고 x는 매개 변수이며 y는 방정식의 해이다.
상술한 상황 하에서
y=logbx
{y=log_bx}
y=logbx
대수 형식으로 불리다
by=x
{b^y=x}
by=x
지수 형식이에요.
Log (알파벳 조합) 는 아무런 의미가 없습니다. 대수 연산을 나타내는 함수 이름일 뿐입니다.그래서 만약 우리가 수학 문제의 어느 곳에서든 대수를 보게 된다면 우리는 우리가 대수를 처리하고 있다고 확신할 것이다.
아래에 표시된 매개 변수 b는 조작의 기초를 알려 줍니다. x는 매개 변수입니다.
우리는 단지 어떤 숫자를 b의 지수로 해야만 x를 최종 결과로 얻을 수 있느냐고 묻고 있을 뿐이다.관련 대수와 지수가 무엇인지 기억해야 한다. 간단한 기억 방법은 b의'성장'을 상상하고 x는 항상'등호부터 운행한다'는 것이다. 이렇게 하면 방정식을 맞출 수 있다.🚀
우리는 두 가지 예를 통해 이 문제들을 어떻게 해결하는지 이해합시다.
y=log416{y=log416}
logy=416
?
일지
{logu416}
로그 416
당장 무섭게 보일 수도 있지만, 그건 알아요.
일지
{logu416}
로그 416
및
4?=16
{4^? = 16}
4?=16
갑자기 한결 가벼워진 것 같아!우리가 여기서 찾는 지수는 무엇입니까? 4 곱하기 그 자체로 16을 얻을 수 있습니까?해결책은 당연히
42=16
{4^2 = 16}
42=16
그러면
일지
{logu416}
로그 416
네, 맛없어요.
y=log6216{y=log6216}
y=log6216
?
log6216
{log_6216}
로그 6216
... 과 같다
6?=216
{6^? = 216}
6?=216
어떤 지수가 필요합니까?6 곱하기 그것 자체가 36이다.그래서 그것은 2가 아니다. 우리는 더 큰 지수가 필요하다!우리 다시 해봐야 돼. - 36*6=216!우리는 우리의 지수를 찾았다.그래서
log6216
{log_6216}
로그 6216
세 살.
결과가 어떻게 될지
y=log1381{y=log{1\over 3}81}
y=log3181
?
13?=81{\frac{1}{3}^=81}31?=81
계산해 봅시다.
13−4=34=81\frac{1}{3}{-4}=3^4=8131−4=34=81
이제 우리는
log1381=−4
{log_{1\over 3}81=-4}
로그 3181=−4
. 🤘 🤘
대수에 대한 자세한 내용은 page를 참조하십시오.우리는 이 주제에 대해 충분한 토론을 하여 대수 시간의 복잡성을 정확하게 이해하였지만, 당신은 위의 링크를 보고, 더 많은 연습, 대수의 더 많은 속성과 특수한 대수 유형을 이해할 수 있습니다.
대수 시간 복잡도
다음 그림은 대수의 배율을 보여줍니다.
대수도
효율이 높습니다!우리가 입력의 크기를 늘려도 값은 어느 점에서 수렴되기 시작하기 때문에 고정된 복잡도 이후에 대수 시간의 복잡도가 가장 효과적이다. 이것은 이상하지 않다!
대수 시간의 복잡도는 통상적으로 Divide and Conquer라고 불리는 범례에서 발생한다.분할 치료는 일종의 프로그래밍 모델로 문제를 더욱 작은 하위 문제로 분해한다.모든 하위 문제는 충분히 작아서 해답을 구할 수 있다. 마지막으로 계산이 끝난 후에 하위 문제는 합병된다.분치를 사용하는 일부 표준 알고리즘은 2진법 검색, 빠른 정렬, 통합 정렬이다.
다음 그림은 병합 정렬 알고리즘을 보여 줍니다. 수조 입력은 두 개의 수조로 나뉘어진 다음에 네 개의 수조로 나뉘어집니다. 수조 입력이 충분하게 작아질 때까지 한 항목을 정렬할 수 있습니다.그 다음에 현재 분리된 블록을 한데 조합하여 최종 결과인 정렬수 그룹을 얻는다.
분치합병 정렬도
대수 시간 복잡도 예
O(대수 (n)
나는 단지 분명히 말하고 싶었을 뿐이다.대수 표현법과 관련이 있을 때, 우리는 아래 값을 표시하지 않았다는 것을 알 수 있습니다.우리는 O (logn)만 쓴다.
위의 예에서 우리는 반드시 기수를 써야 한다. 왜냐하면 우리는 대수의 서로 다른 수학 변화를 해결했기 때문이다.데이텀이 지정되지 않은 경우 기본값은 2입니다.그래서 log100은
log10100
{log_{10}100}
로그 10100
.
이제 재미있는 질문 하나 봅시다.
function binarySearch(array, key) {
var low = 0;
var high = array.length - 1;
var mid;
var element;
while (low <= high) {
mid = Math.floor((low + high)/ 2)
element = array[mid]
if (element < key) {
low = mid + 1;
} else if (element > key) {
high = mid - 1;
} else {
return mid;
}
}
return -1
}
binarySearch([1, 2, 4, 6, 7, 9, 13, 14, 15, 16, 18, 22, 25, 26], 9); // 5
BinarySearch 방법은 두 개의 매개 변수를 받아들인다. 하나의 수조와 몇몇 수조에 있어야 하는 키이다.
O(대수 (n)
나는 단지 분명히 말하고 싶었을 뿐이다.대수 표현법과 관련이 있을 때, 우리는 아래 값을 표시하지 않았다는 것을 알 수 있습니다.우리는 O (logn)만 쓴다.
위의 예에서 우리는 반드시 기수를 써야 한다. 왜냐하면 우리는 대수의 서로 다른 수학 변화를 해결했기 때문이다.데이텀이 지정되지 않은 경우 기본값은 2입니다.그래서 log100은
log10100
{log_{10}100}
로그 10100
.
이제 재미있는 질문 하나 봅시다.
function binarySearch(array, key) {
var low = 0;
var high = array.length - 1;
var mid;
var element;
while (low <= high) {
mid = Math.floor((low + high)/ 2)
element = array[mid]
if (element < key) {
low = mid + 1;
} else if (element > key) {
high = mid - 1;
} else {
return mid;
}
}
return -1
}
binarySearch([1, 2, 4, 6, 7, 9, 13, 14, 15, 16, 18, 22, 25, 26], 9); // 5
BinarySearch 방법은 두 개의 매개 변수를 받아들인다. 하나의 수조와 몇몇 수조에 있어야 하는 키이다.우리의 검색치는 9이다.
우선, 우리의 중간값은 13, 9는 13보다 작기 때문에 우리는 13보다 큰 모든 값을 무시합니다!
다음 중간 값은 4입니다. 9보다 작기 때문에 4보다 작거나 같은 값은 무시합니다.
우리의 다음 중간값은 7이고, 다시 9보다 낮기 때문에, 우리는 7보다 작거나 같은 모든 값을 무시한다.
우리의 최종치는 9이다. 이것은 우리가 찾고 있는 숫자다!
이 솔루션은 결과에 필요한 시간을 "나누기"2로 나눈다.아니면 우리가 갑절로 투입하려면 한 발자국만 더 가면 해결 방안을 찾을 수 있다는 얘기다.
바이너리 검색 예
결론
우리는 대수 기호가 그렇게 무섭지 않다는 것을 증명했다. 우리는 수학 지식이 조금만 있으면 그 배후의 논리를 쉽게 파악할 수 있다.이런 복잡도를 운행하는 알고리즘은 매우 효과적이지만, 때때로 이런 복잡도는 수중의 알고리즘에 적용되지 않는다.🏆 🏆 🏆
더 많은 기사를 보려면 here
Reference
이 문제에 관하여(대수 실행 시간 O (log (n) 는 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/bracikaa/what-is-the-logarithmic-runtime-o-log-n-30je
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(대수 실행 시간 O (log (n) 는 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bracikaa/what-is-the-logarithmic-runtime-o-log-n-30je텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)