Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

9.4. Пропустите списки 409

Ограничение высоты списка пропуска

Поскольку шаг вставки включает рандомизацию, более точный анализ списков пропуска включает немного вероятности. Сначала, это могло бы походить на основное обязательство, так как полный и полный вероятностный анализ мог потребовать глубокого mathemat-ics (и, действительно, есть несколько таких глубоких исследований, которые появились в литературе исследования, связанной со структурами данных). К счастью, такой анализ не необходим, чтобы понять ожидаемое асимптотическое поведение списков пропуска. infor-mal и интуитивный вероятностный анализ мы даем ниже использования только фундаментальные понятия теории вероятности.

Давайте начнем, определяя математическое ожидание высоты h списка S пропуска с n записями (предполагающий, что мы не заканчиваем вставки рано). Вероятность

то, что у данного входа есть башня высоты, i³ 1 равны вероятности получения i

последовательные головы, когда flipping монета, то есть, эта вероятность - 1/2i. Следовательно,

вероятность Пи, что уровень у меня есть по крайней мере одно положение, самое большее

n

Пи2£ я,

потому что вероятность, что любое из n различных событий имеет место, является самое большее суммой

из вероятностей, что каждый происходит.

Вероятность, что высота h S больше, чем, я равен вероятности, что уровень, у меня есть по крайней мере одно положение, то есть, это - не больше, чем Пи. Это означает, что h больше, чем, скажем, 3 регистрации n с вероятностью самое большее

n

£ P3logn 23logn

= n = 1.

n3 n2

Например, если n = 1000, эта вероятность - та в миллионе съемок общим планом. Более широко, учитывая постоянный c> 1, h больше, чем c регистрируют n с вероятностью самое большее

1/nc-1. Таким образом, вероятность, что h меньше, чем c, регистрируется, n - по крайней мере 1- 1/nc-1.

Таким образом, с высокой вероятностью, высота h S является O (зарегистрируйте n).

Анализ времени поиска в списке пропуска

Затем, рассмотрите продолжительность поиска в списке S пропуска и вспомните, что такой поиск включает два вложенных в то время как петли. Внутренняя петля выполняет просмотр вперед на уровне S, пока следующий ключ не больше, чем ключ поиска k, и внешняя петля опускается к следующему уровню и повторяет просмотр передовое повторение. Так как высота h S является O (зарегистрируйте n) с высокой вероятностью число шагов снижения вниз - O (зарегистрируйте n) с высокой вероятностью.

410

Глава 9. Хеш-таблицы, карты и списки пропуска

Таким образом, у нас есть все же к связанному число передовых просмотром шагов, мы делаем. Позвольте ni быть

число ключей, исследованных, просматривая вперед на уровне i. Заметьте, что после ключа в стартовой позиции каждый дополнительный ключ исследовал в форварде просмотра на уровне, я не могу также принадлежать уровню i + 1. Если бы какой-либо из этих ключей был на предыдущем уровне, мы столкнулись бы с ними в предыдущем передовом просмотром шаге. Таким образом вероятность, что любой ключ посчитан в ni, является 1/2. Поэтому, математическое ожидание ni точно равно ожидаемому количеству раз, мы должны flip справедливая монета, прежде чем это подойдет головы. Это математическое ожидание равняется 2.

Следовательно, ожидаемое количество времени потратило просматривающий вперед на любом уровне, я - O (1). Так как у S есть O (зарегистрируйте n), уровни с высокой вероятностью, поиск в S берет экс-pected, время O (зарегистрируйте n). Подобным анализом мы можем показать, что ожидаемая продолжительность вставки или удаления - O (зарегистрируйте n).

Космическое использование в списке пропуска

Наконец, давайте повернемся к космическому требованию списка S пропуска с n записями. Как мы заметили выше, ожидаемое число положений на уровне, я - n/2i, что означает, что ожидаемое общее количество положений в S

h h

i =

i = å0 2ni = n å0 21i.

Используя Суждение 4.5 на геометрическом суммировании, мы имеем

h

21 h+1 - 1

i = 1- 1 2

å0 21i = = 2 1- 2h1+1 <2 для всего h³ 0.

Следовательно, ожидаемое космическое требование S - O (n).

Таблица 9.3 суммирует исполнение заказанной карты, понятой списком пропуска.

Операция Время

размер, пустой O (1)

firstEntry, lastEntry O (1)

найдите, вставьте, сотрите O (регистрируют n) (ожидал) ceilingEntry, floorEntry, lowerEntry, higherEntry O (регистрируют n) (ожидаемый)

Таблица 9.3: Исполнение заказанной карты осуществлено со списком пропуска. Мы используем n, чтобы обозначить число записей в словаре в то время, когда операция выполнена. Ожидаемое космическое требование - O (n).