Ce problème est NP-difficile . Pour le montrer, je vais d'abord reformuler ce problème (d'optimisation) en un problème de décision. Ensuite, je reformule ce problème en un problème équivalent, à partir duquel il est assez simple d'obtenir une réduction du problème de coloration, qui est NP-difficile pour tout k ≥ 3 .kk ≥ 3
Une courte formulation du problème est la suivante:
Étant donné personnes et un graphique G qui encode leurs relations «cadeaux», trouvez le nombre minimum de voyages requis pour que tous les cadeaux puissent être achetés sans gâcher aucune surprise.ng
Il s'agit cependant d'un problème d'optimisation. La classe NP est généralement définie pour les problèmes de décision (où la réponse à chaque instance est OUI ou NON). Une variante de décision de ceci est:
Étant donné personnes et un graphe G qui encode leurs relations «cadeaux» et un nombre entier t , est-ce qu'au plus t voyages suffisent pour acheter tous les cadeaux sans gâcher aucune surprise?ngtt
Je définis le problème de trouver un t- multicolore dirigé appropriét d'un graphe comme trouver une fonction multicolore c : V → P ( C ) qui est propre , où C est un ensemble de t 'couleurs' ( c'est-à-dire | C | = t ) et P ( C ) est l'ensemble de puissance de C (c'est-à-dire l'ensemble de tous les sous-ensembles de CG = ( V, E) c : V→ P( C)Ct| C| =tP( C)CC( u → v ) ∈ Ec ( u ) ⊈ c ( v )
Je prétends que le problème de voyage d'achat est équivalent au problème de décider l'existence d'un dirigé -multicoloringt du même graphique .g
Preuve : Si nous avons un bon dirigé -multicoloring pour , où on renomme les couleurs telles que alors considérer la séquence de voyages , où le sommet fait ses courses dans le trajet si et seulement si . Alors, pour chaque arête , on a qu'il existe un trip tel que et , puisque . Par conséquent, les voyagesc G C = { 1 , … , t } t T 1 , … , T t v T i i ∈ c ( v ) ( u → v ) ∈ E T i u ∈ T i v ∉ T i c ( u ) ⊈ c ( v ) T itcgC= { 1 , … , t }tT1, … , TtvTjei ∈ c ( v )( u → v ) ∈ ETjeu ∈ Tjev∉Tic(u)⊈c(v)Ti suffisent pour acheter tous les cadeaux.
Si nous avons une séquence de déclenchements , alors construisons la fonction multicolore sur le jeu de couleurs telle que . Ensuite, pour chaque bord , il existe un voyage tel que et (puisque peut acheter un cadeau pour lors d'un voyage), ce qui signifie que et , donc . c C = { 1 , … , t } c ( u ) = { i ∈ N | u ∈ T i } ( u → v ) ∈ E T i u ∈ T i v ∉ T i u v i ∈ c ( u ) i ∉ c (T1,…,TtcC={1,…,t}c(u)={i∈N|u∈Ti}(u→v)∈ETiu∈Tiv ∉ Tjeuvi ∈ c ( u )c ( u ) ⊈ c ( v ) ◻i ∉ c ( v )c ( u ) ⊈ c ( v )□
Trouver un multicolore dirigé approprié est fondamentalement une reformulation étrange d'un cas spécifique de coloriage. Par conséquent, je peux montrer une réduction de temps polynomiale du problème de coloration : étant donné un graphe non orienté , commencez par transformer ce graphe en graphe orienté , tel que et si et seulement si ou ( en d'autres termes, nous changeons les bords non orientés en deux bords dirigés).k ( ttk( t⌊ t / 2 ⌋)G = ( V , E ) V = V ′ ( u → v ) ∈ E ( u , v ) ∈ E ′ ( v , u ) ∈ E ′g′= ( V′, E′)G = ( V, E)V= V′( u → v ) ∈ E( u , v ) ∈ E′( v , u ) ∈ E′
Considérons un plus grand ensemble , tel qu'il n'existe pas , , tel qu'un . L'ensemble de tous les sous-ensembles de de taille , où, est un tel ensemble. Par conséquent, la taille maximale d'un tel sous-ensemble est .a , b ∈ K a ≠ b a ⊂ b C ⌊ t / 2 ⌋ t = | C | ( tK⊂ P( C)a , b ∈ Ka ≠ ba ⊂ bC⌊ t / 2 ⌋t = | C|( t⌊ t / 2 ⌋)
Si un multicolore approprié existe pour , alors il existe une coloration appropriée qui n'utilise pas plus de des éléments inégaux de (*) , c'est donc un -coloring valide pour .G ( ttg P(C) ( t( t⌊ t / 2 ⌋)P( C) G′( t⌊ t / 2 ⌋)g′
Si une appropriée existe pour , alors il existe un ensemble , , tel que et il n’existe aucun , , tel qu’un . Donc, a un multicolore dirigé approprié. G′K⊂P(C)| C| =t| K| ≥ ( t( t⌊ t / 2 ⌋)g′K⊂ P( C)| C| =t a,b∈Ka≠ba⊂bGt| K| ≥ ( t⌊ t / 2 ⌋)a , b ∈ Ka ≠ ba ⊂ bgt
Par conséquent, il s'agit d'une réduction de temps polynomiale valide de la au problème d'achat actuel avec voyages, ce qui signifie que le problème d'achat actuel est NP-difficile. Notez que le problème d'achat actuel est NP-complet, car nous pouvons vérifier facilement si une liste donnée d'au plus voyages nous permet d'acheter tous les cadeaux sans gâcher les surprises. tt( t⌊ t / 2 ⌋)tt
(*): Si certains multicolores utilisent plus de jeux de couleurs qu'un multicolore maximal 'non-sous-ensemble' , nous pouvons 'renommer' telle sorte que c'est un surensemble de . reste correct, car aucun des éléments de étant adjacent à un élément différent de n'est un problème et aucun des jeux de couleurs n'était adjacent les uns aux autres dans l'original . Ainsi, sans perte de généralité, nous pouvons supposer .CC C ∗ C C ∗ C ∗ C C ∗ ⊂ CC∗CC∗CC∗C∗CC∗⊂ C
Ensuite, notez que «renommer» en n'importe quel sous-ensemble de ne ruine pas les bords entre les nœuds des jeux de couleurs , car ne contient aucun élément qui soit un sous-ensemble d'un autre. La seule chose qui reste est de s'assurer que les bords entre et ne "ruinent" pas la coloration.C ∗ C ∖ C ∗ C ∗ C ∖ C ∗ C ∗C∖ C∗C∗C∖ C∗C∗C∖ C∗C∗
Considérez la relation sur les jeux de couleurs dans : deux jeux de couleurs et sont connectés si et seulement s'il existe une paire de sommets tels que a-ensemble couleur et couleur ensemble et . Cette relation peut être représentée par le graphe non orienté .C ∪ C ∗ A BRC∪ C∗UNEBa A b B ( a , b ) ∈ E G = ( C ∪ C ∗ , R )a , buneUNEbB( a , b ) ∈ Eg= ( C∪ C∗, R )
Tout d'abord, nous pouvons «réduire» en remplaçant toute paire qui n'a pas de bord dans par un seul jeu de couleurs. La coloration reste correcte, car la modification de deux jeux de couleurs qui ne sont pas du tout adjacents dans la même couleur n'introduit pas de bords invalides. Par conséquent, nous avons réduit en un graphique complet.G GC∖ C∗gg
Cela signifie que si a une quantité inférieure ou égale de jeux de couleurs comme, la coloration requise existe. Sinon, il n'existe pas du tout de multicolore approprié, car est le plus grand ensemble «non-sous-ensemble», nous ne pouvons donc pas colorer cette clique. Par conséquent, la multi-coloration requise existe nécessairement.| C ∗ | C ∗g| C∗|C∗
Comme le graphe complet sur nœuds est si et seulement si nous avons au moins couleurs, nous avons que personnes peuvent faire du shopping pour les uns les autres en voyages si et seulement si . Cela signifie notamment que, si , effectuer seulement déplacements est suffisant. S'il y a moins de cadeaux à acheter, plus de voyages ne seront pas nécessaires, c'est donc une limite supérieure générale pour chaque solution.K n n n t ( tnKnnntn≤1287016( t⌊ t / 2 ⌋) ≥nn ≤ 1287016
Ci-dessous, ma «réponse» précédente, qui donne un algorithme heuristique qui ne garantit pas d'obtenir l'optimum, mais peut être calculé en temps polynomial.
Une autre façon de formuler ce problème est de trouver un des graphes bipartis sur les partitions pour un graphe orienté avec nœuds , de sorte que la quantité de partitions (c.-à-d. voyages), ici , est minimale.( S i , T i ) G n mC= { ( S1, T1) , … , ( Sm, Tm) }( Sje, Tje)gnm
Tout d'abord, quelques observations, provenant en partie d'autres réponses:
- La stratégie gourmande, où nous choisissons un avec un graphe bipartite où la quantité d'arêtes en commun avec est maximale, ne conduit pas à une solution optimale (Un contre-exemple fort est le graphe complet à nœuds, où cette stratégie échoue, quel que soit le graphique bipartite maximum choisi.).G 6( Sje, Tje)g6
- La stratégie gourmande n'est pas optimale pour les graphes acycliques arbitraires, considérez le graphe suivant:
Pour et le graphe bipartite supprime arêtes, mais seulement est optimal.S i = { 1 , 3 , 6 } 4 { 3 , 5 , 6 }Sje= { 3 , 5 , 6 }Sje= { 1 , 3 , 6 }4{ 3 , 5 , 6 }
- Tout algorithme gourmand (optimal) ne peut pas préférer la taille de la partition choisie à la quantité de cycles (de toute taille) «supprimée» par la partition. Pour voir cela, considérons le graphique avec nœuds, où il y a un cycle de nœuds et chaque nœud dans le cycle a fronts sortants supplémentaires vers nœuds supplémentaires , qui n'ont pas de fronts sortants (voir la figure ci-dessous pour un exemple où ). Un choix gourmand qui préfère maximiser la quantité d'arêtes sur des cycles de longueur enverra tous les sommets du cycle lors du premier déclenchement. Ceci n'est pas optimal, car cela ne supprime aucun bord du cycle et ignore simplementn 2 2 A , B n = 4 n A , B A , Bn + 2n22A,Bn=4nA,Bet la suppression de tous les bords du cycle supprime tous les bords vers ainsi. Donc, tout choix gourmand qui préfère la taille de la partition à la suppression d'un cycle n'est pas optimal.A,B
Sur la base de ces observations, je propose le choix gourmand suivant: Pick tel que la quantité de cycles que ce voyage «supprime» de soit maximale et en cas de liens, choisissez une partition avec un chevauchement maximum avec parmi eux (c'est-à-dire regarder les bords et non les cycles).G G(Si,Ti)GG
Étant donné que cet algorithme n'est pas différent de la stratégie gourmande «de base» sur les graphiques acycliques (en supprimant une quantité maximale de bords à chaque trajet), cet algorithme gourmand n'est donc pas optimal. Cependant, l'intuition de supprimer les cycles a toujours du sens et constitue une amélioration par rapport à la stratégie gourmande de base, donc cela pourrait être une heuristique décente.