Главная / Алгоритмы и дискретные структуры /
Алгоритмы и структуры данных поиска / Тест 9
Алгоритмы и структуры данных поиска - тест 9
Упражнение 1:
Номер 1
Какие свойства должны быть выполнены для любой вершины v
, чтобы дерево являлось бинарным деревом поиска?
Ответ:
 (1) для любой вершины x
все вершины в ее поддереве имеют ключи меньшие, чем ключ x
 
 (2) для любой вершины x
в левом поддереве вершины v
справедливо неравенство key(x) <= key(v)
 
 (3) для любой вершины x
все вершины в ее поддереве имеют ключи большие, чем ключ x
 
 (4) для любой вершины y
в правом поддереве вершины v
справедливо неравенство key(v) <= key(y)
 
Номер 2
Какие действия включает в себя операция вставки (Insert(x)
) в двоичном дереве поиска?
Ответ:
 (1) поиск ключа x
в дереве 
 (2) если поиск завершился неудачей, создадим новую вершину w
с ключем x
 
 (3) если поиск завершился удачей, создадим новую вершину w
с ключем x
 
 (4) вершину w
объявим левым сыном v
, если key(v) > key(w)
 
 (5) вершину w
объявим правым сыном v
, если key(v) < key(w)
 
Номер 3
Какие действия включает в себя операция удаления (Remove(x)
) в двоичном дереве поиска?
Ответ:
 (1) поиск ключа x
в дереве 
 (2) если удаляемая вершина задается не ключем, а ссылкой, то поиск не требуется 
 (3) если найден лист, то он просто удаляется 
 (4) если найден лист, то он меняется местами с родителем 
 (5) если у найденной вершины v
один сын w
, то v
удаляется, вершина w
занимает место v
 
 (6) если у найденной вершины v
два сына, то копируется ключ из вершины v'
, предшествующей v
, в v
. v'
удаляется 
Номер 4
Отметьте утверждения, верные для красно-черных деревьев.
Ответ:
 (1) все листья черные 
 (2) если у красного родителя два сына, то их цвета черные 
 (3) количество черных вершин на пути от корня до листьев должно быть одинаковым 
 (4) у черных вершин все дети красные 
 (5) каждая вершина либо красная, либо черная 
 (6) красно-черные деревья сбалансированны 
 (7) высота поддеревьев различается не более чем на 1 
Упражнение 2:
Номер 1
Для n
-арного дерева поиска каждой вершине соответствует:
Ответ:
 (1) 1 ключ 
 (2) (n-1)
ключей 
 (3) n
ключей 
Номер 2
Какой обход дерева нужно использовать, чтобы ключи двоичного дерева поиска были выведены в порядке неубывания?
Ответ:
 (1) Pre-order обход 
 (2) In-order обход 
 (3) Post-order обход 
Номер 3
что выдает операция Successor(v)
?
Ответ:
 (1) правого сына вершины v
 
 (2) предыдущую вершину перед v
в порядке расположения ключей 
 (3) следущую после v
вершину в порядке расположения ключей 
 (4) родителя вершины v
 
Номер 4
Если в двоичном дереве поиска N
вершин, то каким будет время поиска в дереве?
Ответ:
 (1) O(N)
 
 (2) O(log N)
 
 (3) O(1)
 
 (4) O(N * log N)
 
Упражнение 3:
Номер 1
Какое дерево называется разбалансированным?
Ответ:
 (1) размеры левых и правых поддеревьев в нем сильно различаются 
 (2) если в нем нарушен порядок неубывания ключей 
 (3) если значения ключей в левом поддереве намного меньше значений ключей в правом поддереве 
 (4) если существуют вершины-потомки, ключи которых больше ключей родителей, если в остальных вершинах это свойство не нарушено 
Номер 2
Какую высоту имеет красно-черное дерево с n
внутреннеми вершинами (не считая Nil
-листьев)?
Ответ:
 (1) не менее 2 * lg(n+1)
 
 (2) не больше 2 * lg(n+1)
 
 (3) не менее n/2
 
 (4) не менее n
 
Номер 3
За какое время выполняются операции Search, Min, Max, Successor, Predecessor
для красно-черного дерева с n
вершинами?
Ответ:
 (1) O(N)
 
 (2) O(log N)
 
 (3) O(1)
 
 (4) O(N2)
 
Упражнение 4:
Номер 1
Какие действия предпринимают для сохранения свойств красного черного дерева, если при операции вставки вершины x
, x
и y
оказались красными, если y
- родитель x
, y
- корень?
Ответ:
 (1) x
- становится черным 
 (2) y
- становится черным 
 (3) ничего не предпринимают 
 (4) x
и y
- становятся черными 
Номер 2
Какие действия предпринимают для сохранения свойств красного черного дерева после операции вставки вершины x
в следующей ситуации. Если A
- родитель x
, B
- родитель A
; B
- черная вершина; A
, C
- красные; C
- дядя x
Ответ:
 (1) ничего делать не нужно 
 (2) A
и C
сделать черными, B
- красным 
 (3) A
сделать черными, x
- красным 
 (4) x
сделать черными 
Номер 3
Какие действия предпринимают для сохранения свойств красного черного дерева, если после операции вставки вершины x
получилось следующее. y
- родитель x
, z
- черный родитель y
; t
- черный сын z, дядя x
Ответ:
 (1) ничего не нужно делать 
 (2) y
сделать черным. Левым сыном y
вместо x
сделать красный z
с левым сыном t
, правым x
 
 (3) t, y
сделать черными, z
- красным 
 (4) t, y
сделать красными, x
- черным 
Упражнение 5:
Номер 1
Отметьте верные утверждения, характеризующие операцию splay(x)
в splay-дереве
Ответ:
 (1) при поднятии x
вращения не совершаются 
 (2) x
становится корнем 
 (3) T(время работы операции) = Θ(глубина x)
 
 (4) учетная стоимость любой операции splay O(log N)
 
Номер 2
Отметьте верные утверждения, относящиеся к splay-деревьям
Ответ:
 (1) время работы операции splay
может быть больше чем O(log N)
 
 (2) операция Find
включает операцию splay
 
 (3) сплэй-деревья не поддерживают баланс постоянно, вместо этого они остаются сбалансированными в среднем 
 (4) дерево самобалансируется за счет вызовов операции splay
 
 (5) splay-деревья не поддерживают объединения 
Номер 3
Есть два дерева T1, T2
. При этом все ключи из T1
не больше ключей из T2
. Можно ли их склеить в одно дерево, если да, тогда как это сделать?
Ответ:
 (1) если у корня T1
нет правого сына, тогда T2
приклеивается к нему 
 (2) у T1
найти максимальный элемент, применить к нему операцию splay
, приклеить к правому сыну дерева T2
 
 (3) у T2
найти максимальный элемент, применить к нему операцию splay
, приклеить к правому сыну дерева T1
 
 (4) у T2
найти максимальный элемент, на его место поставить дерево T1
 
 (5) у T1
найти максимальный элемент, на его место поставить дерево T2
 
Упражнение 6:
Номер 1
Какой тип вращения сплэй-дерева изображен на рисунке?
Ответ:
 (1) zig-zig 
 (2) zig 
 (3) zig-zag 
Номер 2
Какой тип вращения сплэй-дерева изображен на рисунке?
Ответ:
 (1) zig-zig 
 (2) zig 
 (3) zig-zag 
Номер 3
Какой тип вращения сплэй-дерева изображен на рисунке?
Ответ:
 (1) zigzig 
 (2) zig 
 (3) zigzag 
Упражнение 7:
Номер 1
Если в splay-дереве есть операция, работающая за O(глубина вершины)
, можно ли ее ускорить до учетного логарифма, если да то как это сделать?
Ответ:
 (1) этого сделать нельзя 
 (2) исключить операцию splay
 
 (3) в конце операции вызывать процедуру splay
от той вершины, до которой дошли 
 (4) в начале операции вызывать процедуру splay
для текущей вершины 
Номер 2
В каком случае можно выполить zig-шаг для splay-дерева?
Ответ:
 (1) если рассматриваемая вершина находится на глубине 0
 
 (2) если рассматриваемая вершина находится на глубине 1
 
 (3) если рассматриваемая вершина находится на глубине 2
 
 (4) если рассматриваемая вершина находится на любой глубине 
Номер 3
В каком случае можно выполить zigzig-шаг
для splay-дерева?
Ответ:
 (1) если рассматриваемая вершина находится на глубине 0
 
 (2) если рассматриваемая вершина находится на глубине 1
 
 (3) если рассматриваемая вершина находится на глубине 2
 
 (4) если рассматриваемая вершина находится на любой глубине 
Упражнение 8:
Номер 1
Какой будет учетная стоимость zig-шага
для операции splay
? Если r
- ранг, r'
- новый ранг, v
- вращаемая вершина, u
- корень в начале операции
Ответ:
 (1) ≤ r'(v) - r(v)
 
 (2) ≤ 1 + 3(r'(v) - r(v))
 
 (3) ≤ 1 + 3(r'(u) - r(u))
 
 (4) ≤ 4
 
Номер 2
Какой будет учетная стоимость zigzig-шага
для операции splay
? Если r
- ранг, r'
- новый ранг, v
- вращаемая вершина, u
- корень в начале операции
Ответ:
 (1) ≤ r'(v) - r(v)
 
 (2) ≤ 1 + 3(r'(v) - r(v))
 
 (3) ≤ 1 + 3(r'(u) - r(u))
 
 (4) ≤ 3(r'(v) - r(v))
 
Номер 3
Для операции Insert
учетная стоимость будет складываться из операции splay
и операции вставки. Какое время потребуется на все это?
Ответ:
 (1) O(N)
 
 (2) O(N * log N)
 
 (3) O(log N)
 
 (4) O(1)
 
Упражнение 9:
Номер 1
Какими свойствами обладают декартовы деревья?
Ответ:
 (1) деревья поиска и хэш-функции 
 (2) деревья поиска и кучи 
 (3) кучи и хэш-функции 
 (4) деревья поиска с вершинами-массивами 
Номер 2
Алгоритм рекурсивного построения декартвого дерева аналогичен алгоритму:
Ответ:
 (1) сортировка слиянием 
 (2) быстрая сортировка 
 (3) двоичный поиск 
 (4) сортировка кучей 
Номер 3
За какое время в среднем выполняется поиск ключа в структуре данных дуча (treap)?
Ответ:
 (1) O(1)
 
 (2) O(log N)
 
 (3) O(N)
 
 (4) O(N2)
 
Упражнение 10:
Номер 1
Отметьте верные утверждения, характеризующие декартовы деревья.
Ответ:
 (1) сложность рекурсивного построения дерева в худшем случае O(log N)
 
 (2) декартово дерево можно построить для всякого набора пар и ключей 
 (3) структура дуча имеет логарифмическое матожидание высоты в худшем случае 
 (4) может поддерживать операции split, merge
 
 (5) дерево можно построить рекурсивно 
 (6) быстрее чем за O(N2)
построить декартово дерево нельзя 
Номер 2
Отметить верные утверждения для операции Merge
декартового дерева
Ответ:
 (1) Merge(T, Null) = T, Merge(Null, t) ≠ T
 
 (2) для деревьев T1 с корнем u
, T2 с корнем v
, p(u) < p(v)
, при их слиянии корнем будет v
 
 (3) сложность O(log N)
 
 (4) для T1
(α
- левое поддерево, β
- правое поддерево) с корнем u
, T2
(γ
- левое поддерево, δ
- правое поддерево) с корнем v
, p(u) < p(v)
, то при слиянии корнем нового дерева будет u
, левым поддеревом α
, правым результат Merge(β, T2)
 
Номер 3
Отметьте верные утверждения для операции Split(T, x)
в декартовом дереве.
Ответ:
 (1) в результате может получиться два дерева T1, T2
, где x
не входит ни в одно из них 
 (2) в результате операции получается три дерева: T1 (< x)
, вершина с ключем x
,T2(> x)  
 (3) если x
= корень T
, α
- левое поддерево, β
- правое поддерево, то Split(T, x) = α, x, β
 
 (4) если ключ корня дерева T < x
, то нужно вызвать рекурсивно Split(β, x) = γ, v, δ
. Получатся деревья T1
(α
- левое поддерево, γ
- правое, v
- корень), T2 = δ
 
 (5) сложность операции O(N * log N)
 
Упражнение 11:
Номер 1
Как происходит удаление ключа x
из декартового дерева T
?
Ответ:
 (1) вершина удаляется аналогично удалению из кучи 
 (2) вызыватся split(T, x)
, получаются деревья T1, T2
. Если x∈T
, удалить вершину с ключем x
из T1
, выполнить Merge(T1, T2)
 
 (3) вершина удаляется аналогично удалению из дерева поиска 
 (4) вершина удаляется без дополнительных операций 
Номер 2
Как происходит добавление ключа x
к декартовому дереву T
?
Ответ:
 (1) выполняется Split(T, x)
, получаем T1, T2
, вершину (x, p)
, p
- приоритет, x
- ключ. Выполняется Merge(T1, (x, p)) = T1x
. Выполняется Merge(T1x, T2)
 
 (2) выполняется Merge(T, x)
 
 (3) вершина добавляется аналогично операции добавления для кучи 
 (4) вершина добавляется аналогично операции добавления для дерева поиска 
Номер 3
Отметьте верное утверждение для операции построения дучи
Ответ:
 (1) если ключи в парах отсортированы, то построение выполняется за O(log N)
 
 (2) для отсортированных Ti
пар в дереве с различными приоритетами. Чтобы найти место в соотвтествии с приоритетами (p
) для новой вершины (xi+1
) вершина (k, p)
вставляется правым сыном xi
, остальные вершины, начиная с xi+1
, вставляются левым сыном для вершины (k, p)
 
 (3) для отсортированных Ti
пар новая вершина в любом случае вставляется в крайнюю правую вершину правым сыном 
Номер 4
В каком направлении эффективнее двигаться по дереву для точки вставки очередной новой вершины при построении дучи?
Ответ:
 (1) сверху вниз 
 (2) снизу вверх 
 (3) слева направо 
 (4) это не важно 
Упражнение 12:
Номер 1
Отметьте верные утверждения, относящиеся к B-деревьям
Ответ:
 (1) степень вершины не может быть больше 2 
 (2) ключи, вставленные операцией Insert
, хранятся в листьях 
 (3) в нелистовых вершинах хранятся копии ключей, находящихся в листьях ниже по дереву 
 (4) в каждой вершине содержатся максимальные ключи из всех поддеревьев с d-сыновьями 
 (5) данные находятся во всех вершинах 
 (6) B-дерево всегда полностью сбалансированно 
Номер 2
Какие операции есть у B-дерева?
Ответ:
 (1) Get(x)
 
 (2) Insert(x)
 
 (3) Remove(x)
 
 (4) Find(x)
 
 (5) Get-min/Get-max
 
Номер 3
Отметить верные утверждения для операции вставки в B-дереве
Ответ:
 (1) при вставке в вершину с d
ключами она разбивается на две группы, в одну из которых попадает новая 
 (2) сложность операции O(N)
 
 (3) при вставке новой вершины в вершину с d
ключами в родителе образуются два максимальных ключа из двух получившихся групп 
Номер 4
Как происходит объединение двух деревьев в операции Unite(x, y)
для ранговой эвристики? Отметьте верные шаги
Ответ:
 (1) сначала находим корни соответствующих поддеревьев x'
и y'
. Если они равны, элементы x
и y
уже содержатся в одном множестве 
 (2) для объединения деревьев Tx
(содержащего x
) и Ty
(содержащего y
) в одно дерево добавляют дугу между ними 
 (3) если высота дерева Tx
(содержащего x
) меньше чем высота Ty
(содержащее y
), то следует выполнить p(y') = x'
. x', y'
- корни соответствующих поддеревьев, p
- родитель. Иначе p(x') = y'
 
 (4) если r(x') = r(y')
(высоты деревьев равны), то выполняется p(x') = y'
, иначе p(y') = x'
 
 (5) значения высот поддеревьев вычисляются каждый раз заново в процессе работы 
Упражнение 13:
Номер 1
Сколько ключей у вершины B-дерева с d
сыновьями?
Ответ:
 (1) d
 
 (2) d-1
 
 (3) d+1
 
 (4) 2*d
 
 (5) 1
 
Номер 2
Какие значения может принимать α
(коэффициент заполнения дерева)?
Ответ:
 (1) от 1/2
до 1
 
 (2) от 1
до d/2
(количество вершин на нижнем уровне) 
 (3) от 0
до d
(количество вершин на нижнем уровне) 
 (4) от 0
до 1/2
 
Номер 3
Отметьте утверждение, не относящееся к работе операции удаления для B-дерева
Ответ:
 (1) сначала ищется вершина на нижнем уровне с удаляемым ключем 
 (2) если у вершины было α*d
ключей, то вершина просто удаляется 
 (3) если у найденной вершины было α*d
ключей, то самый минимальный ключ заимствуется у братьев вершины 
 (4) если у найденной вершины было α*d
ключей и у брата нет лишних ключей, то вершина сливается с братом 
Упражнение 14:
Номер 1
Что делает операция Unite(x, y)
в системе непересекающихся множеств?
Ответ:
 (1) объединяет множества, содержащие x, y
в одно 
 (2) отображает, в одном или в разных множествах содержатся x, y
 
 (3) объединяет два элемента x, y
в один элемент по заранее определенной функции 
 (4) объединяет одноэлементные множества x, y
в одно множество 
Номер 2
Как работает операция Equivalent(x, y)
?
Ответ:
 (1) сравниваются ключи x, y
 
 (2) сравниваются корни деревьев, содержащих элементы x
и y
 
 (3) сравниваются хэш-функции от x, y
, заранее определенные для данного типа множества 
 (4) определяется соответствие x, y
какому-то заданному свойству или условию 
Номер 3
Что делает операция Equivalent(x, y)
?
Ответ:
 (1) объединяет множества, содержащие x, y
 
 (2) отображает, в одном или в разных множествах содержатся элементы x, y
 
 (3) отображает равенство значений заранее определенной функции, взятой от x, y
 
 (4) отображает, соответствуют ли x, y
какому-то заданному свойству или условию 
Упражнение 15:
Номер 1
Какое время работы у операций Unite, Equivalent
для ранговой эвристики?
Ответ:
 (1) O(N)
 
 (2) O(log N)
 
 (3) O(N * log N)
 
 (4) O(1)
 
Номер 2
Для эвристики сжатия путей в чем заключается оптимизация дерева?
Ответ:
 (1) для всех листьев дополнительно делается ссылка на корень дерева 
 (2) для каждой вершины на пути операции Get-root
перебросить ее родителя так, чтобы родителем стал корень дерева 
 (3) дерево поддерживается сбалансированным всегда 
 (4) за счет увеличения степени вершин высота дерева уменьшается 
Номер 3
Какого времени работы позволяет достичь применение двух эвристик: сжатия путей и ранговой для операций Unite, Equivalent
у системы непересекающихся множеств?
Ответ:
 (1) O(log N)
 
 (2) O(log*n)
 
 (3) O(1)
 
 (4) O(N)