Utilisez un nombre minimum de swaps pour que chaque bac contienne des boules de la même couleur

13

Il y a bacs, le i ème bac contient un i balles. Les boules ont n couleurs, il y a i boules de couleur i . Soit m = n i = 1 a i .niainaiim=i=1nai

Un échange consiste à prendre une balle dans un bac et à l'échanger avec une balle dans un autre bac. Nous voulons un nombre minimum de swaps pour que chaque bac ne contienne que des balles de la même couleur.

Je connais un cas spécial facile pour tout i . (Si a i = 2 pour tout iai2iai=2i , alors vous pouvez même le faire en échangeant chaque balle au plus une fois.)

Edit : c'est faux car trouver c(D) est NP-difficile.

Si nous savons quelle couleur va dans quel bac, le problème est facile.

Considérons un multi-digraphe , V = { v 1 , , v n } . Si nous savons que la couleur i va au bac b ( i ) , alors il y a k arcs parallèles ( j , b ( i ) ) dans A si le bac j contient k boules de couleur iD=(V,A)V={v1,,vn}ib(i)k(j,b(i))Ajki. Chaque composante du graphique est eulérienne. Le nombre minimum d'échanges requis est , où c ( D ) est le nombre de cycles disjoints d'arc qui couvre un . On peut échanger en "suivant" un circuit eulérien. (un échange utilisant un arc d'un cycle minimal peut le changer en un cycle minimal plus petit et une boucle automatique). Une fois que le graphique entier est composé de boucles auto, nous avons effectué tous les swaps nécessaires.mc(D)c(D)A

Quelle est la difficulté de ce problème en général?

Chao Xu
la source

Réponses:

3

La décomposition maximale d'un graphe orienté eulérien en cycles disjoints de bord est NP-difficile, du moins selon ce livre: Algorithmes et applications: essais dédiés à Esko Ukkonen à l'occasion de son 60e anniversaire .

btw, voici un article qui est pertinent au problème que vous semblez essayer de résoudre: Algorithme optimal asymptotiquement pour l'algorithme du drapeau national néerlandais .

Pour , l'article donne un algorithme simple.n6

Aryabhata
la source
J'ai supposé à tort que nous pouvons trouver une décomposition maximale en marchant simplement sur le graphique jusqu'à ce qu'il atteigne un cycle, et recommençons. Donc, en effet, ce problème est NP-difficile en général.
Chao Xu