Étant donné un 3CNF avec les clauses sur les variables . Supposons que et apparaissent dans la formule pour au plus fois respectivement.ϕ1,…,ϕkx1,…,xnxixi¯¯¯¯¯ki
Nous concevons un DAG coloré dont les sommets se composent de trois parties:G
- Sommets "Affectation" et , , . Colorez avec la "couleur" , et avec .vi(j)v¯i(j)1≤i≤n1≤j≤kivi(j)xi(j)v¯i(j)xi¯¯¯¯¯(j)
- "Clause" sommets , , . Couleur avec la couleur (ou ) si (ou , resp.) Est le ème littéral de la clause , et il est la clause -ème contenant ce littéral.wi′(j′)1≤i′≤kj′=1,2,3wi′(j′)xi(j)xi¯¯¯¯¯(j)xi¯¯¯¯¯xij′ϕi′j
- "Couper" les sommets . Coloriez-les avec des couleurs distinctes différentes de celles ci-dessus.s=s0,s1,…,sn,sn+1,…sn+k=t
Les bords comprennent:
- si−1vi(1) , , ;vi(j)vi(j+1)vi(ki)si
- si−1v¯i(1) , , ;v¯i(j)v¯i(j+1)v¯i(ki)si
- et , .sn+i′−1wi′(j′)wi′(j′)sn+i′
Par exemple, à partir du 3CNF
le graphique suivant est construit (les directions des bords sont de gauche à droite).
(x1∨x2∨x3¯¯¯¯¯)∧(x1∨x2¯¯¯¯¯∨x3)
Maintenant , il est difficile de ne pas voir que le 3CNF d' origine est satisfiable si et seulement s'il y a un - chemin avec les couleurs des sommets différents dans .stG
(Soit dit en passant, c'est un sous-produit que l’existence de chemin - avec différentes couleurs de sommets dans le DAG coloré est . Je n’ai pas trouvé beaucoup de littératures sur ce problème dans une perspective de calcul. Si vous savez, veuillez commenter!)stNP-hard
Alors, quelle est la relation entre le problème de et OP? Intuitivement, ce que nous allons faire est de concevoir une matrice , de sorte que chaque couleur soit mappée sur une ligne (qui est une personne) et que les bords soient mappés sur des colonnes consécutives (intervalles de temps). Par conséquent, une planification maximale, qui va essentiellement de gauche à droite dans la matrice, correspond à un chemin - .Ghst
Notre matrice a colonnes, avec des indices à partir de . Dans le Constrcution suivant un sont deux valeurs satisfont . Les rapports peuvent être de grandes puissances de et . Soit .h2n+1+∑i2ki+k0XY1≪X≪YX/1,Y/XknKi=2i+2∑ij=1ki
- Pour chaque , , soit (si la coordonnée existe, idem ci-dessous).si0≤i≤nh(si,Ki)=h(si,Ki−ki−1)=h(si,Ki+ki+1+1)=Y
- Pour chaque , soit ; Pour chaque , laissez .xi(j)h(xi(j),Ki−1+j)=Xxi¯¯¯¯¯(j)h(xi¯¯¯¯¯(j),Ki−1+ki+1+j)=X
- Pour chaque , et un littéral dans la clause , soit .ϕi′1≤i′≤kxϕi′h(x,Kn+i′)=1
- Toutes les autres entrées sont 0.
Par exemple, pour l'exemple de graphique ci-dessus, la matrice correspondante est
Maintenant, nous affirmons: le 3CNF d'origine est satisfiable si et seulement si la valeur maximale est .(2n+1)Y+∑ikiX+k
Considérez la planification atteignant la valeur maximale. Puisqu'il y a exactement colonnes dans contenant , elles doivent toutes être couvertes. Pour la colonne qui a deux choix de , supposons que l'ordonnancement l'affecte à . Puisque la colonne doit être affectée à , par suite, nous devons perdre les colonnes à . Les mêmes choses se produisent si l'ordonnancement affecte la colonne à .(2n+1)hYKi+ki+1YsiKisiKi+1Ki+kiKi+ki+1si+1
Par conséquent, pour avoir la valeur , nous devons sélectionner tous les autres disponibles dans la matrice, ce qui correspond à une affectation sur des variables. Ainsi, la valeur de repos de est réalisable si et seulement si l'affectation satisfait à chaque clause.∑ikiXXk
En conclusion, décider de la valeur maximale d'une planification légale se trouve dans . C'est peut-être pour cela que toutes nos tentatives précédentes pour trouver un algorithme ont échoué.NP-hard
Cette solution a des problèmes et sera supprimée bientôt; voir le commentaire de templatetypedef.
Vous pouvez résoudre ce problème en temps polynomial en utilisant un flux à coût minimum . Dans ce qui suit, tous les bords ont une capacité unitaire.
Un flux à coût minimum dans ce réseau aura un coût total égal au négatif du meilleur profit possible. (Ce coût sera négatif, mais ce n'est pas un problème.) Il existe une solution intégrale optimale dans laquelle chaque personne a un seul bord quittant avec un flux de 1 et un seul bord arrivant à avec un flux de 1, et tous les autres bords incidents sur ou ont un flux de 0. Que ces bords d'écoulement 1 pour personne deviendrais et : alors , puisque les seuls chemins entre -vertices sont ceux qui augmentent l'indice. Sii si ti si ti i sivj vkti k≥j v k=j , alors la personne se voit attribuer aucun créneau horaire; sinon, la personne se voit allouer le bloc d'intervalles de temps .i i j+1,…,k
Intuitivement, chaque personne "obtient" 1 unité de flux de et choisit une heure de début (bord) et une heure de fin (bord); ces bords de début et de fin sont les seuls bords à coût différent de zéro dans le réseau, et nous pouvons représenter la valeur d'un bloc comme la différence de deux sommes de préfixe. Les capacités unitaires sur les bords entre les vertices empêchent 2 personnes d'utiliser le même créneau horaire.s j+1,…,k v
Fait intéressant, cette formulation fonctionnera même si les valeurs peuvent être négatives.h(i,j)
la source