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

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

Упражнение 1:
Номер 1
Какие существуют метрики, отображающие эффективность алгоритма?

Ответ:

 (1) процессорное время, память 

 (2) надежность, масштабируемость 

 (3) адаптивность, простота реализации 


Номер 2
В функциональной парадигме при проектировании алгоритма, какой оценкой на время работы интересуются?

Ответ:

 (1) оценкой в худшем случае 

 (2) оценкой в среднем 

 (3) оценкой в лучшем случае 


Номер 3
При размере входных данных N, как рассчитывается время работы алгоритма?

Ответ:

 (1) не зависимо от N 

 (2) в сравнении с N 

 (3) как функция от параметра N 


Упражнение 2:
Номер 1
Считается ли компьютерная память важным ресурсом, учитывающимся при разработке эффективного алгоритма?

Ответ:

 (1) да 

 (2) нет 


Номер 2
Считается ли процессорное время важным ресурсом, учитывающимся при разработке эффективного алгоритма?

Ответ:

 (1) да 

 (2) нет 


Номер 3
Возможна ли такая ситуация при проектировании алгоритма, когда можно сэкономить на одном ресурсе в ущерб другому (процессорное время / память)?

Ответ:

 (1) нет 

 (2) да 


Номер 4
Зависит ли время работы алгоритма от размера входных данных N?

Ответ:

 (1) нет 

 (2) да 


Упражнение 3:
Номер 1
Если T - время работы алгоритма, N - размер входных данных, что отображает функция max T(I) для N(I) = N?

Ответ:

 (1) время работы алгоритма в худшем случае для конкретного входа I 

 (2) время работы алгоритма в лучшем случае при рассмотрении всех входов (I) размера N 

 (3) время работы алгоритма в худшем случае при рассмотрении всех входов (I) размера N 


Номер 2
При рассмотрении времени работы T(M) и памяти M(N) что нас интересует?

Ответ:

 (1) точный вид функций T(N) и M(N) 

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

 (3) приближенный вид функций. Используется o-символика 


Номер 3
При оценивании функций какая оценка соответствует символике f = O(g)?

Ответ:

 (1) оценка снизу 

 (2) оценка сверху 

 (3) асимптотическое равенство 


Номер 4
При оценивании функций символике f = Θ(g) соответствует:

Ответ:

 (1) оценка снизу 

 (2) оценка сверху 

 (3) асимптотическое равенство 


Упражнение 4:
Номер 1
Если при оценивании фиксированного алгоритма оценки сверху и снизу совпали, то какие действия предпринимаются?

Ответ:

 (1) время оценивается как Θ(N) и оценивание сводится к придумыванию наихудшего случая для алгоритма 

 (2) берется сумма оценок сверху и снизу и делится на 2 

 (3) это означает что оценка произведена неверно 


Номер 2
O-символика датет приближенную оценку. Что нужно сделать, чтобы найти оценку точнее?

Ответ:

 (1) выполнить болшее количество тестов 

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

 (3) изменить входные данные 


Номер 3
Что означает найти оценку для фиксированного алгоритма?

Ответ:

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

 (2) нужно найти оценку снизу, сверху. Если оценки совпали, то оценка равна Θ(N). И как правило оценка сводится к наихудшиму случаю 

 (3) означает что нужно найти среднюю оценку для алгоритма 


Номер 4
Что означает найти оценку снизу на задачу?

Ответ:

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

 (2) нужно найти оценки снизу, сверху. Если оценки совпали, то оценка равна Θ(N). И как правило оценка сводится к наихудшиму случаю 

 (3) означает что нужно найти среднюю оценку для алгоритма 


Упражнение 5:
Номер 1
Чем такая схема <CPU - Память> отличается от реальной жизни?

Ответ:

 (1) может быть несколько CPU в одном модуле 

 (2) может быть неопределенное количество промежуточных элементов, например кэш 

 (3) CPU может отсутствовать 

 (4) память устроена гораздо сложнее 

 (5) не учтена внешняя память 

 (6) память может отсутствовать 


Номер 2
Какие из перечисленных ниже утверждений относятся к параметру машинное слово w в стандартной модели оперативной памяти (RAM - model)?

Ответ:

 (1) w это количество ячеек в памяти 

 (2) w это число бит в одной ячейке памяти 

 (3) w это максимально допустимый размер переменной 

 (4) w хранит числа ограниченной битности 

 (5) w это число бит, необходимых для представления одной буквы или цифры 


Номер 3
Какие характеристики относятся к стандартной модели оперативной памяти (RAM - model)?

Ответ:

 (1) каждая ячейка памяти имеет динамический размер 

 (2) память это набор ячеек 

 (3) каждая ячейка это число ограниченной битности 

 (4) манипуляции с числами, хранящимися в ячейке, выполняются за константое время 

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


Упражнение 6:
Номер 1
В чем состоит отличие в работе алгоритма для модели "разрешающие деревья" от RAM - модели и модели машины Тьюринга?

Ответ:

 (1) алгоритм неограничен в своих дейстиях 

 (2) разрешено действие только одного типа 

 (3) в такой модели можно программировать 


Номер 2
Что представляе собой программа для модели "разрешающие деревья"?

Ответ:

 (1) программа на языке, похожем на Assembler, C 

 (2) структура в виде дерева 

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


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

Ответ:

 (1) O(log N) 

 (2) Ω(N*log N) 

 (3) O(N2


Упражнение 7:
Номер 1
В алгоритмической модели "разрешающее дерево" в каком случае работа алгоритма завершается?

Ответ:

 (1) если алгоритм дошел до корня 

 (2) если алгоритм дошел до листа 

 (3) если алгоритм перебрал все листья 

 (4) если алгоритм перебрал все ключи 


Номер 2
С какого элемента начинается работа в разрешающем дереве в стандартном случае?

Ответ:

 (1) с листьев 

 (2) с корня 

 (3) с любого возможного ключа 


Номер 3
Что называется бинарным деревом?

Ответ:

 (1) у которго ключи представлены в двоичном виде 

 (2) у каждой вершины которого, кроме листьев, есть ровно два сына 

 (3) в вершинах которого хранятся двоичные значения 


Номер 4
Что нзывается правильным разрешающим деревом?

Ответ:

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

 (2) которое приводит к требуемому результату, если идти по алгоритму вниз 

 (3) на предпоследнем уровне которого у всех родителей есть по два сына 

 (4) которое приводит к какому-либо результату, если идти по алгоритму вниз 


Упражнение 8:
Номер 1
Что назыавется сложностью для алгоритма, заданного разрешающим деревом?

Ответ:

 (1) это количество всех возможныз путей в дереве 

 (2) это высота дерева, то есть максимальная длина пути от корня дерева до вершины 

 (3) это количество листьев в дереве, то есть элементов на нижних уровнях 


Номер 2
Как оценивается сложность правильного дерева сортировки (в худшем случае)?

Ответ:

 (1) T = Ω(log N) 

 (2) T = Ω(N*log N) 

 (3) T = Ω(N2

 (4) T = O(N) 


Номер 3
Можно ли сортировать быстрее чем за T = Ω(N*log N), если разрешить дополнительные операции с ключами?

Ответ:

 (1) нет 

 (2) да, за T = Ω(N*log(log N)), но это нереализуемо на практике 

 (3) да, за T = Ω(N*log(log N)) и это реализуемо на практике 


Номер 4
Сколько листьев должно быть в правильном дереве для множества из N элементов?

Ответ:

 (1) N2 

 (2) N! 

 (3) N*log N 

 (4) 2N 


Номер 5
Какое из перечисленных ниже высказываний не характеризует разрешающие деревья?

Ответ:

 (1) разрешающее дерево не является алгоритмом в общем понимании этого слова 

 (2) для решения алгоритмической задачи всегда строится одно разрешающее дерево 

 (3) модель не строит единую инструкцию для всевозможных входов в задаче 


Номер 6
Почему модель алгоритма "разрешающее дерево" не очень типична для практики?

Ответ:

 (1) дерево не всегда решает задачу корректно 

 (2) конкретное дерево годится для данного конкретного числа элементов 

 (3) задача выполняется гораздо дольше, чем на других алгоритмических моделях 


Упражнение 9:
Номер 1
Пусть имеется двоичный счетчик, то есть вектор, состоящий из битов, представляющий двоичное число. Изначально все биты равны 0. Пусть есть операция Increment, какова ее сложность в худшем случае?

Ответ:

 (1) O(1) 

 (2) Θ(N) 

 (3) O(N2

 (4) O(log N) 


Номер 2
Пусть имеется двоичный счетчик, то есть вектор, состоящий из битов, представляющий двоичное число. Изначально все биты равны 0. Для M операций Increment, какова их сложность в худшем случае?

Ответ:

 (1) O(M + N) 

 (2) O(M*N) 

 (3) O(N) 

 (4) O(M) 


Номер 3
Пусть имеется двоичный счетчик, то есть вектор, состоящий из битов, представляющий двоичное число. Изначально все биты равны 0. Для M операций Increment в каком случае справедлива оценка O(M*N)?

Ответ:

 (1) в лучшем случае 

 (2) в худшем случае 

 (3) в среднем 


Упражнение 10:
Номер 1
По какому принципу выбирается размер reallocation для аддитивного метода? Если C - старый размер массива.

Ответ:

 (1) C' = C*d, d - константа > 1 

 (2) C' = C + d, d - число добавляемых элементов 

 (3) C' = C2/d, d - константа > 1 


Номер 2
По какому принципу выбирается размер reallocation для мультипликативного метода? Если C - старый размер массива.

Ответ:

 (1) C' = C*d, d - константа > 1 

 (2) C' = C + d, d - число добавляемых элементов 

 (3) C' = C2/d, d - константа > 1 


Номер 3
Какое время будет затрачено на выполнение последовательности из M операций для аддитивного метода увеличения рамера массива?

Ответ:

 (1) O(M * log M) 

 (2) O(M2

 (3) O(M) 


Номер 4
Какое время будет затрачено на выполнение последовательности из M операций для мультипликативного метода увеличения рамера массива?

Ответ:

 (1) O(M * log M) 

 (2) O(M) 

 (3) O(M2


Упражнение 11:
Номер 1
Для оценки сложности цепочки инкрементов, пусть 1 у.е. компьютер требует за 1 элементарную операцию. Пусть записано некоторое двоичное число 010111, над каждой 1 лежит по 1 у.е., сколько потребуется элементарных действий для операции Increment?

Ответ:

 4 


Номер 2
Пусть 1 у.е. компьютер требует за 1 элементарную операцию. Пусть записано некоторое двоичное число, начиная справа имеем k единиц до 0. При текущем балансе -(k+1) (credit: k, debit: 1), если k единиц снять со структуры, 1 положить, сколько нужно попросить у клиента, чтобы выйти в 0?

Ответ:

 2 


Номер 3
Пусть 1 у.е. компьютер требует за 1 элементарную операцию. Пусть записано некоторое двоичное число, начиная справа имеем k единиц до 0. При текущем балансе -(k+1) (credit: k, debit: 1), если k единиц снять со структуры, 1 положить, сколько нужно попросить у клиента, чтобы выйти в 0 для 5 запросов?

Ответ:

 10 


Номер 4
Пусть 1 у.е. компьютер требует за 1 элементарную операцию. Пусть записано некоторое двоичное число, начиная справа имеем k единиц до 0. При текущем балансе -(k+1) (credit: k, debit: 1), чему равна учетная стоимость?

Ответ:

 2 


Упражнение 12:
Номер 1
Для библиотеки std::vector, реализующей массив на C++, что происходит, когда нужно добавить еще один элемент в конец массива, если массив полностью заполнен?

Ответ:

 (1) происходит ошибка 

 (2) переопределение размера(realocatioon), все элементы копируются в новый массив увеличенного размера, элемент добавляется в конец 

 (3) последний элемент массива заменяется на новый 

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

 (5) для добавляемого элемента создается дополнительный пустой массив, который затем прибавляется к заполненному 


Номер 2
При анализе учетных стоимостей операций C(ai) с каждым из состояний Si связано некоторое вещественное значение ϕi, называемое потенциалом. Тогда чему равняется приведенная стоимоть C'(ai)?

Ответ:

 (1) C'(ai) = C(ai) + ϕi - ϕi-1 

 (2) C'(ai) = C(ai) - C(ai-1

 (3) C'(ai) = C(ai) + ϕi-1 + ϕi 


Номер 3
Для задачи о бинарном поиске, какую нужно использовать функцию потенциала, чтобы получить приведенную стоимость C'(ai) = 2

Ответ:

 (1) ϕ(S) = #(1 in S) - количество единиц в состоянии S 

 (2) ϕ(S) = -#(1 in S) - количество единиц в состоянии S 

 (3) ϕ(S) = k + 1 - количество единиц справа до 0 в состоянии S 

 (4) ϕ(S) = k - количество единиц слева до 0 в состоянии S 


Номер 4
Если подобрать такую функцию потенциала ϕ, что приведенная стоимость будет ограничена каким-то числом M: C'(ai) <= M. Тогда какая будет линейная оценка для суммы стоимостей?

Ответ:

 (1) Σ(i..n)C(ai) = ΣC'(ai) - ϕ(Sn

 (2) Σ(i..n)C(ai) = ΣC'(ai) - ϕ(S1) + ϕ(Sn

 (3) Σ(i..n)C(ai) = ΣC'(ai) + ϕ(Sn


Упражнение 13:
Номер 1
Какие две операции должен выполнять хороший стэк?

Ответ:

 (1) push, get 

 (2) push, pop 

 (3) insert, get 

 (4) enqueue, decueue 


Номер 2
Какова учетная стоимость операций в стэке, реализованном с помощью вектора?

Ответ:

 (1) O(N) 

 (2) O(1) 

 (3) O(log N) 


Номер 3
Что называется гистерезисом с точки зрения структур данных?

Ответ:

 (1) если в структуре данных реализованы дополнительные свойства (поддержка минимума, максимума, сортировка) 

 (2) если структура данных может не только увеличивать свой размер, но и уменьшать его в зависимости от заполненности 

 (3) если в структуре данных хранятся все предыдущие ее модификации 

 (4) если структура данных может только увеличивать свой размер, но не уменьшать 


Номер 4
Как будет называться свойство структуры данных, для которой выполняется следующее: если коэффициент заполнения становится больше 1, тогда размер структуры увеличивается (например в 2 раза), если коэффициент заполнения падает до 1/4 раза, тогда размер структуры уменьшается в два раза.

Ответ:

 (1) амортизация 

 (2) гистерезис 

 (3) persistant (версионирование) 


Упражнение 14:
Номер 1
Какие минусы есть у структуры данных Linked lists при использовании ее для реализации стэка?

Ответ:

 (1) локальность с точки зрения кэшироваия 

 (2) много мелких аллокаций (переопределений памяти) 

 (3) memory overhead (много дополнительного места для поддержания структуры) 

 (4) нельзя хранить разные типы даных 


Номер 2
Какие плюсы есть у структуры данных Chunked vector по сравнению с Linked lists, при использовании в качестве стэка?

Ответ:

 (1) доступ к элементу по индексу происходит быстрее 

 (2) меньше overhead (дополнительного места для поддержания структуры) 

 (3) лучше локальность с точки зрения кэширования 

 (4) лучше с точки зрения аллокаций 


Номер 3
Какие высказывания относятся к структуре данных chunked vector?

Ответ:

 (1) в каждом узле содержатся указатель на следующий узел и данные 

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

 (3) эта структура используется для реализации стэка 

 (4) в конце структуры указатель нулевой, указатель на верний элемент хранится отдельно 

 (5) время доступа к элементу константное 


Номер 4
Какие высказывания относятся к структуре данных linked lists?

Ответ:

 (1) в каждом узле содержатся указатель на следующий узел и данные 

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

 (3) эта структура используется для реализации стэка 

 (4) в конце структуры указатель нулевой, указатель на верний элемент хранится отдельно 

 (5) время доступа к элементу константное 


Упражнение 15:
Номер 1
Как эффективно реализовать стэк с поддержкой минимума?

Ответ:

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

 (2) использовать два стэка: один основной для значений, второй для хранения ответов для текущего минимума 

 (3) использовать один стэк и функцию для вычисления минимума 


Номер 2
Как (с помощью каких структур данных) можно эффективно реализовать очередь с поддержкой минимума?

Ответ:

 (1) с помощью очереди и стэка 

 (2) с помощью двух стэков 

 (3) очередь с дополнительной переменной 

 (4) с помощью очереди и функции для вычисления минимума 


Номер 3
Какая будет стоимость операций enqueue и dequeue в учетном смысле, если очередь реализована с помощью двух стэков?

Ответ:

 (1) O(N) 

 (2) O(1) 

 (3) O(log N) 

 (4) O(N * log N) 


Номер 4
С помощью каких структур данных, перечисленных ниже, нельзя реализовать очередь?

Ответ:

 (1) linked lists 

 (2) один стэк 

 (3) chunked vector 

 (4) два стэка 


Номер 5
Что такое циклическая очередь?

Ответ:

 (1) очередь, реализованная с помощью структуры данных linked lists 

 (2) очередь, в которой элементы хранятся по индексам, вычисляемым по некоторому модулю 

 (3) очередь, реализованная с помощью структуры данных chunked vector 

 (4) очередь, динамически изменяющая свой размер 


Упражнение 16:
Номер 1
Что означает свойство persistent (версионирование) для структуры данных?

Ответ:

 (1) структура данных изменяет свои свойства в зависимости от текущей задачи 

 (2) структура данных хранит историю своего развития и модификаций 

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


Номер 2
Какая существует главная проблема, мешающая реализации immutable очереди с помощью двух стэков?

Ответ:

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

 (2) трудность анализа учетных стоимостей 

 (3) сложность реализации 

 (4) низкая производительность 


Номер 3
Какое время выполнения операции Push у persistent стэка? Если N - длина стэка

Ответ:

 (1) O(log N) 

 (2) O(1) 

 (3) O(N) 


Номер 4
Существует подход для освобождения памяти для persistent stack, называемый подсчет ссылок (ref-counting). Как его можно описать?

Ответ:

 (1) для каждой вершины (узла) мы храним указатели на все ссылающиеся вершины 

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

 (3) помечаются все элементы, достижимые из корней 


Упражнение 17:
Номер 1
Выберите, чем характеризуется подход для освобождения памяти для persistent stack, называемый подсчет ссылок (ref-counting)?

Ответ:

 (1) он корректен 

 (2) необходимо хранить счетчик на каждую вершину 

 (3) структура при этом не является неизменияемой (immutable) 

 (4) помечаются все элементы, достижимые из корней 

 (5) структура эффективна в многопоточном режиме 


Номер 2
Чем характеризуется подход с использованием сборщика мусора для эффективной работы с памятью в peristent-стэке?

Ответ:

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

 (2) помечаются элементы, достижимые из корней 

 (3) структура при этом по настоящему неизменяема 

 (4) такая структура эффективна в многопоточном режиме 


Номер 3
Каких двух строк не хватает в приведенном псевдокоде операции Push persistent-стэка? S - ссылка на стэк, v - данные для новой вершины.
	    Push(S, v)
	w = new Node()
	...
	...
	return w		
	

Ответ:

 (1) w.data = v 

 (2) w.next = S 

 (3) w = S 

 (4) S.data = v 

 (5) S.next = w 


Номер 4
Какие строки лишние в приведенном псевдокоде операции Pop для persistent-стэка? S - ссылка на стэк.
	    Pop(S)
	w = new Node()
	w.next = S	
	return S.next		
	

Ответ:

 (1) w = new Node() 

 (2) w.next = S 

 (3) return S.next 




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