Главная страница

Коллоквиум. Коллоквиум 4. Задача о рюкзаке формулировка и решение


Скачать 1.64 Mb.
НазваниеЗадача о рюкзаке формулировка и решение
АнкорКоллоквиум
Дата26.09.2022
Размер1.64 Mb.
Формат файлаdocx
Имя файлаКоллоквиум 4.docx
ТипДокументы
#696928

  1. Построение i-го числа Фибоначчи

Минусы рекурсивного построения: Одно и то же значение вычисляется много раз; использование памяти для стека рекурсивных вызовов; медленнее, чем итеративно

2.      Мемоизация

·        Применение мемоизации в поиске i-го числа Фибоначчи



·        Что такое мемоизация: Запоминание ранее вычисленных данных для избежания повторного вычисления

·        Плюсы и минусы применения мемоизации (память, скорость выполнения)

+Существенно быстрее, т.к. данные не будут вычисляться повторно

-Использует доп. память

3.      Динамика вперед и динамика назад на примере поиска кратчайшего пути в ациклическом графе

·        Поиск пути при помощи топологической сортировки





4.      Задача о рюкзаке: формулировка и решение

Дан рюкзак заданной вместимостью W

Даны предметы у каждого его вес Wi и стоимость Ci

Требуется наполнить рюкзак так, чтобы стоимость всех предметов в нем была максимальной

·        Минусы наивного решения задачи

Для наивного решения мы могли бы перебрать всевозможные комбинации предметов таких будет

Либо некорректная идея - брать сначала предметы максимальной стоимостью, но этот жадный алгоритм сработает только если предмет можно поделить на части.

·        Показать графически ход динамического решения

Ход решения -

Имеем массив d[n][W] - обозначает максимальную стоимость рюкзака весом W до n-го предмета включительно



Заполним первую строку, взяв любой предмет, напишем его стоимость, если его вес ≤ второму текущему индексу i в d[0][i]

Далее будем заполнять последовательно следующие строки, заполняя очередную клетку, мы либо возьмем клетку на одну строку выше, либо возьмем клетку d[s-1][i-w_i], то есть вычтем из текущей вместимости вес предмета и попытаемся вместе с ним взять предмет максимальной стоимости на оставшийся вес.

·        О(Wn) по памяти

Проходимся по двумерному массиву размером W * n (макс. вместимость рюкзака и количество предметов) - тогда асимптотика O(Wn)

5.    Наибольшая возрастающая подпоследовательность: решения за  O(n^2) и за O(n*logn)

·      За что отвечает массив d[i] в реализации O(n^2)

d[i] - максимальная длина подпоследовательности до i-го элемента

·      За что отвечает массив d[i] в реализации O(n*logn)

число, на которое оканчивается подпоследовательность длины i

·      Разбор асимптотики O(n^2)

Имеет внешний цикл n итераций, во внутреннем от 0 до i, то есть сумма прогрессии, то есть еще n, итого

·      Разбор асимптотики O(n*logn)

Имеем внешний цикл n итераций, используем бинпоиск для вставки текущего элемента – log n, итого n*log n

6.      Определения и постановка задачи о максимальном потоке

·        Каким условиям удовлетворяет поток

  1. Антисимметричность (если течет поток 5 в одном направлении, то -5 в другом)

  2. Ограничение потока (поток не может быть больше пропускной способности)

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

·        Что такое сеть

Дана транспортная сеть - ориентированный взвешенный граф (V, E) с вершинами источника (s) и стока (t), веса ребер - пропускные способности (c)

7.      Концепции: остаточная сеть, увеличивающие пути, разрезы

·        Минимальный разрез - это такой разрез, что сумма пропускных способностей ребер, пересекающих разрез, минимальна

Минимальный разрез равен максимальному потоку

·        Разрез это

Разрез - разбиение множества вершин сети на два непересекающихся множества S, T, при этом вершины истока/стока принадлежат соответствующим множествам.

·        Дополняющий путь это

Дополняющий (увеличивающий) путь - простой путь из истока в сток в остаточной сети

·        Остаточная пропускная способность это

Остаточная пропускная способность - величина потока, который можем дополнительно направить по ребру (u, v), не превысив пропускную способность c(u, v) ( (u, v) = c(u,v) - f(u,v))

8.      Алгоритм Форда-Фалкерсона

·        Условие окончания работы алгоритма

Не существует дополняющего пути (не можем дойти с вершины истока в сток по остаточной сети)

·        Показать графически ход алгоритма

  1. Изначально величина потока f(u,v) = 0 для всех ребер, а остаточная сеть равна исходной

  2. В остаточной сети дфсом находим любой путь из истока в сток. Если такого пути нет, алгоритм завершен

  3. Запоминаем минимальную остаточную пропускную способность min( (u,v)) на пути, проходимся по пути и увеличиваем поток f(u,v) на мин. (u,v), уменьшаем поток в обратном направлении f(v,u) на мин. (u,v)

·        Асимптотика

На каждом шаге запускаем дфс и увеличиваем поток как минимум на единицу.

f-максимальный поток в графе

Следовательно имеем – O(E*f)

9.      Поиск максимального паросочетания

·        Паросочетание это

Паросочетание - множество несмежных ребер графа (никакие два ребра не имеют общей вершины)

·        Чередующая цепь это

Чередующаяся цепь - путь в двудольном графе, для любых двух соседних рёбер которого верно, что одно из них принадлежит паросочетанию M, а другое нет.

·        Дополняющая цепь

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

10.   Лемма о перекрывающихся суффиксах

·        Если |x|<|y|, то x суффикс y

·        Если |x|>|y|, то y суффикс x

·        Если |x|=|y|, то x = y

11.   Простейший алгоритм поиска подстрок

·        Асимптотика

Внешний цикл - длина текста T (n), вложенный - длина образца S(m)

O(nm) - в худшем O ( ), когда m = n

12.   Итеративное вычисление полиномиальной хеш-функции, пересчет при сдвиге

·        Подсчет хеша



·        Как меняется хеш-функция при сдвиге



13.   Алгоритм Рабина-Карпа

·        Асимптотика

·        Асимптотика изменения значения хеш-функции



·        Действия при одинаковых значениях хеш-функций

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

14.   Z-функция: тривиальный и эффективный алгоритмы

·        Асимптотика тривиального и эффективного алгоритмов

Тривиальный: О( )

Эффективный: О(n)

·        Графическое представление эффективного алгоритма



15.   Построение префикс-функции

·        Асимптотика: О(n)

·        Графически показать построение



16.   Построение конечного автомата

·        Роль префикс-функции в построении конечного автомата

·        Допускающее состояние

·        Графическое представление конечного автомата

17.   Поиск подстрок с помощью конечных автоматов

·        Алгоритм поиска подстрок с помощью конечного автомата

·        Асимптотика


написать администратору сайта