Что такое O (log * N) и чем он отличается от O (log N)?
Что такое O (log * N) и чем он отличается от O (log N)?
Ответы:
O( log* N )
это « повторный логарифм »:
В информатике повторный логарифм n, записываемый как log * n (обычно читается как «log star»), - это количество раз, когда функция логарифма должна быть итеративно применена, прежде чем результат станет меньше или равным 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) - «log Star n», известный как «Итерированный логарифм»
Проще говоря, вы можете предположить, что log * (n) = log (log (log (..... (log * (n))))
log * (n) очень мощный.
Пример:
1) Log * (n) = 5, где n = количество атомов во вселенной
2) Раскраска дерева с использованием 3 цветов может быть выполнена в log * (n), в то время как раскраска дерева 2 цветов достаточно, но тогда сложность будет O (n).
3) Нахождение триангуляции Делоне набора точек, зная евклидово минимальное остовное дерево: рандомизированное время O (n log * n).
O(log* N)
сожалению, ответа нет .