O (log * N) là gì và nó khác O (log N) như thế nào?
O (log * N) là gì và nó khác O (log N) như thế nào?
Câu trả lời:
O( log* N )là " logarit lặp lại ":
Trong khoa học máy tính, logarit lặp lại của n, được viết là log * n (thường được đọc là "log sao"), là số lần hàm logarit phải được áp dụng lặp đi lặp lại trước khi kết quả nhỏ hơn hoặc bằng 1.
O( N log* N )trước khi nó được cải tiến thành O( A N ), trong đó A là hàm Ackermann nghịch đảo. Tôi vẫn không hiểu bằng chứng thứ hai, nhưng O( N log* N )thuật toán tương đối tốt.
Các log* Nbit là một thuật toán lặp mà phát triển rất chậm, chậm hơn nhiều so với chỉ log N. Về cơ bản, bạn chỉ cần lặp đi lặp lại 'ghi nhật ký' câu trả lời cho đến khi nó thấp hơn một (Ví dụ log(log(log(...log(N))):), và số lần bạn phải log()là câu trả lời.
Dù sao, đây là một câu hỏi đã 5 năm tuổi trên Stackoverflow, nhưng không có mã nào? (!) Hãy khắc phục điều đó - đây là cách triển khai cho cả hàm đệ quy và lặp (cả hai đều cho cùng một kết quả):
public double iteratedLogRecursive(double n, double b)
{
if (n > 1.0) {
return 1.0 + iteratedLogRecursive( Math.Log(n, b),b );
}
else return 0;
}
public int iteratedLogIterative(double n, double b)
{
int count=0;
while (n >= 1) {
n = Math.Log(n,b);
count++;
}
return count;
}
log * (n) - "log Star n" còn được gọi là "logarit lặp lại"
Nói một cách dễ hiểu, bạn có thể giả sử log * (n) = log (log (log (..... (log * (n))))
log * (n) rất mạnh mẽ.
Thí dụ:
1) Nhật ký * (n) = 5 trong đó n = Số nguyên tử trong vũ trụ
2) Tô màu cây bằng cách sử dụng 3 màu có thể được thực hiện trong log * (n) trong khi tô màu Cây 2 màu là đủ nhưng độ phức tạp sẽ là O (n) sau đó.
3) Tìm tam giác Delaunay của một tập hợp các điểm biết cây khung cực tiểu Euclide: thời gian O (n log * n) ngẫu nhiên.
O(log* N)Rất tiếc, không có câu trả lời .