O (log N^3/M) 시간 복잡도로 알고리즘을 작성하려고합니다. 그러나 로그 N/M 부분에 대해서는 잘 모르겠습니다. 내 알고리즘이 올바른지 누군가가 확인해 주시면 고맙겠습니다. for (int i = 1; i < N; i += M)
은 O (N/M)의 시간 복잡도를 가지며, O는 (N 로그) 상수를 곱한 것으로 i
을 필요O (log N^3/M) 시간 복잡도를 가진 알고리즘
for (int i = 1; i < N; i = i*2) // log N
for (int i = 1; i < N; i = i*2) // log N
*for (int i = 1; i < N; i += M+i*2) // log N/M
*이면 결론은 O (N/M 로그) 경우에 달성 될 수 있다는 우리는 i
에 상수를 추가하고 동시에 다른 상수로 그것을 곱하십시오.
O (N/log N) 시간 복잡도 알고리즘은 무엇이 될까요? 루프가 다음 우리가 가지고있는 케이 번 실행됩니다 말할 수 있기 때문에 for (int i = 1; i < N; i += M+i*2)
는 O (로그 (N/M)) 가되지 않습니다 : :
로그 (N^3/M) 또는 로그 (N^3)/M을 의미합니까? – coincoin
질문의 마지막 부분 [여기에 답변 됨] (http://stackoverflow.com/questions/35176736/algorithms-with-on-logn-complexity/39215822#39215822). – templatetypedef
O (log (N^3/M))가 정확합니다. – Stealth