Dimostrando che la diagnosi del grafico diretto è NP-difficile


11

Ho un compito a casa contro il quale mi sto scontrando da un po 'di tempo, e apprezzerei qualsiasi suggerimento. Si tratta di scegliere un problema noto, la cui completezza NP è dimostrata, e di costruire una riduzione da quel problema al seguente problema che chiamerò DGD (diagnosi diretta del grafico).

Problema

Un esempio di DGD consiste di vertici V = I . ∪ O . ∪ B , bordi diretti E e un intero positivo k . Ci sono tre tipi di vertici: vertici con soli archi entranti I , vertici con solo bordi uscita O e vertici sia in entrata e in uscita bordi B . Lasciate inoltre D = O × io .(V,E,k)V=I∪.O∪.BEkIOBD=O×I

Ora, il problema è se possiamo coprire tutti i nodi con al massimo elementi di D , cioèkD

∃S⊆D,|S|≤k. ∀v∈V. ∃(v1,v2)∈S. v1→∗v→∗v2

dove significa che esiste un percorso diretto da a a b .a→∗bab


Penso che il problema di Dominating Set sia quello da cui dovrei ridurre, perché anche questo è preoccupato di coprire un sottoinsieme di nodi con un altro sottoinsieme. Ho provato a creare un'istanza DGD creando prima due nodi per ciascun elemento dell'insieme dominante, copiando tutti i bordi e quindi impostando la dell'istanza DGD uguale a quella dell'istanza DS.k

Supponiamo una semplice istanza DS con nodi , 2 e 3 e bordi ( 1 , 2 ) e ( 1 , 3 ) . Questa è un'istanza yes con k = 1 ; l'insieme dominante in questo caso è costituito solo dal nodo 1 . Riducendo con il metodo appena descritto, ciò porterebbe a un'istanza DGD con due percorsi ( 1 → 2 → 1 ′ ) e ( 1 → 3 → 1 ′ )123(1,2)(1,3)k=11(1→2→1′)(1→3→1′); per coprire tutti i nodi, sarebbe sufficiente una sola coppia . Ciò avrebbe funzionato perfettamente, se non fosse per il fatto che l'insieme dominante dell'istanza di DS non può, ovviamente, essere determinato in tempo polinomiale, che è un requisito qui.(1,1′)

Ho scoperto che ci sono molti modi belli di trasformare i bordi e i vertici durante la riduzione, ma il mio problema è in qualche modo esprimere la di DGD in termini di k di DS . Dominare Set sembrava un problema adeguato da ridurre, ma per questo penso che forse dovrei provare a ridurre da un problema che non ha tale k ?kkk


Benvenuto! Ho cercato di chiarire la dichiarazione del problema; è così che intendevi? A proposito, potresti voler scegliere un nome utente più riconoscibile di "user8879". :)
— Raffaello

Sì, grazie, questa è davvero una versione più compatta.
— user8879

Risposte:


9

Ridurre invece da SET-COVER completo di NP .

S1,…,Sm⊆{1,…,n}k∈N(V,E,k′)

  • V={s1,…,sm,o1,…,om,e1,…,en,o}
  • E={(si,oi)∣i=1,…,n}∪{(si,ej)∣j∈Si}∪{(ej,o)∣j=1,…,n}
  • k′=m+k

m(si,oi)oikm(si,o)ej

≤p


{1,2,3,4,5}S={{1,2,3},{2,4},{3,4},{4,5}}

esempio
[ fonte ]


1
Questo è quasi corretto, in quanto I e B sono effettivamente coperti completamente, ma O non lo è. L'istanza set-cover è un'istanza yes per k = 2, ma nell'istanza DGD k = 2 lascia s2 e s3 scoperti. Penso che questo possa probabilmente essere risolto aggiungendo automaticamente un bordo da ciascun nodo in O a o .
— user8879

(si,o)siS

Capito ora: crea un nodo aggiuntivo in B per ciascun nodo in O , quindi collegalo al nodo corrispondente in O e a o . In questo esempio ottieni quattro percorsi extra (s1 -> s1 '-> o, ecc.). Alla fine, dopo aver aumentato k con quattro, dovrebbe essere completo.
— user8879

si
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.