Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Двоичные кучи, основные операции и характеристикиСодержание книги Похожие статьи вашей тематики
Поиск на нашем сайте Двоичная куча - такое двоичное дерево, для которого выполнены три условия: 1. Значение в любой вершине не меньше, чем значения её потомков. 2. Глубина листьев (расстояние до корня) отличается не более чем на 1 слой. 3. Последний слой заполняется слева направо. Над кучей можно выполнять следующие операции: · Добавить элемент в кучу. Сложность · Исключить максимальный элемент из кучи. Время работы · Изменить значение любого элемента. Время работы На основе этих операций можно выполнять следующие действия: · Превратить неупорядоченный массив элементов в кучу. Сложность · Отсортировать массив путём превращения его в кучу, а кучи в отсортированный массив. Время работы Здесь N — количество элементов кучи. Пространственная сложность — Хеш-таблицы, метод цепочек Прямая адресация применяется для небольших множеств ключей. Требуется задать динамическое множество, каждый элемент которого имеет ключ из множества U = {0,1,..., m - 1}, где m не слишком велико, никакие два элемента не имеют одинаковых ключей. Для представления динамического множества используется массив (таблицу с прямой адресацией), Т [0..m - 1], каждая позиция, или ячейка, которого соответствует ключу из пространства ключей U. Ячейка k указывает на элемент множества с ключом k. Если множество не содержит элемента с ключом k, то Т [k] = NULL.
Операция поиска по ключу занимает время O(1) Недостатки прямой адресации: • если пространство ключей U велико, хранение таблицы Т размером |U| непрактично, а то и вовсе невозможно — в зависимости от количества доступной памяти и размера пространства ключей • множество К реально сохраненных ключей может быть мало по сравнению с пространством ключей U, а в этом случае память, выделенная для таблицы Т, в основном расходуется напрасно. Хеш-функция – такая функция h, которая определяет местоположение элементов множества U в таблице T.
При хешировании элемент с ключом k хранится в ячейке h(k), хеш-функция h используется для вычисления ячейки для данного ключа k. Функция h отображает пространство ключей U на ячейки хеш-таблицы Т [О..m - 1]: h: U → {0,1,..., m -1}. величина h (к) называется хеш-значением ключа к. Когда множество К хранящихся в словаре ключей гораздо меньше пространства возможных ключей U, хеш-таблица требует существенно меньше места, чем таблица с прямой адресацией. Цель хеш-функции состоит в том, чтобы уменьшить рабочий диапазон индексов массива, и вместо |U| значений можно обойтись всего лишь m значениями. Требования к памяти могут быть снижены до θ(|К|), при этом время поиска элемента в хеш-таблице остается равным О(1) - это граница среднего времени поиска, в то время как в случае таблицы с прямой адресацией эта граница справедлива для наихудшего случая.
Коллизия – ситуация, когда два ключа отображаются в одну и ту же ячейку. Например, h(43) = h(89) = h(112) = k
Метод цепочек: Идея: Хранить элементы множества с одинаковым значением хэш-функции в виде списка.
Анализ Наихудший случай: если хэш-функция для всех элементов множество выдает одно и то же значение. Время доступа равно Θ(n), при |U | = n. Средний случай: для случая, когда значения хэш-функции равномерно распределены. Каждый ключ с равной вероятностью может попасть в любою ячейку таблицы, вне зависимости от того куда попали другие ключи. Пусть дана таблицы T[0..m - 1], и в ней хранится n ключей. Тогда, а = n/m - среднее количество ключей в ячейках таблицы. Время поиска отсутствующего элемента – Θ(1 + α). Константное время на вычисления значения хэш-функции плюс время на проход списка до конца, т.к. средняя длина списка - α, то результат равен Θ(1) + Θ(α) = Θ(1 + α) Если количество ячеек таблицы пропорционально количеству элементов, хранящихся в ней, то n = O(m) и, следовательно, α = n/m = O(m)/m = O(1), а значит поиск элемента в хэш-таблице в среднем требует времени Θ(1). Операции • вставка элемента в таблицу • удаление также требуют времени O(1) Выбор хэш-функции • Ключи должны равномерно распределятся по всем ячейкам таблицы. • Закономерность распределения ключей хэш-функции не должна коррелировать с закономерностями данных. (Например, данные – это четные числа). Методы: • Метод деления • Метод умножения
Метод деления h (k) = k mod m Проблема маленького делителя m Пример №1. m = 2 и все ключи четные Þ нечетные ячейки не заполнены. Пример №2. m = 2r Þ хэш не зависит от бито в выше r. Метод умножения Пусть m = 2r, ключи являются w-битными словами. h(k) = (A • k mod 2w) >> (w - r), где A mod 2 = 1 ∩ 2w-1 < A< 2w • He следует выбирать A близко к 2w-1 и 2w • Данный метод быстрее метода деления
Метод умножения: пример m = 8 = 23, w = 7
|
|||||
|
Последнее изменение этой страницы: 2016-09-20; просмотров: 540; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.11 (0.01 с.) |