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

SD,|S|k. vV. (v1,v2)S. v1vv2

dove significa che esiste un percorso diretto da a a b .abab


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(121)(131); 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}kN(V,E,k)

  • V={s1,,sm,o1,,om,e1,,en,o}
  • E={(si,oi)i=1,,n}{(si,ej)jSi}{(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.