Чи існує ефективний алгоритм для цієї проблеми з вершиною циклу покриття?


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|C|1.) Тобто вага залежить від розміру циклу, а не від конкретних ребер, до яких він входить. Але, можливо, це дає комусь інше уявлення про те, як зменшити проблему.

Виявляється також, що обмеження розміру циклів робить проблему APX важкою для загальних графіків. Це не обов'язково означає, що те саме стосується завдання максимізації кількості циклів, а також для конкретних графіків, які тут розглядаються, але, здається, є досить тісно пов'язаними, щоб це могло бути важливим.

Підсумовуючи: Чи можна знайти кришку максимального роз'єднаного вершинного циклу для графіків, побудованих з вищевказаного процесу?

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


Ви подивилися літературу про КС щодо обміну нирок? Проблема здається пов'язаною, тому мені цікаво, чи можна застосувати будь-який із методів, що існують там. Це може бути глухий кут ...
DW

@DW Я цього не зробив (я не знав, що це річ). Я побачу, що я можу знайти, дякую.
Мартін Ендер

проблема справді схожа на обмін нирок, який справді вивчався з теоретичного досвіду, наприклад, у цьому документі Рафґардена пояснюється, що малі цикли віддають перевагу з майже очевидних причин (p3); розміри циклу означають "одночасні операції", а менші зменшують ризик зняття всіх операцій із ускладненнями або
передумови

@AustinMohr Я вважаю, що графіки, отримані з описаної конструкції, завжди будуть розкладатися на цикли (і, крім того, незалежно від того, який цикл ви вилучите, решта все одно буде розкладатися на цикли). Якщо ви також хочете вирішити загальні графіки, припустіть, що існує хоча б одна повна обкладинка.
Мартін Ендер

@ MartinBüttner У вашому конкретному випадку, якщо всі елементи списку будуть чіткими, ваша проблема буде еквівалентною пошуку (унікального) циклу розкладання перестановки ?
mhum

Відповіді:


4

Цікаво, я спробую дотримуватися посилань із цього документу. Спасибі. (Я, мабуть, щось неправильно прочитав, коли я подумав, що обкладинки k-циклу - це обкладинки з рівно k циклами. Або, можливо, це інше визначення, яке використовується деінде.)
Мартін Ендер

2
@ MartinBüttner До речі, ви, ймовірно, захочете подивитися кандидатську дисертацію Блязера тут . (Це німецькою мовою, але у вас, швидше за все, проблем із цим не буде :-)). Він повинен охоплювати деталі фактичного обчислення обкладинки з максимальною вагою 2-х циклу
Juho

|V|nn

Думаючи про це ще трохи, я не впевнений, що насправді можна сформулювати проблему з точки зору ваги. При рівній вазі всі циліндричні кришки мають однакову вагу. Моя "вартість" за цикл насправді - його довжина мінус 1. Ось чому я хочу якомога більше циклів. Якщо це можна сформулювати з точки зору ваги, це зводиться до проблеми присвоєння, але якщо ні, я думаю, мені потрібно продовжувати пошук.
Мартін Ендер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.