Приближения, модели вычислений (19 марта 2021)
- Алгоритм Кармаркар-Карпа (1982)
- Что уже умеем для partition? Как оно себя ведёт на случайных R 0-1 весах?
- 0-1 → 0-1/n → 0-1/n2 → ...
- Алгоритм. Интуиция того, что это n-logn
- [хешей мы ещё не знаем, только упоминаем] Применение для поиска теста к полиномиальным хешами.
- Мультирюкзак (bin packing)
- Сложность приближения: определить 2 или 3 − уже NP-hard (partition)
- first fit: 2-OPT + доказательство.
- first fit decresing и best fit decresing (11/9*OPT+1 приближение)
- Практически эффективное решение: локальные оптимизации (timus-1144)
- PTAS для bin packing: 1 + OPT(1+2ε)
- Задача о надстроке
- Пример задачи: есть много кусочков генома, нужно собрать из них геном.
- Сведение к TSP. Решение динамикой за O(2nn2).
- Простое жадное решение. Гипотеза: это 2-приближение.
- Задачи
- Центроид: запрос = сумма по всем вершина на расстояние ровно d от данной
- Жадность: разбить число в виде суммы 5 квадратов
− Перерыв −
- Модели вычислений
- RAM
- Какие операции разрешены? add/sub/mul/div/jz/jump/halt/in/out
- Память. Специальный регистр "результат вычислений". Программа не может менять саму себя.
- Выводим: (div → a>b; jump, jz → for, while; if; function)
- RAM-w
- Какой размер регистров? RAM − неограниченные целые числа, RAM-w, до 2w.
- Читы из неограниченности : операции с массивами, как с целыми числами за O(1)
- Читы из неограниченности : bitset, bfs за O(V), Флойд за O(V2).
- Читы из неограниченности : сумма w-битных чисел в массиве за O(logn) (первую половину складываем со второй)
- Машина Тьюринга
- Определение: лента, ...
- Запрограммировать что-нибудь на Тьюринге : даны i, a, вернуть a[i]
- Классы: Тьюринг в полином раз отличается от RAM-w, в RAM все NP решаются за полином (распараллелим за счёт длины числа)