NP completezza prova di un problema spanning tree


23

Sto cercando alcuni suggerimenti in una domanda posta dal mio istruttore.

Quindi ho appena capito che questo problema decisionale è :NP-complete

In un grafico , esiste un albero di spanning in che contiene un set esatto di come foglie. Ho capito che possiamo dimostrare che è riducendo il percorso hamiltoniano a questo problema decisionale.solsolS={X1,X2,...,Xn}NP-complete

Ma il mio istruttore ci ha anche chiesto in classe:

sarebbe anche se invece di "set esatto di ", lo facciamoNP-completeS

"include l'intero insieme di e possibilmente altre foglie" o "sottoinsieme di "SS

Penso che "sottoinsieme di S" sarebbe , ma non posso proprio provarlo, non so quale problema posso ridurlo a questo. Per quanto riguarda "include il set di ..." Penso che possa essere risolto in tempi polinomiali.NP-completeS


Puoi spiegare perché pensi che una versione possa essere risolta in un tempo polinomiale?
Raffaello

@pad: "Il mio istruttore ha chiesto in classe" non è un compito ma un puzzle. Inoltre, vedi questa meta discussione sul tag dei compiti.
Raffaello

Risposte:


13

In breve, le tue ipotesi sono corrette. Ai fini di questa risposta, chiamiamo i tre problemi in questione come segue:

  • Versione uguaglianza: Dato un grafo e un insieme , decidere se ha un albero di copertura tale che l'insieme di foglie è uguale a . Come hai affermato, questo è NP-completo con una riduzione del problema del percorso hamiltoniano.G=(V,E)SVGTTS
  • Versione sottoinsieme: Dato e S come sopra, decidere se G ha un spanning tree T tale che l'insieme delle foglie in T è un sottoinsieme di S .GSGTTS
  • Versione Superset: Dato e S come sopra, decidere se G ha un spanning tree T tale che l'insieme delle foglie in è un superset di .GSGTTS

Per dimostrare che la versione del sottoinsieme è NP-completa, è comunque possibile ridurre il problema del percorso hamitoniano. Prova a modificare la prova della completezza NP della versione di uguaglianza.

Per dimostrare che la versione superset può essere risolta in un tempo polinomiale, prova a trovare una condizione necessaria e sufficiente per l' esistenza di un tale albero T

Entrambe le versioni (così come alcuni altri problemi relativi allo spanning tree) sono studiate in [SK05]. Ma suppongo che sia meglio se provi a risolvere i problemi da solo prima di esaminare le prove nel documento, perché guardare il documento può essere un grande spoiler. Sfortunatamente avevo guardato il documento prima di provare a trovare un algoritmo a tempo polinomiale per la versione superset!


[SK05] Mohammad Sohel Rahman e Mohammad Kaykobad. Complessità di alcuni problemi interessanti sull'estensione degli alberi. Information Processing Letters , 94 (2): 93–97, aprile 2005. [ doi ] [ copia dell'autore ]


È bello vederti qui! Nota che abbiamo anche MathJax qui.
Raffaello

1
Grazie per la guida !! Vorrei leggere questo prima di andare in classe, però, l'ha rovinato oggi ahah. Nel caso in cui qualcuno fosse interessato all'algoritmo polinomiale della versione superset, un altro suggerimento sta costruendo un nuovo grafico con V \ L.
inizializza il

0

Questi suggerimenti non sono bastati a portarmi a una soluzione per il superset del problema S, sebbene i suggerimenti siano utili e corretti. Questo è il mio treno di pensieri che mi ha portato a una soluzione.

Cosa succede se si rimuovono tutti i vertici in S da G, (VS), e quindi si trova un albero spanning T con DFS? Se ci sono vertici ancora non collegati in G, dire v1; cosa dice questo sul ruolo di almeno uno dei vertici in S che è stato rimosso? Che si trova nel percorso di v1 da qualche vertice che si trova attualmente nell'albero di spanning. Pertanto, non può essere una foglia (poiché le foglie non hanno figli). Se non ci sono nodi non collegati, ciò significa che ogni vertice in S può essere una foglia purché abbia un bordo che porta all'albero di spanning. I vertici in S che si connettono solo ad altri vertici in S ovviamente non avranno una connessione con lo spanning tree e violerebbero la condizione. Quindi, ci sono due casi da verificare:

  1. Se tutti i nodi non in S sono collegati dopo aver rimosso S da G e aver trovato uno spanning tree
  2. Se ogni nodo in S può essere collegato direttamente all'albero di spanning.
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.