Що таке O (log * N) і чим він відрізняється від O (log N)?
Що таке O (log * N) і чим він відрізняється від O (log N)?
Відповіді:
O( log* N )
є " ітераційним логарифмом ":
В інформатиці повторний логарифм n, записаний log * n (зазвичай читається як "зірка журналу"), - це кількість разів, коли функція логарифму повинна бути ітеративно застосована, перш ніж результат буде меншим або рівним 1.
O( N log* N )
до того, як його вдосконалили O( A N )
, де A - обернена функція Аккермана. Я досі не розумію останнього доказу, але O( N log* N )
алгоритм порівняно добре читається.
log* N
Біт ітерованих алгоритм , який росте дуже повільно, набагато повільніше , ніж просто log N
. Ви просто продовжуєте ітеративно «реєструвати» відповідь, поки вона не опуститься нижче одиниці (Напр .:) log(log(log(...log(N)))
, і скільки разів вам доводилося log()
відповідати.
У будь-якому випадку, це п’ятирічне питання щодо Stackoverflow, але коду немає? (!) Давайте це виправим - ось реалізації як для рекурсивної, так і для ітераційної функції (вони обидва дають однаковий результат):
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) - "Зірка журналу n" , відома як "Ітераційний логарифм"
У простому слові ви можете припустити log * (n) = log (log (log (..... (log * (n)))))
log * (n) дуже потужний.
Приклад:
1) Журнал * (n) = 5 де n = Кількість атома у Всесвіті
2) Розфарбовування дерев із використанням 3 кольорів можна виконати у журналі * (n), тоді як забарвлення кольорів Tree 2 достатньо, але складність тоді буде O (n).
3) Знаходження триангуляції Делоне набору точок, знаючи мінімальне евклідове дерево, що охоплює: рандомізований час O (n log * n).
O(log* N)
жаль, відповіді немає .