игра брюс 2048
Главная / Алгоритмы и дискретные структуры / Алгоритмы и структуры данных поиска / Тест 6

Алгоритмы и структуры данных поиска - тест 6

Упражнение 1:
Номер 1
Какие существуют основные операции для отображений Map/Dictionary?

Ответ:

 (1) Insert(v) - вставить значение v в конец словаря 

 (2) Set(k, v) - назначить ключу k значение v 

 (3) Get(k) - получить по ключу k значение v 

 (4) Extract-min - получить ключ для минимального значения 


Номер 2
С помощью каких структур данных можно реализовать Map/Dictionary?

Ответ:

 (1) простого массива 

 (2) хэш-таблиц 

 (3) односвязного или двусвязного списка 

 (4) деревьев поиска 


Номер 3
В каких случаях можно использовать прямую адресацию при реализации отображения?

Ответ:

 (1) когда количество ключей не сильно превосходит количества значений 

 (2) если можно переименовать ключи так, чтобы номера были из компактного сегмента 

 (3) если множество значений небольшое и объекты числовые, но необязательно имеют номера из ограниченного сегмента, переименовывать нет возможности 

 (4) если множество ключей k = {0,..., 264 - 1} 


Упражнение 2:
Номер 1
Какая скорость чтения и записи для отображения, реализованного с помощью прямой адресации?

Ответ:

 (1) O(log N) 

 (2) O(1) 

 (3) O(N) 


Номер 2
Что такое хэш-коллизия?

Ответ:

 (1) совпадение хэш-кодов различных ключей 

 (2) совпадение хэш-кодов для одинаковых значений из множества 

 (3) совпадение хэш-кодов одинаковых ключей 


Номер 3
Какая хэш-функция называется совершенной?

Ответ:

 (1) имеющая время работы операций чтения/записи O(1) 

 (2) не имеющая коллизий 

 (3) не использующая дополнительной памяти для работы 


Упражнение 3:
Номер 1
Для метода цепочек, использующегося при разрешении коллизий в чем заключается основная идея?

Ответ:

 (1) все ключи, имеющие разный хэш-код образуют одну ячейку-список хэш-таблицы 

 (2) все ключи, имеющие одинаковый хэш-код, попадают в одну ячейку-список хэш-таблицы 

 (3) если ячейка с вставляемым хэш-ключем уже занята, то пробуют вставить в следующую, пока не найдут для нее место 

 (4) для поиска места для вставляемого ключа ячейки таблицы просматриваются последовательно, но с некоторым шагом k 


Номер 2
Какие сложности у операций добавления и извлечения для метода цепочек?

Ответ:

 (1) O(L), O(L), L - длина цепочки для текущей хэш-функции 

 (2) O(L), O(L * N), L - длина цепочки для текущей хэш-функции 

 (3) O(L), O(L), L - длина цепочки для текущей хэш-функции 

 (4) O(1), O(L), L - длина цепочки для текущей хэш-функции 


Номер 3
Для метода открытой адресации при разрешении коллизий, какие действия предпринимаются если ячейка с вставляемым хэш-ключем уже занята?

Ответ:

 (1) пробуют вставить в следующую, пока не найдут для нее место 

 (2) перезаписывают ячейку с новым ключем 

 (3) все ключи, имеющие одинаковый хэш-код, образуют одну ячейку-список 

 (4) для поиска места для вставляемого ключа ячейки таблицы просматриваются последовательно, но с некоторым шагом k 


Упражнение 4:
Номер 1
Какая формула задает линейный способ просматривания ячеек хэш-таблицы?

Ответ:

 (1) h(k,j) = (h0(k) + j * h1(k)) mod m 

 (2) h(k,j) = (h0(k) + j) mod m 

 (3) h(k,j) = (h0(k) + j * h0(k)) mod m 


Номер 2
Какая формула задает метод двойного хэширования для просматривания ячеек хэш-таблицы?

Ответ:

 (1) h(k,j) = (h0(k) + j * h1(k)) mod m 

 (2) h(k,j) = (h0(k) + j) mod m 

 (3) h(k,j) = (h0(k) + j * h0(k)) mod m 


Номер 3
Для метода двойного хэширования, использующегося при разрешении коллизий в чем заключается основная идея?

Ответ:

 (1) все ключи, имеющие разный хэш-код образуют одну ячейку-список хэш-таблицы 

 (2) все ключи, имеющие одинаковый хэш-код, попадают в одну ячейку-список хэш-таблицы 

 (3) если ячейка с вставляемым хэш-ключем уже занята, то пробуют вставить в следующую, пока не найдут для нее место 

 (4) для поиска места для вставляемого ключа ячейки таблицы просматриваются последовательно, но с некоторым шагом k 


Упражнение 5:
Номер 1
Какое предположение должно быть выполнено, чтобы была справедлива гипотеза простого равномерного хэширования?

Ответ:

 (1) значение хеш-функции от ключа k является случайной величиной, равномерно распределенной на множестве {0, ..., M1} 

 (2) для различных ключей k1 и k2 хеш-коды h(k1) и h(k2) зависят друг от друга 

 (3) вероятность появления коллизий<= 0.01 

 (4) количество значений не должно превышать 264 - 1 


Номер 2
Пусть мы выполняем запрос Get для некоторого ключа k и пусть перед этим в структуру были вставлены некоторые ключи k1,...,kn. Для каждого ключа ki обозначим через Xi,j случайную величину, равную 1, если h(ki)=h(kj), и 0 в противном случае. Какая будет длина цепочки с индексом i?

Ответ:

 (1) Σ(i=1..n)1/Xi,j 

 (2) Σ(i=1..n)Xi,j 

 (3) Σ(i=1..n)(Xi,j * h(ki)) 


Номер 3
Для независимых, равномерно распределенных на множестве {0, ..., m1} случайных величин для каждого ключа ki обозначим через Xi,j случайную величину, равную 1, если h(ki)=h(kj), и 0 в противном случае. Чему равно матожидание случайной величины?

Ответ:

 (1) EXi,j = 1 если h(ki) ≠ h(kj). EXi,j = 0 если h(ki) = h(kj

 (2) EXi,j = 1/m если h(ki) ≠ h(kj). EXi,j = 1 если h(ki) = h(kj

 (3) EXi,j = 1/(m2) если h(ki) ≠ h(kj). EXi,j = 0 если h(ki) = h(kj


Упражнение 6:
Номер 1
Как вычисляется коэффициент заполнения для равномерно распределенной хэш-функции H: k -> {0,..., N-1}?

Ответ:

 (1) α = N/M 

 (2) α = M/N 

 (3) α = 1 + M/N 

 (4) α = 1 + N/M 


Номер 2
В предположении гипотезы простого равномерного хэширования, чему равно среднее время безуспешного поиска ключа для хэш-функции H: k -> {0,..., N-1}?

Ответ:

 (1) Θ(M/N) 

 (2) Θ(log M/N) 

 (3) Θ(M * N) 

 (4) Θ(M/N + 1) 


Номер 3
Каким значением ограничена вероятность коллизий для двух различных ключей для универсального семейства хэш-функций H: k -> {0,..., N-1}?

Ответ:

 (1) P[h(a) = h(b)] <= 0.5 

 (2) P[h(a) = h(b)] <= 1/N 

 (3) P[h(a) = h(b)] <= 1 


Упражнение 7:
Номер 1
В случае универсального хэширования чему равно среднее время успешного поиска ключа для хэш-функции H: k -> {0,..., N-1}, если k1, ..., kn - все ключи, присутствующие в хеш-таблице?

Ответ:

 (1) Θ(1) 

 (2) Θ(M/N + 1) 

 (3) Θ(M) 

 (4) Θ(N) 


Номер 2
Если использовать универсальное семейство хэш-функций для хранения n ключей, то при размере хэш-таблицы M = n2, какова будет вероятность получить хотя бы одну коллизию?

Ответ:

 (1) не больше 2/3 

 (2) не больше 1/2 

 (3) меньше 1/M 

 (4) меньше 1/N 


Номер 3
Каким должне быть минимальный размер хэш-таблицы, чтобы вероятность получить хотя бы одну коллизию не превосходила 1/2, если n - количество ключей?

Ответ:

 (1) n! 

 (2) n2 

 (3) n3 

 (4) 2n 

 (5)


Упражнение 8:
Номер 1
При каких условия можно получить свободную от коллизий хэш-функцию?

Ответ:

 (1) использовать метод открытой адресации 

 (2) если неизвестно с какими ключами предстоит иметь дело 

 (3) выбрать размер хэш-таблицы квадратичным по количеству ключей 

 (4) выбирать хэш-функции из универсального семейства 


Номер 2
Какие характеристики имеет совершенная хэш-функция?

Ответ:

 (1) имеет вероятность получения коллизий <= 1/m2, m - количество ключей 

 (2) просто вычислима, за O(1) в худшем случае 

 (3) линейное в среднем время построения 

 (4) не дает коллизий на ограниченном множестве {k1,...,kn


Номер 3
Отметьте верные утверждения, относящиеся к семейству универсальных хэш-функций: Ha,b = ((a*k + b) mod p) mod m, b - произвольный вычет

Ответ:

 (1) p - первое простое число, следующее после m 

 (2) семейство хэш-функций универсально, так как вероятность получить коллизию не превосходит 1/m 

 (3) m - количество ключей 

 (4) среднее время успешного поиска ключа Θ(α + 1) 

 (5) a - произвольный вычет по модулю p 


Упражнение 9:
Номер 1
Как зависит размер памяти, необходимый для реализании метода совершенного хэширования от количества ключей n?

Ответ:

 (1) квадратично 

 (2) линейно 

 (3) константно 

 (4) логарифмически 


Номер 2
За какое в среднем количество проб можно обнаружить хэш-функцию, не дающую коллизий для второго уровня схемы совершенного хэширования?

Ответ:

 (1) O(N) 

 (2) O(1) 

 (3) O(N2

 (4) O(log N) 


Номер 3
Пусть на первом уровне схемы совершенного хэширования используется хеш-таблица размера m = n, n - количество ключей. Пусть ni обозначает количество ключей, получивших (на первом уровне) хеш-значение i (0 <= i < m). Тогда если использовать в каждой ячейке первого уровня вышеописанную схему, свободную от коллизий, сколько потребуется дополнительной памяти?

Ответ:

 (1) O(∑ ni

 (2) O(∑ ni2

 (3) O(n) 

 (4) O(n2


Упражнение 10:
Номер 1
Что означает ложно-положительное срабатывание для интерфейса множества с ошибками фильтр Блюма?

Ответ:

 (1) ключ в множестве есть, а операция Contains(k) выдает False 

 (2) операция Contains(k) выдала True, а ключа в множестве нет 

 (3) при попытке удаления ключа (Remove(k)) создается его резервная копия 

 (4) если выполняется не тот запрос к множеству, который был отправлен 


Номер 2
Для фильтра Блюма как изменяется вероятность ложного срабатывания с увеличением размера хранимого множества (числа вставленных элементов)?

Ответ:

 (1) уменьшается 

 (2) увеличивается 

 (3) не изменяется 


Номер 3
Для фильтра Блюма как изменяется вероятность ложного срабатывания если объем памяти, заране заданный пользователем для хранения битового массива, увеличивается?

Ответ:

 (1) увеличивается 

 (2) уменьшается 

 (3) не изменяется 


Упражнение 11:
Номер 1
Какие существуют стандартные операции для интерфейса множества с ошибками, например для фильтра Блюма?

Ответ:

 (1) Remove(k) 

 (2) Insert(k) 

 (3) Contains(k) 

 (4) Get(k) 


Номер 2
Какие допустимы ситуации для односторонней ошибки в интерфейсе множества с ошибками?

Ответ:

 (1) разрешается ложноотрицательное срабатывание, когда ключ в множестве есть, а операция Contains(k) выдает False 

 (2) разрешается ложноположительное срабатывание, при котором операция Contains(k) выдалет True, а ключа в множестве нет 

 (3) запрещается ложноположительное срабатывание 

 (4) запрещается ложноотрицательное срабатывание 


Номер 3
Отметьте верные утверждения, относящиеся к фильтру Блюма

Ответ:

 (1) конструктивно данный фильтр представляет собой булев массив 

 (2) для проверки на принадлежность ключа k вычисляют его хэш-коды h1(k), ... , hs(k), если соответствующие ячейки равны True, то ключ принадлежит множеству 

 (3) в его реализации используется одна хэш-функция 

 (4) для добавления ключа k вычисляются его хеш-коды h1(k), ... , hs(k), после чего в соответствующие ячейки записывается значение True 

 (5) удаление элементов из фильтра Блюма можно реализовать, если он задан таблицей булевых значений 


Упражнение 12:
Номер 1
Как можно проверить, попадает ли ключ k в хэш-таблицу T фильтра Блюма, заданного хэш-функциями h1,...,hs: k -> [0, m-1] или нет?

Ответ:

 (1) вычислить логическое ИЛИ по всем значениям T[hi(k)]. Если оно равно 0 то не попадает, если 1, то попадает 

 (2) вычислить логическое И по всем значениям T[hi(k)]. Если оно равно 0 то не попадает, если 1, то попадает 

 (3) вычислить T[∑ hi(k)]. 0 - не попадает, 1 - попадает 


Номер 2
Как происходит вставка (Insert(k)) ключа k в таблицу T, реализованную фильтром Блюма?

Ответ:

 (1) вычислить хэш-коды h1(k),...,hs(k), после чего в получившиеся индексы ячеек булева массива T записать значение True 

 (2) вычислить сумму ∑ hi(k) и записать в таблицу T, в ячейку с получившимся индексом значение True 

 (3) по хэш-функции h(k) определяется булево значение и вставляется в индекс таблицы T 

 (4) вычислить хэш-коды h1(k),...,hs(k), после чего в соответствующие значения записать ключ k 


Номер 3
Предположим, что мы вставили различные k1,...,kn ключей в хэш-таблицу Блюм-фильтра с помощью хэш-функций h1(k),...,hs(k): k -> [0, m-1]. Какая будет вероятность ложного положительного срабатывания?

Ответ:

 (1) (1 - 1/m)s*n 

 (2) (1 - (1 - 1/m)s*n)s 

 (3) 1 - (1 - 1/m)s*n 

 (4) (1 - (1 - 1/m)n)s 


Номер 4
Для Блюм-фильтра, заданного хэш-функциями h1(k),...,hs(k): k -> [0, m-1], какая будет вероятность того, что после вставки n ключей произвольно выбранный бит будет равен False?

Ответ:

 (1) (1 - 1/m)s*n 

 (2) (1 - 1/m) 

 (3) 1 - (1 - 1/m)s*n 

 (4) (1 - n/m)s


Номер 5
Для Блюм-фильтра, заданного хэш-функциями h1(k),...,hs(k): k -> [0, m-1], какая будет вероятность того, что после вставки n ключей одна хэш-функция выдает значение, отличное от произвольно выбранного бита в таблице?

Ответ:

 (1) (1 - 1/m)s*n 

 (2) (1 - n/m) 

 (3) 1 - (1 - 1/m)s*n 

 (4) (1 - 1/m) 


Упражнение 13:
Номер 1
При реализации структуры приближенного множества (Lossy Map) с помощью более блюмового фильтра, как будет работать операция Get(k)?

Ответ:

 (1) выдает по некоторому ключу значение и с большой вероятностью это значение удовлетворяет нашим требованиям 

 (2) может выдать правильное значение, если функция определена в этой точке или если функция неопределена в этой точке, то выдать случайное значение. Или выдает Null, если функция неопределена в этой точке 

 (3) выдает значение, если функция определена в этой точке, либо выдает Null, если функция неопределена в этой точке 


Номер 2
Предположим, что при реализации структуры приближенное множество (Lossy Map) с помощью более блюмового фильтра функция отображает из ключей в один бит. Как можно реализовать такую структуру?

Ответ:

 (1) Такую структуру реализовать нельзя 

 (2) с помощью одного Блюм-фильтра для области определения функции, значению 0 будет выдаваться если функция неопределена в этой точке, 1 если функция определена или неопределена для случая ложноположительного срабатывания 

 (3) С помощью двух множеств: прообраз всех значений 0 и прообраз всех значений 1. Построить два Блюм-фильтра для этих двух множеств 


Номер 3
При реализации структуры приближенное множество (Lossy Map) с помощью двух Блюм-фильтров (использованных для множеств-прообразов 0 и 1) что нужно сделать, чтобы избежать ситуации, когда при запросе Get(k) оба Блюм-фильтра вернули 1?

Ответ:

 (1) такие значения признаются ложноположителными срабатываниями, их количество всегда невелико 

 (2) на образованном такими значениями множестве C изготавливают два более мелких Блюм-фильтра для множеств-прообразов 0 и 1, затем продолжают создание иерархии таких множеств, пока они не перестанут пересекаться 

 (3) признают такие значения равными 0 

 (4) удаляют все такие значения из множества 




Главная / Алгоритмы и дискретные структуры / Алгоритмы и структуры данных поиска / Тест 6