вероятностная сложность пространства списка пропусков

Итак, я видел этот вопрос о вероятностном потреблении пространства в списке пропусков:

но я думаю, что спрашивающий не понял, хочет ли он ожидаемого подхода или подхода наихудшего случая.

Поэтому я хотел бы снова поднять этот вопрос в полемику и объясню, почему я в замешательстве.

Для ясности: я ищу пространственную сложность вероятностного списка пропусков в наихудшем случае. Вот что я имел в виду:

С одной стороны, мы предполагаем, что максимальное число уровней равно log(n), легко сделать вывод, что в худшем случае у нас может быть n узлов на каждом уровне, что даст нам O(nlogn). С другой стороны, я предполагаю, что уровней может быть больше, чем log(n) (например, списки), и мы устанавливаем эту границу равной n — тогда мы получаем nn => O(n^2)

НО! Я не понимаю, почему мы имеем право ограничивать уровни, если новый уровень зависит от подбрасывания монеты, давайте считать, что в худшем случае мы получим бесконечное количество раз орел (а значит, новый уровень) и тогда мы различаем, что это даже не ограничено?! Я в замешательстве.


person wannabe programmer    schedule 16.12.2014    source источник


Ответы (1)


Если вы не установите верхнюю границу высоты списка пропуска, то верхняя граница для наихудшего использования пространства отсутствует. Для любой границы, которую вы можете установить, есть какое-то ужасно неудачное и астрономически невероятное выполнение списка пропусков, в результате которого количество слоев будет настолько высоким, что верхняя граница не выдержит. По этой причине в этом случае нет верхней границы использования пространства.

Тем не менее, большинство стандартных реализаций списков пропуска помещают некоторую верхнюю границу M на высоту каждого узла, обычно выбираемую так, чтобы M было больше, чем log n. В этом случае наихудшее использование пространства будет (Mn), что происходит, если каждый режим использует все M уровней.

Надеюсь это поможет!

person templatetypedef    schedule 16.12.2014