2010-07-10 6 views
2

J'ai un problème de correspondance et je ne sais pas comment le résoudre:Min Max-assorti Problème

Given a complete bipartite graph (A, B). 
Each node a_i in A, has two states: s(a_i)=0 or s(a_i)=1 
Weighted edges are declared as: w(a_i, b_j, s(a_i)) 

Fixation d'une configuration pour les états, le problème devient une correspondance max.

L'objectif est de trouver la configuration avec un minimum de correspondance maximale.

Exemple:

|A|=|B|=1 
w(a_0, b_0, 0) = 5; 
w(a_0, b_0, 1) = 9; 

max-appariements sont 5 et 9, de sorte que la figure 5 est la réponse. (donc la configuration est s (a_0) = 0)

+0

Ce n'est pas un devoir! Certaines personnes ont tendance à marquer des questions algorithmiques comme devoir! – Nima

Répondre

2

Je doute que ce soit des devoirs, puisque le questionneur utilise son vrai nom.

Malheureusement, trouver une affectation d'états avec un rapport d'approximation supérieur à 2 (en supposant que Jeux uniques, 1.3606 sinon) est NP-difficile. Soit G une instance de couverture vertex minimale. L'ensemble A a un sommet pour chaque arête dans G. L'ensemble B a un sommet pour chaque sommet dans G. Soit w (un j, b k, 0) être 1 si l'extrémité inférieure du bord correspondant à un j correspond à b k, et 0 sinon. Définir w (un j, b k, 1) de manière similaire par rapport au point final supérieur. La correspondance maximale minimale de cette instance a une cardinalité égale à la couverture de sommet minimale de G, et ce dernier problème est difficile à approximer. Sur le front des algorithmes, nous pouvons remplacer le problème interne de l'appariement du poids maximum par son dual de programmation linéaire afin de minimiser le minimum. Ici y j est la variable correspondant à une double j et z k est la variable double correspondant à b k .

min Σ j y j + Σ k z k

S.T.

∀j, k. y j + z k ≥ (1 - s (a j)) w (a j, b k, 0) + s (a j) w (a j, b k, 1)

∀j. s (un j) ∈ {0, 1}

∀j. y j ≥ 0

∀k.z k ≥ 0

Cette formulation est un programme entier mixte, qui peut être attaqué sans trop d'effort humain par le logiciel hors de l'étagère (par exemple, le kit de programmation linéaire GNU). Cela peut ou peut ne pas être meilleur que la force brute.

+0

Très bien. J'ai travaillé à travers un exemple à la main, et j'ai été capable de me convaincre que tout fonctionnait bien. Pour les personnes (comme moi) qui n'ont pas traité de preuve par réduction auparavant, j'espère que l'approche plus handwavy suivante aide à la compréhension: La façon dont je pense est que chaque arête de G peut choisir de "cibler" un des deux sommets . Imaginez que chaque bord choisit une cible d'une manière ou d'une autre. Ensuite, exécutez l'appariement pondéré maximal pour déterminer le plus grand nombre de paires viseur-cible distinctes. (Vous pouvez ignorer toutes les arêtes de poids 0 dans le graphe biparti ... –

+0

... entre a_j et b_k où b_k n'est pas incident sur a_j dans G, puisque MWM ne les choisira jamais.) Ce que vous voyez est que le MWM vous indique vraiment le nombre de sommets distincts qui sont visés - nous ne nous soucions pas vraiment de savoir quel bord est associé à un sommet, juste qu'il y en aura exactement un par sommet. Une fois que les clics, il est facile de voir que si nous choisissons de viser les sommets afin de minimiser le nombre de sommets distincts ciblés, cela (a) couvrira tous les arêtes avec un nombre minimum de sommets dans G et (b) sera un minimum. poids correspondant à (A, B). –

+0

Une autre chose à retenir est qu'avec une preuve de réduction, nous arrivons au problème "en arrière". Nous n'essayons pas d'analyser une instance donnée du problème considéré, mais nous prenons une instance d'un autre problème connu, connu pour être difficile, et construisons une instance du problème considéré. Si nous pouvons faire cela alors nous savons que la résolution du problème à l'étude doit être au moins aussi difficile que celle qui est connue pour être dure. –