Да, находится между 1 и n , но ближе к 1, чем n . Что такое log ( n ) ? Лог-функция является обратной функцией экспоненты. Позвольте мне начать с экспоненты, и вы должны лучше понять, что такое логарифм.log(n)1n1nlog(n)
Рассмотрим два числа, и 2 100 . 2 100 - это 2, умноженные на себя в 100 раз. Вы можете с некоторым усилием сосчитать 100 чисел, но можете ли вы сосчитать 2 100 ? Бьюсь об заклад, вы не можете. Почему? 2 100 такое большое число, что оно больше, чем число всех атомов во вселенной. Задумайтесь об этом на мгновение. Это настолько большое число, что оно позволяет дать каждому атому имя (число). А количество атомов в ногтях у вас, вероятно, порядка миллиардов. 2 100100210021002100100210021002100 должно быть достаточно для всех (каламбур предназначен).
Теперь между двумя числами, и 2 100 , 100 - логарифм 2 100 (в базе 2 ). 100 сравнительно такое небольшое число, чем 2 100 . У кого угодно должно быть 100 разных предметов в своем доме. Но 2 100 достаточно хорошо для вселенной. Думай домой против вселенной, думая о журнале ( n )10021001002100210021001002100log(n) и n .
Откуда взялись экспонента и логарифмы? Почему они так интересуются информатикой? Вы можете не заметить, но экспонента повсюду. Вы платили проценты по кредитной карте? Вы только что заплатили вселенную за свой дом (не так уж плохо, но кривая подходит). Мне нравится думать, что экспонента исходит из правила продукта, но другие могут привести больше примеров. Вы можете спросить, какое правило продукта? И я отвечу.
Скажем, у вас есть два города и B , и между ними есть два пути. Какое количество путей между ними? Два. Это тривиально. Теперь, скажем, есть другой город C , и вы можете перейти от B к C тремя способами. Сколько сейчас путей между А и С ? Шесть, верно? Как ты это получил? Вы их посчитали? Или ты их умножил? В любом случае, легко увидеть, что оба способа дают одинаковый результат. Теперь, если вы добавите город D, до которого можно добраться из C четырьмя способами, сколько будет путей между A ? Посчитайте, если вы мне не доверяете, но оно равно 2 ⋅ABCBCACDCA и D есть 24 . Теперь, если есть десять городов и есть два пути из одного города в другой, и они расположены так, как будто они находятся на прямой линии. Сколько путей существует от начала до конца? Умножьте их, если вы мне не доверяете, но я скажу вам, что есть 2 10 , то есть 1024 . Смотрите, что 2 10 - это экспоненциальный результат 10 , а 10 - логарифм 2 10 . 10 - небольшое число по сравнению с 1024 .2⋅3⋅42421010242101010210101024
Функция логарифма равна n, что n равно 2 n (обратите внимание, что 2 - это основание логарифма). Если вы умножаете log b ( n ) на себя b раз (обратите внимание, что b - это основание логарифма), вы получите n . log ( n ) настолько мал, настолько мал по сравнению с n , что это размер вашего дома, где n - это размер вселенной.log2(n)nn2n2logb(n)bbnlog(n)nn
На практике заметим, что функции очень похожи на функции констант. Они растут с п , но они растут очень медленно. Если вы оптимизировали программу для выполнения в логарифмическом времени, которое занимало день раньше, вы, вероятно, запустите ее в течение нескольких минут. Проверьте сами проблемы с Project Euler.log(n)n