- •1.Обоснование выбора подходящей структуры данных на примере задачи «Ряд Фаррея»
- •2 И 4 на одном листе
- •2.Лексикографическая сортировка последовательностей одинаковой длины
- •4.Решение задачи построения связной сети методом взвешенного быстрого объединения со сжатием пути.
- •5.Меры временной сложности алгоритмов. Оценки в среднем и в худшем случаях. Амортизированное время
- •6.Модели вычислений: Машина Тьюринга, расп, рам, неветвящиеся программы, деревья решений
- •7.Асимптотические обозначения времени выполнения программ. Оценки снизу, сверху, асимптотически точные. Правило суммы и правило произведения
- •8.Нижние оценки точности. Нижние оценки сложности для задачи сортировки, построения выпуклой оболочки
- •9.Сводимость задач и ее свойства
- •11.Задача построения максимальной суммы для подпоследовательности заданной последовательности целых чисел. Метод последовательных уточнений
- •13. Полиномиальная сводимость и ее свойства
- •14. Класс np полных задач. Примеры
- •15.Абстрактные типы данных: последовательность, множество, отображение
- •16.Линейные структуры данных: массив, список, стек, очередь, дек. Способы представления, очереди над ними
- •§ IsEmpty(): возвращает логическое значение, подтверждающее, что
- •17.Нелинейные структуры данных: деревья, графы. Обходы деревьев в глубину и ширину
- •§ IsInternal(p): проверяет, является ли p позицией внутренней вершины (не листа) .
- •§ IsExternal(p): проверяет, является ли p позицией листа дерева.
- •§ IsRoot(p): проверяет, является ли p позицией корня.
- •§ Insert(h, х): вставляет вершину х (с заполненным полем key) в пирамиду н.
- •18.Внутренняя сортировка (массивов).
- •19.Элементарные методы сортировки: обмен, вставка, выбор.
- •20.Улучшенные методы сортировки (Шелла, Сортдеревом).
- •21.Быстрая сортировка - упорядочение за среднее время о(n log n).
- •20.Задача поиска. Деревья бинарного поиска (дбп). Операции над ними.
- •23.Задача поиска. Деревья, сбалансированные по высоте. Основные типы
- •24. Задача поиска. Красно-черные деревья. Задача балансировки для красно-черных деревьев.
- •25.Атд Словарь. Реализация словаря 2-3 деревьями.
- •26.Хеширование, или метод вычисляемого адреса. Хеш-функции. Разрешение коллизий.
- •27.Алгоритмы «разделяй и властвуй».
- •28.Динамическое программирование. Алгоритм нахождения кратчайшего пути Дейкстры
- •29.«Жадные» алгоритмы. Алгоритм Краскала
- •30.Поиск с возвратом. Задача разбиения множеств
- •31.Алгоритмы локального поиска.
- •32.Приближенные алгоритмы.
32.Приближенные алгоритмы.
Многие задачи, представляющие практический интерес – NP- полные.
Для них маловероятно найти точный алгоритм с полиномиальным временем работы.
При небольшом объеме входных данных может подойти алгоритм, время работы которого выражается показательной функцией.
Иногда удается выделить важные частные случаи, разрешимые в течение полиномиального времени.
Можно найти в течение полиномиального времени решение, близкое к оптимальному.
Алгоритм, возвращающий решения, близкие к оптимальным, называется приближенным алгоритмом.
----------------------
Пусть дан вход I оптимизационной задачи Π. Через sol(I ) обозначим множество всех возможных решений.
Будем считать, что sol(I ) ̸= ∅ для любого входа I . Каждому возможному решению x ∈ sol(I ) сопоставлена стоимость cost(x). Требуется найти x ∈ sol(I ), на котором cost достигает своего оптимального (минимального или максимального) значения. Приближенным алгоритмом (approximation algorithm) для задачи
Π называется полиномиальный по времени алгоритм, возращающий для каждого входа I какое-то решение x ∈ sol(I ). Через A(I ) мы обозначаем стоимость решения, найденного алгоритмом A на входе I .
Приближенный алгоритм A имеет абсолютную оценку точности (absolute performance guarantee) c, если для любого входа I выполняется неравенство |OPT(I ) − A(I )| ≤ c.
Приближенный алгоритм A имеет относительную оценку точности (relative performance guarantee) 𝛼, если для любого входа I выполняется неравенство
A(I )/OPT(I ) ≥ 𝛼 для максимизационной задачи;
A(I )/OPT(I ) ≤ 𝛼 для минимизационной задачи.
Такие алгоритмы мы называем 𝛼-приближенными.
Для оптимизационных задач 𝛼 ≤ 1, для минимизационных — 𝛼 ≥ 1.
Алгоритм тем лучше, чем ближе 𝛼 к 1.
Пусть дана максимизационная задача Π. Π имеет полиномиальную приближенную схему (polynomial time approximation scheme, PTAS), если
1 для любого 𝜖 ≥ 0 существует (1 − 𝜖)-приближенный алгоритм для Π;
2 для любого 𝜖 > 0 время работы такого алгоритма зависит от n полиномиально.
Если же время работы такого алгоритма полиномиально не только по n, но и по 1/𝜖, то полученная схема называется полностью полиномиальной приближенной схемой (fully
polynomial time approximation scheme, FPTAS). Определение для минимизационной задачи полностью
аналогично.
