Существует ли эффективный алгоритм для этой задачи покрытия вершинного цикла?

23

Я пытался найти алгоритм, чтобы найти максимальное покрытие вершинных циклов ориентированного графа то есть набор непересекающихся циклов, которые содержат все вершины в G с максимально возможным количеством циклов (мы не рассматриваем отдельные вершины циклов здесь). Я знаю, что проблема нахождения минимального покрытия вершинных циклов, а также нахождения покрытия вершинных циклов с ровно k циклами является NP-полной. Но как насчет максимального случая?GGk

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

У нас есть список целых чисел , элементы l i, и мы будем использовать S , элементы s i для ссылки на L после его сортировки. В качестве примера:LliSsiL

L=(1,3,2,5,0,7,4,2,6,0,8,1)S=(0,0,1,1,2,2,3,4,5,6,7,8)

Вершины графа будут отождествляться с парами такими, что l i = n и s in . Граф имеет направленное ребро ( n , i ) ( m , j ) тогда и только тогда, когда s j = n . (Цикл на этом графике соответствует набору значений, которые можно циклически переставлять, чтобы они оказались в отсортированном положении.)(n,i)li=nsin(n,i)(m,j)sj=n

Приведенный выше пример даст следующий график (с использованием индексов на основе 1):

введите описание изображения здесь

Одна вещь, которая не работает, - это жадный подход многократного удаления наименьшего цикла (как показано в этом примере).

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

|C|1|C|1То есть вес зависит от размера цикла, а не от конкретных ребер, которые он включает. Но, возможно, это дает кому-то другое представление о том, как уменьшить проблему.

Также представляется, что ограничение размера циклов делает проблему APX сложной для общих графов. Это не обязательно означает, что то же самое верно для задачи максимизации числа циклов, а также для конкретных рассматриваемых здесь графиков, но, похоже, это достаточно тесно связано, что это может быть важно.

В итоге: можно ли найти максимальное покрытие вершины непересекающегося цикла для графов, построенных по описанному выше процессу?

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

Мартин Эндер
источник
Вы смотрели литературу по обмену почек? Проблема кажется связанной, поэтому мне интересно, можно ли применить какой-либо из методов к этому. Это может быть тупик, хотя ...
DW
@ DW у меня нет (я не знал, что это вещь). Я посмотрю, что я могу найти, спасибо.
Мартин Эндер
эта проблема действительно похожа на обмен почек, изученный теоретически, например, эта статья Roughgarden объясняет, что маленькие циклы предпочтительнее по почти очевидным причинам (p3); размеры цикла подразумевают «одновременные операции», а меньшие уменьшают риск выполнения всех операций с осложнениями или
передумками
@AustinMohr Я полагаю, что графики, полученные из конструкции, которую я описываю, всегда будут разлагаться на циклы (и, кроме того, независимо от того, какой цикл вы удаляете, остаток будет разлагаться на циклы). Если вы хотите обратиться и к общим графам, предположите, что существует хотя бы одно полное покрытие.
Мартин Эндер
@ MartinBüttner В вашем конкретном случае, если все элементы списка различны, будет ли ваша задача эквивалентна нахождению (уникального) разложения цикла перестановки ?
Мхум

Ответы:

4

Gkk=2k=3 kk

GG((3/5)ϵ)ϵ>0

Подробности и доказательства вышеуказанной формулы изобретения см. В [1].


[1] Блезер, Маркус и Бодо Манте. «Два алгоритма аппроксимации для 3-тактных покрытий». Аппроксимационные алгоритмы для комбинаторной оптимизации. Springer Berlin Heidelberg, 2002. 40-50.

Юхо
источник
Интересно, я постараюсь следовать ссылкам из этой статьи. Спасибо. (Должно быть, я что-то неправильно понял, когда подумал, что обложки k-циклов были обложками с ровно k циклами. Или, может быть, это другое определение, используемое в другом месте.)
Мартин Эндер,
2
@ MartinBüttner Кстати, вы, вероятно, захотите посмотреть кандидатскую диссертацию Bläser здесь . (Это на немецком языке, но у вас, вероятно, не будет проблем с этим :-)). Он должен охватывать детали фактического вычисления максимального веса 2-тактного покрытия.
Юхо
|V|nn
Подумав об этом еще немного, я не уверен, что на самом деле можно сформулировать проблему с точки зрения весов. При одинаковом весе все крышки циклов имеют одинаковый вес. Моя «стоимость» цикла на самом деле равна его длине минус 1. Поэтому я хочу как можно больше циклов. Если это можно сформулировать в терминах весов, то это сводится к проблеме присваивания, но если нет, я думаю, мне нужно продолжать поиск.
Мартин Эндер