Existe-t-il un algorithme efficace pour ce problème de couverture du cycle des sommets?

23

J'ai essayé de trouver un algorithme pour trouver une couverture de cycle de sommet maximale d'un graphe orienté g - c'est-à-dire un ensemble de cycles disjoints qui contiennent tous les sommets de , avec autant de cycles que possible (nous ne considérons pas cycles de sommets individuels ici). Je sais que le problème de trouver une couverture de cycle de sommet minimum , ainsi que de trouver une couverture de cycle de sommet avec exactement cycles est NP-complet. Mais qu'en est-il du cas maximum?kgk

Bien que je trouve une réponse à cette question intéressante en général, les graphiques pour lesquels je veux l'utiliser sont en fait assez limités par leur construction, donc peut-être même si le problème est NP-complet, il pourrait y avoir une solution polynomiale pour ces cas spécifiques.

Nous avons une liste d'entiers , éléments et nous utiliserons , éléments pour faire référence à après l'avoir triée. Par exemple:l i S s i LLljeSsjeL

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)

Les sommets du graphe seront identifiés par des paires telles que et . Le graphique a un bord dirigé si et seulement si . (Un cycle dans ce graphique correspond à un ensemble de valeurs qui peuvent être permutées cycliquement de sorte qu'elles se retrouvent dans leur position triée.)(n,i)li=nsin(n,i)(m,j)sj=n

L'exemple ci-dessus donnerait le graphique suivant (en utilisant des indices basés sur 1):

entrez la description de l'image ici

Une chose qui ne fonctionne pas est l'approche gourmande de supprimer à plusieurs reprises le plus petit cycle (comme le montre cet exemple).

Notez que ce problème équivaut (si je n'ai commis aucune erreur) à demander combien de swaps vous avez besoin pour trier une liste donnée . (C'est ce qui a inspiré la recherche de ce problème en premier lieu.)

Après quelques indications de la réponse de Juho et un peu plus de filtrage dans la littérature, je suis tombé sur le problème d'affectation qui semble très lié. Cependant, le problème d'affectation est formulé en termes de graphe biparti pondéré et jusqu'à présent, je n'ai pas pu trouver un moyen de choisir les arêtes et les poids pour y réduire ce problème. Si nous voulions formuler le problème ici en termes de minimisation d'une fonction de poids, alors une approche intuitive serait de dire que le poids de chaque cycle est oùest le nombre d'arêtes (ou de sommets) dans le cycle. (Bien sûr, cela équivaut à simplement définir le poids à|C|1|C|1.) Autrement dit, le poids dépend de la taille du cycle, pas des bords particuliers qu'il comprend. Mais peut-être que cela donne à quelqu'un une autre idée de la façon de réduire le problème.

Il apparaît également que la limitation de la taille des cycles rend le problème APX difficile pour les graphiques généraux. Cela n'implique pas nécessairement qu'il en va de même pour la tâche de maximiser le nombre de cycles, ni pour les graphiques spécifiques considérés ici, mais cela semble être suffisamment lié pour être important.

En résumé: peut-on trouver une couverture maximale de cycle disjoint pour les graphiques construits à partir du processus ci-dessus?

En tant que deux côtés, je serais également intéressé de savoir si la couverture de cycle disjoint de sommet maximum a également une solution efficace pour les graphiques arbitraires qui admettent au moins une couverture de cycle (qui tombera probablement comme une réponse à la question principale), ou si la simple détermination du nombre de cycles dans la couverture maximale (par opposition aux bords réels contenus dans chacun) rend le problème plus simple. Je suis heureux de publier ces questions séparément si les gens pensent qu'ils méritent eux-mêmes des réponses complètes.

Martin Ender
la source
Avez-vous consulté la littérature CS sur les échanges rénaux? Le problème semble lié, donc je me demande si l'une des méthodes peut être appliquée à celui-ci. Cela pourrait être une impasse, cependant ...
DW
@DW Je ne l'ai pas fait (je ne savais pas que c'était une chose). Je vais voir ce que je peux trouver, merci.
Martin Ender
le problème est en effet similaire aux échanges rénaux effectivement étudiés à partir d'un point de vue théorique. Par exemple, cet article de Roughgarden explique que les petits cycles sont préférés pour des raisons presque évidentes (p3); les tailles de cycle impliquent des «opérations simultanées» et les plus petites diminuent le risque de retirer toutes les opérations avec des complications ou des donneurs changeant d'avis, etc.
vzn
@AustinMohr Je crois que les graphiques obtenus à partir de la construction que je décris seront toujours décomposables en cycles (et en outre, quel que soit le cycle que vous supprimez, le reste sera toujours décomposable en cycles). Si vous souhaitez également traiter des graphiques généraux, supposez qu'il existe au moins une couverture complète.
Martin Ender
@ MartinBüttner Dans votre cas particulier, si tous les éléments de la liste sont distincts, votre problème serait-il équivalent à trouver la décomposition (unique) du cycle de la permutation ?
mhum

Réponses:

4

Gkk=2k=3 kk

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

Pour les détails et les preuves des revendications ci-dessus, voir [1].


[1] Bläser, Markus et Bodo Manthey. "Deux algorithmes d'approximation pour les couvertures à 3 cycles." Algorithmes d'approximation pour l'optimisation combinatoire. Springer Berlin Heidelberg, 2002. 40-50.

Juho
la source
Intéressant, je vais essayer de suivre les références de cet article. Merci. (Je dois avoir mal lu quelque chose quand je pensais que les couvertures de k-cycle étaient des couvertures avec exactement k cycles. Ou peut-être que c'est une définition différente utilisée ailleurs.)
Martin Ender
2
@ MartinBüttner Au fait, vous voudrez probablement jeter un œil à la thèse de doctorat de Bläser ici . (C'est en allemand, mais vous n'aurez probablement aucun problème avec ça :-)). Il devrait couvrir les détails du calcul réel d'une couverture à 2 cycles de poids maximum.
Juho
|V|nn
En y réfléchissant un peu plus, je ne suis pas sûr qu'il soit réellement possible de formuler le problème en termes de poids. Avec des poids égaux, toutes les couvertures de cycle ont le même poids. Mon "coût" pour un cycle est en fait sa longueur moins 1. C'est pourquoi je veux autant de cycles que possible. Si cela peut être formulé en termes de poids, cela se réduit au problème d'affectation, mais sinon, je suppose que je dois continuer à chercher.
Martin Ender