2010-07-17 3 views
5

J'ai rencontré le problème algorithmique suivant lors de l'expérimentation d'algorithmes de classification. Les éléments sont classés dans une poly-hiérarchie, ce que je comprends être un poset avec une seule racine. Je dois résoudre le problème suivant, qui ressemble beaucoup à set cover problem.Sélection de k sous-poses

J'ai téléchargé ma description du problème Latex-ed here.

Développer un algorithme d'approximation qui satisfait 1 & 2 est assez facile, commencez simplement aux sommets de G et «marchez» ou commencez à la racine et «descendez». Supposons que vous commenciez à la racine, développez itérativement les vertex, puis supprimez les vertices inutiles jusqu'à ce que vous ayez au moins k sous-réseaux. L'approximation liée dépend du nombre d'enfants d'un sommet, ce qui est OK pour mon application.

Est-ce que quelqu'un sait si ce problème a un nom propre, ou peut-être la version arborescente du problème? Je serais intéressé de savoir si ce problème est NP-difficile, peut-être que quelqu'un a des idées pour un bon problème NP-difficile à réduire ou a un algorithme polynomial pour résoudre le problème. Si vous avez tous deux recueillir your million dollar price. ;)

+0

Je ne comprends pas. Si vous choisissez S '= {r} où r est la racine, alors \ sigma (r) = V. Voulez-vous dire sigma (s) être tous les éléments inférieurs ou égaux à r et supérieurs ou égaux à s (où moins et plus grand sont l'ordre partiel de réseau)? – deinst

+1

@deinst C'est pourquoi 'k' est là: pour rendre le problème plus intéressant :)' S = {r} 'est la solution pour' k = 1'. – Bolo

+1

@dareios Vous pouvez corriger deux erreurs mineures dans l'énoncé du problème. 1) Le second dernier paragraphe n'est pas vrai en général, dépend du choix de 'G' (sauf si je manque quelque chose, si' G' contient deux enfants et rien de plus, alors 'S = G' est une solution avec' l = k = 2 »2) Au troisième paragraphe, vous voulez probablement dire:« [...] nous voulons toujours garder ** 2 ** ». – Bolo

Répondre

2

La version DAG est difficile (réduction) par rapport à la couverture définie. Mettez k = 2 et faites l'évident: la condition (2) nous empêche de prendre la racine. (Notez que (3) n'implique pas réellement (2) en raison de la borne inférieure k.)

La version arborescente est un cas particulier de la version poset série-parallèle, qui peut être résolue exactement en temps polynomial. Voici une formule récursive qui donne un polynôme p (x) où le coefficient de x n est le nombre de couvertures de cardinalité n.

Seul sommet à recouvrir: p (x) = x.

Autre sommet: p (x) = 1 + x.

Composition parallèle, où q et r sont les polynômes pour les deux posets: q (x) r (x).

Composition en série, où q est le polynôme pour le poset supérieur et r, pour le fond: Si le poset supérieur ne contient pas de sommets à couvrir, alors p (x) = (q (x) - 1) + r (X); sinon, p (x) = q (x).

+0

Bonne observation avec (3) n'implique pas (2), j'ai totalement raté cela. Changé dans l'énoncé du problème. Pour le reste je suppose que j'ai d'abord besoin d'une nuit de sommeil, merci pour votre réponse! – dareios

+0

La réduction est en effet facile, je ne sais pas pourquoi je ne pouvais pas le faire hier. Merci! – dareios

+0

Pour la formule de récursion arborescente: Si j'ai un seul sommet à couvrir, j'ai p (x) = x comme vous le dites, car il n'y a qu'une seule couverture. Pour qu'aucun sommet ne soit couvert, nous devrions avoir p (x) = 1 (car la couverture est vide). Je ne comprends pas quand le polynôme "Autre sommet: p (x) = 1 + x" est appliqué. De plus, je ne comprends pas quand le "poset supérieur ne contient pas de sommets" (à couvrir) s'applique: le poset supérieur contiendra toujours les autres posets donc s'il ne contient pas de vertex à couvrir, les autres posets ne seront pas non plus. Peut-être que la restriction> = k sur la propriété minimale entre en jeu ici? – dareios

Questions connexes