C'est une tâche du concours informatique allemand ("Bundeswettbewerb Informatik"), mais comme la date limite est passée, poser cette question n'est pas une tricherie.
Étant donné un graphique orienté pondéré par les sommets et valeurs , trouver un sous-ensemble de nœuds qui maximise
Je pourrais prouver que le problème est en P si chaque nœud n'a ni parents ni enfants en montrant que dans ce cas, il peut être résolu par Vertex Cover sur des graphes bipartis, mais je n'ai pas réussi à trouver une réduction qui prouve la dureté NP du problème d'origine.
Quelqu'un peut-il me donner un indice sur la façon de procéder?
PS: Lors du concours, la tâche consistait uniquement à trouver un algorithme qui résout ce problème, la définition originale (allemande) est la tâche 1 de ce document: http://www.bundeswettbewerb-informatik.de/fileadmin/templates/bwinf/ aufgaben / bwinf35 / aufgaben352.pdf
Réponses:
Le problème est soluble dans le temps polynomial, suggéré dans le lemme 1 de la complexité de calcul de certains problèmes de poids moyen maximum avec des contraintes de priorité .
Fondamentalement, l'idée est d'écrire un programme linéaire sur des variablesXje∈ [ 0 , 1 ] , où Xu-Xv≤ 0 si ( u , v ) ∈ E . La matrice d'adjacence signée est totalement unimodulaire, nous pouvons donc calculer l'optimum intégral.
la source