Сжатие аудиоданных
- 1 year ago
- 0
- 0
Итеративное сжатие — это алгоритмическая техника разработки . В данной технике на каждом шаге в задачу добавляется один элемент (такой как вершина графа ), а перед его добавлением находится небольшое решение задачи.
Технику разработали Рид, Смит и Ветта , чтобы показать, что разрешима за время для графов с n вершинами, m рёбрами и числом удаляемых вершин k . Задача об удалении нечётных циклов — это задача поиска наименьшего набора вершин, который включает по меньшей мере по одной вершине из любого нечётного цикла. Параметрическая сложность этой задачи долгое время оставалась открытой . Позже эта техника стала очень полезна для доказательства результатов по . Сейчас эту технику принято считать одной из фундаментальных в области параметризованных алгоритмов.
Итеративное сжатие успешно использовалось во многих задачах, например для удаления нечётных циклов (см. ниже) и удаления рёбер для получения двудольности , нахождения разрезающих циклов вершин , удаления кластерных вершин и нахождения разрезающих ориентированных циклов вершин . Метод также успешно использовался для точных алгоритмов экспоненциального времени для нахождения независимого множества .
Итеративное сжатие применимо, например, для параметризованных задач на графах , входом которых является граф G =( V , E ) и натуральное число k , а задача ставится как проверка существования решения (набора вершин) размера . Предположим, что задача замкнута относительно порождённых подграфов (если решение существует для для данного графа, то решение этого размера или меньшего существует для любого порождённого подграфа) и что существует эффективная процедура, которая определяет, может ли решение Y размера быть сжато до меньшего решения размера k .
Если это предположение выполняется, то задача может быть решена путём добавления вершин по одной за раз и нахождения решения для порождённого подграфа следующим образом:
Этот алгоритм вызывает подпрограмму сжатия линейное число раз. Поэтому, если вариант сжимающей процедуры работает за фиксированно-параметрически разрешимое время, то есть для некоторой константы c, то процедура итеративного сжатия для решения полной задачи работает за время . Ту же самую технику можно применять для нахождения множеств рёбер для свойств графов, замкнутых относительно подграфов (отличных от порождённого подграфа) или других свойств в теории графов. Когда значение параметра k неизвестно, оно может быть найдено с помощью внешнего уровня или линейного поиска для оптимального выбора k , с поиском на каждом шаге, основываясь на том же алгоритме итеративного сжатия.
В оригинальной статье Рид, Смит и Ветта показали, как сделать граф двудольным путём удаления не более k вершин за время . Позднее Локштанов, Саурабх и Сикдар дали более простой алгоритм, также использующий итеративное сжатие . Чтобы сжать удаляемое множество Y размера k + 1 до множества X размера k их алгоритм проверяет все разбиения множества Y на три подмножества — подмножество множества Y , которое принадлежит новому удаляемому множеству, и два подмножества множества Y , которые принадлежат двум долям двудольного графа, остающегося после удаления множества X . Когда эти три множества выбраны, оставшиеся вершины удаляемого множества X (если таковое существует) могут быть найдены из них, применяя алгоритм Форда — Фалкерсона .
Вершинное покрытие — это другой пример, для которого может быть применено итеративное сжатие. В задаче вершинного покрытия в качестве входных данных даётся граф и натуральное число k , а алгоритм должен решить, существует ли множество X с k вершинами, такое что любое ребро инцидентно вершине в X . В варианте сжатия входом является множество Y с вершинами, которое инцидентно всем рёбрам графа, и алгоритм должен найти множество X размера k с тем же свойством, если таковое существует. Один из способов сделать это — тестируются все варианта, какими множество Y удаляется из покрытия и вставляется обратно в граф. Такой перебор может работать только если никакие две удаляемые вершины не смежны и для каждого такого варианта подпрограмма должна включать в покрытие все вершины вне Y инцидентные ребру, которое становится непокрытым при этом удалении. Использование такой подпрограммы в алгоритме итеративного сжатия даёт простой алгоритм со временем работы для покрытия вершин.