J'ai un devoir à faire contre lequel je me bats la tête depuis un certain temps, et j'apprécierais tout indice. Il s'agit de choisir un problème connu, dont l'exhaustivité NP est prouvée, et de construire une réduction de ce problème au problème suivant que j'appellerai DGD (diagnostic de graphe dirigé).
Problème
Une instance de DGD se composent de sommets V = I . ∪ O . ∪ B , arêtes dirigées E et un entier positif k . Il existe trois types de sommets: sommets avec seulement bords entrants I , les sommets avec seulement des bords sortants O et les sommets avec les deux bords entrants et sortants B . Soit par ailleurs D = O × I .
Maintenant, le problème est de savoir si nous pouvons couvrir tous les nœuds avec au plus éléments de D , c'est-à-dire
où signifie qu'il y a un chemin dirigé de a vers b .
Je pense que le problème de l'ensemble dominant est celui que je devrais réduire, car cela aussi est préoccupé par la couverture d'un sous-ensemble de nœuds avec un autre sous-ensemble. J'ai essayé de créer une instance DGD en créant d'abord deux nœuds pour chaque élément de l'ensemble dominant, en copiant toutes les arêtes, puis en définissant le de l'instance DGD égal à celui de l'instance DS.
Supposons une instance DS simple avec les nœuds , 2 et 3 et les arêtes ( 1 , 2 ) et ( 1 , 3 ) . Ceci est une instance de oui avec k = 1 ; l'ensemble dominant dans ce cas n'est constitué que du nœud 1 . Réduire avec la méthode qui vient d'être décrite, cela conduirait à une instance DGD avec deux chemins ( 1 → 2 → 1 ′ ) et ( 1 → 3 → 1 ′; pour couvrir tous les nœuds, une seule paire serait suffisante. Cela aurait parfaitement fonctionné s'il n'y avait pas eu le fait que l'ensemble dominant de l'instance DS ne puisse, bien entendu, être déterminé en temps polynomial, ce qui est une exigence ici.
J'ai trouvé qu'il existe de nombreuses façons attrayantes de transformer les bords et les sommets lors de la réduction, mais mon problème consiste à exprimer le de DGD en termes de k de DS . Dominer l'ensemble semblait un problème approprié pour réduire, mais à cause de cela, je pense que je devrais peut-être essayer de réduire à partir d'un problème qui n'a pas un tel k ?
la source
Réponses:
Réduisez de SET-COVER NP-complet plutôt le .
Soit avec k ∈ N une instance de la couverture d'ensemble. Définissez une instance ( V , E , k ′ ) de DGD comme ceci:S1,…,Sm⊆{1,…,n} k∈N (V,E,k′)
Il est facile de voir que l'instance DGD construite a une réponse positive si et seulement si l'instance de set set donnée a une réponse positive. En particulier, toutes les paires ( s i , o i ) doivent être choisies quoi qu'il en soit afin de couvrir toutes les o i ; alors k des m paires ( s i , o ) doivent couvrir tous les e j , et les premiers composants de ceux choisis sont la solution de l'instance SET-COVER. Si un tel choix n'est pas possible, l'instance SET-COVER n'a pas non plus de solution.m (si,oi) oi k m (si,o) ej
La construction étant possible en temps polynomial, cela prouve SET-COVER DGD.≤p
À titre d'exemple, considérons l'exemple d'instance set cover donné sur Wikipedia , à savoir et les ensembles S = { { 1 , 2 , 3 } , { 2 , 4 } , { 3 , 4 } , { 4 , 5 } } . Cela se traduit par le graphique suivant:{1,2,3,4,5} S={{1,2,3},{2,4},{3,4},{4,5}}
[ source ]
la source