Вопросы теоретического анализа

В разделе приведены вопросы, используемые на полном экзамене. При распределении вопросов студент получает номера вопросов из данных списков.

Блок "Удовлетворительно"

Дайте формальное математическое определение O- и Ω-нотаций.

Дайте формальное математическое определение O- и Θ-нотаций.

Дайте формальное математическое определение Θ- и Ω-нотаций.

Объясните разницу между худшим случаем и лучшим случаем (O- и Ω-нотация) на примере алгоритма быстрой сортировки.

Объясните разницу между средним случаем и лучшим случаем (Θ- и Ω-нотация) на примере алгоритма сортировки вставками.

В чем разница между абстрактным типом данных и структурой данных? Приведите пример для очереди и деки.

Перечислите преимущества и недостатки односвязного списка по сравнению со статическим массивом.

Перечислите преимущества и недостатки двунаправленного списка по сравнению с динамическим массивом.

Обоснуйте, почему вставка в середину связного списка формально занимает O(1), а на практике работает гораздо медленнее?

Опишите алгоритм сортировки подсчетом. В каких случаях она эффективна?

Почему сортировка пузырьком считается неэффективной? Назовите ее сложность.

Опишите алгоритм BFS (поиск в ширину). Какую структуру данных он использует и почему?

Опишите алгоритм DFS (поиск в глубину). Какую структуру данных он использует и почему?

Опишите алгоритм Дейкстры с точки зрения жадных алгоритмов.

Опишите алгоритм Дейкстры с использованием матрицы смежности.

Что такое хэш-фукнция и коллизия?

Что такое коллизия в хеш-таблице и какие есть способа борьбы с ней?

Что такое коэффициент заполнения, где и как он применяется? Для чего нужно перехеширование?

Перечислите преимущества и недостатки сбалансированного дерево поиска по сравнению с несбалансированным?

Что такое высота дерева? Докажите оценку высоты АВЛ и красно-черного дерева из n элементов.

Блок "Хорошо / Отлично"

Приведите пример алгоритма, где O, Θ и Ω-оценки различаются. Объясните, почему на практике важнее знать О-оценку, хотя она «пессимистична».

Объясните идею метода потенциалов для амортизационного анализа на примере динамического массива (при переполнении массив удваивается).

Сравните методы бухгалтерского учета и агрегирования. Какой из них понятнее для программиста и почему?

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

Почему в развернутом связном списке размер блока (k) выбирают фиксированным (16-64), а не вычисляют как √n?

Для сценария «частые вставки/удаления в начале и последовательный обход» выберите оптимальную структуру из: массив, односвязный список, двусвязный список, развернутый список. Обоснуйте.

Для сценария «частые случайные доступы по индексу, редкие модификации» выберите оптимальную структуру из: массив, односвязный список, двусвязный список, развернутый список. Обоснуйте.

Для сценария «непредсказуемый паттерн доступа с преобладанием операций в середине структуры» выберите оптимальную структуру из: массив, односвязный список, двусвязный список, развернутый список. Обоснуйте.

Опишите идею XOR-связного списка, почему он не получил широкого распространения, несмотря на экономию памяти?

Объясните влияние выбора последовательности шагов (последовательность Шелла, последовательность Седжвика) на сложность сортировки Шелла.

Докажите, что TimSort работает за O(n log n) в худшем случае. Для чего нужен режим «галопа»?

Докажите корректность LSD-сортировки методом математической индукции.

Почему Radix sort может работать быстрее, чем O(n log n), и не противоречит ли это теореме о нижней оценке для сортировок сравнениями?

Проведите амортизационный анализ методом бухгалтерского учета операции вставки и удаление в хеш-таблицу с цепочками при динамическом перехешировании.

Докажите, что BFS гарантированно находит кратчайший путь в невзвешенном графе.

Сравните временную сложность BFS для графа, представленного матрицей смежности и списками смежности. Почему списки предпочтительнее?

Обоснуйте выбор между реализацией алгоритма Дейкстры на массиве O(n²) и на двоичной куче O((n+m)log n).

Докажите теорему о том, что высота АВЛ-дерева не превышает 1.44 * log2(n).

Сравните АВЛ и красно-черные деревья: какое из них обеспечивает более жесткую балансировку, а какое — более быстрые вставки/удаления и почему?

Обоснуйте преимущества B+-деревьев (классические B-деревья) для баз данных, особенно в контексте блочного ввода-вывода.

Как выбор параметра t (порядка/минимальной степени) B-дерева влияет на производительность в системах с жесткими дисками (HDD/SSD)?

Для структуры данных Rope докажите, что высота дерева остается O(log n) при использовании АВЛ-балансировки.

Старые вопросы (не актуально)

Вопрос №1

Сделайте сравнительный анализ O, Ω и Θ-нотаций, включая их формальные математические определения. Объясните, почему в практике программирования и при проектировании систем наибольшее распространение получила O-нотация, несмотря на её «пессимистичность». Проиллюстрируйте свой ответ примером алгоритма, для которого O, Ω и Θ-оценки различны, и объясните, какие практические выводы для разработчика из этого следуют.

Вопрос №2

Сравните три основных метода амортизационного анализа (агрегирования, бухгалтерский, потенциалов) на примере одной и той же структуры данных (на усмотрение студента). Какой из методов, по вашему мнению, является наиболее универсальным и мощным инструментом доказательства, а какой — наиболее интуитивно понятным для программиста? Обоснуйте свою точку зрения.

Вопрос №3

На примере стека, очереди и дека раскройте практическое различие между абстрактным типом данных (АТД) и конкретной структурой данных. Почему связный список считается конкретной структурой данных, а не АТД? Проанализируйте, как выбор между реализацией на массиве (кольцевом буфере) и на связном списке влияет на: Амортизированную сложность операций, эффективность использования памяти и локальность данных и кэш-эффективность.

Вопрос №4

Развернутый связный список представляет собой гибридную структуру, сочетающую преимущества массивов и связных списков. Объясните, почему на практике выбирают фиксированные значения k = 16-64, а не вычисляют √n динамически. Какие архитектурные особенности современных процессоров влияют на этот выбор? Предложите модификацию развернутого списка, которая сохраняла бы асимптотику O(√n) для операций, но улучшала производительность для паттерна доступа «частое добавление в начало». Обоснуйте эффективность вашего решения.

Вопрос №5

Проведите детальный сравнительный анализ временной и пространственной сложности для массивов, односвязных, двусвязных списков и развернутых списков. Для каждой структуры данных: Постройте таблицу сложности операций (доступ по индексу, поиск, вставка/удаление в начало/середину/конец) с указанием лучшего, худшего и среднего случаев. На основе анализа предложите оптимальную структуру данных для каждого из сценариев: а) Частые случайные доступы по индексу, редкие модификации б) Частые вставки/удаления в начале, последовательный обход в) Непредсказуемый паттерн доступа с преобладанием операций в середине структуры. Для сценария (в) обоснуйте, может ли XOR-связный список быть практичной альтернативой, учитывая его особенности и ограничения.

Вопрос №6

На примере сортировки Шелла и TimSort представьте анализ сложности сортировки Шелла. Анализ оптимальных последовательностей смещений и их асимптотической сложности. Объяснение, почему последовательность Шелла дает O(n²) в худшем случае. Для TimSort дайте строгое обоснование выбора параметра minrun и его оптимизации в диапазоне [32, 64]. Алгоритма балансировки слияния подмассивов с поддержанием инвариантов стека. Доказательства сложности O(n log n) с учетом режима галопа. Сравните практическую эффективность этих алгоритмов для различных типов данных

Вопрос №7

Для несравнительных методов сортировки детально опишите алгоритм устойчивой сортировки подсчетом для сложных объектов, включая преобразование в префиксные суммы. Докажите корректность LSD-сортировки методом индукции по разрядам. Проанализируйте, при каких условиях цифровая сортировка превосходит сравнениями-based алгоритмы(comparison-based sorting), и почему это не противоречит теореме о нижней оценке

Вопрос №8

Проведите амортизационный анализ операции добавления в хеш-таблицу с цепочками при динамическом перехешировании: Объясните, почему порог перехеширования выбран как 4n/3 Докажите, что амортизированная стоимость операции составляет O(1), используя метод бухгалтерского учета.

Вопрос №9

Проведите сравнительный анализ алгоритмов DFS и BFS, включая математическую модель работы каждого алгоритма. Анализ временной и пространственной сложности для различных представлений графа (матрица смежности vs списки смежности). Объясните, почему DFS естественным образом использует стек, а BFS — очередь. Объясните, почему BFS гарантированно находит кратчайший путь в невзвешенных графах.

Вопрос №10

Дайте обоснование корректности алгоритма Дейкстры, доказательство того, что алгоритм не работает с отрицательными весами (приведите контрпример). Докажите, что наивная реализация с массивом имеет сложность O(n² + m) Обоснуйте, почему использование двоичной кучи дает O((n + m) log n)

Вопрос №11

Проведите детальный сравнительный анализ АВЛ-деревьев, красно-черных деревьев, B-деревьев, включая формальное доказательство высоты для каждого типа деревьев (теорема о высоте АВЛ-дерева, лемма о чёрной высоте для красно-черных, оценка высоты B-дерева). Математический анализ сложности операций вставки, удаления и поиска с учётом различных сценариев балансировки. Доказательство корректности операций балансировки (вращения в АВЛ, перекрашивания в красно-черных, разбиения/слияния в B-деревьях)

Вопрос №12

Для структуры данных Rope докажите, что высота дерева остается O(log n) при использовании АВЛ-балансировки. Проведите амортизационный анализ операций конкатенации и разделения с учётом перебалансировки. Предложите и обоснуйте модификацию Rope, которая сохраняет персистентность при сохранении асимптотики O(log n)

Вопрос №13

Для B-деревьев дайте строгое обоснование операций докажите, что инварианты B-дерева сохраняются при разбиении узлов и слиянии. Проанализируйте, как выбор параметра t влияет на производительность в системах с иерархической памятью. Обоснуйте преимущества B+-деревьев перед классическими B-деревьями для систем управления базами данных.